-/* Utility routines (SETBIT, TSTBIT, set_seed, get_next_lcg_value, randrange, RNDVOC, BUG) */
+/* Utility routines (SETBIT, TSTBIT, set_seed, get_next_lcg_value,
+ * randrange, RNDVOC, BUG) */
#undef SETBIT
long fSETBIT(long BIT) {
void set_seed(long seedval)
{
- srand(seedval);
- lcgstate.x = (unsigned long) rand() % lcgstate.m;
+ lcgstate.x = (unsigned long) seedval % lcgstate.m;
}
unsigned long get_next_lcg_value(void)
#define BUG(NUM) fBUG(NUM)
#undef MAPLIN
void fMAPLIN(FILE *OPENED) {
- signed char *cp;
-
+long I, VAL;
+
/* Read a line of input, from the specified input source,
* translate the chars to integers in the range 0-126 and store
* them in the common array "INLINE". Integer values are as follows:
if (!oldstyle && SETUP && OPENED == stdin)
fputs("> ", stdout);
do {
- IGNORE(fgets(raw_input,sizeof(INLINE)-1,OPENED));
+ IGNORE(fgets(INLINE+1,sizeof(INLINE)-1,OPENED));
} while
- /* allow comments in logfiles */
- (!feof(OPENED) && raw_input[0] == '#');
+ (!feof(OPENED) && INLINE[1] == '#');
if (feof(OPENED)) {
if (logfp && OPENED == stdin)
fclose(logfp);
} else {
- if (logfp)
- IGNORE(fputs(raw_input, logfp));
+ if (logfp && OPENED == stdin)
+ IGNORE(fputs(INLINE+1, logfp));
else if (!isatty(0))
- IGNORE(fputs(raw_input, stdout));
- for (cp = raw_input; *cp; cp++)
- INLINE[cp - raw_input + 1]=MAP1[*cp + 1];
- LNLENG = (cp - raw_input);
+ IGNORE(fputs(INLINE+1, stdout));
+ LNLENG=0;
+ for (I=1; I<=sizeof(INLINE) && INLINE[I]!=0; I++) {
+ VAL=INLINE[I]+1;
+ INLINE[I]=MAP1[VAL];
+ if(INLINE[I] != 0)LNLENG=I;
+ } /* end loop */
LNPOSN=1;
}
}