X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;ds=sidebyside;f=misc.c;h=7057bad5272b10ec44239d7ff848008e0564d3c8;hb=6146406990839864bfc5074327f44f207d3b61c2;hp=e025c78807f585d76a2db794d2c9cb79a970344e;hpb=c703bd78d9db22fbaef43efb798e2ae2e2cd0d9e;p=open-adventure.git diff --git a/misc.c b/misc.c index e025c78..7057bad 100644 --- a/misc.c +++ b/misc.c @@ -724,7 +724,7 @@ L2: ATDWRF=I; -/* Utility routines (SETBIT, TSTBIT, set_seed, get_next_lcg_value, randrange, RNDVOC, BUG) */ +/* Utility routines (SETBIT, TSTBIT, set_seed_from_time, get_next_lcg_value, randrange, RNDVOC, BUG) */ #undef SETBIT long fSETBIT(long BIT) { @@ -759,10 +759,11 @@ long TSTBIT; #define TSTBIT(MASK,BIT) fTSTBIT(MASK,BIT) -void set_seed(long seedval) +void set_seed_from_time(void) { - srand(seedval); - lcgstate.x = (unsigned long) rand() % lcgstate.m; + /* Use the current system time to get seed the ISO rand() function, from which we get a seed for the LCG. */ + srand(time(NULL)); + lcgstate.x = (unsigned long) rand() % lcgstate.m; } unsigned long get_next_lcg_value(void) @@ -855,8 +856,8 @@ void fBUG(long NUM) { #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: @@ -887,21 +888,23 @@ void fMAPLIN(FILE *OPENED) { 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)); + 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; } }