1 1.2 kamil /* Header: util.h,v 7.0 86/10/08 15:14:37 lwall Exp */ 2 1.1 kamil 3 1.2 kamil /* Log: util.h,v 4 1.1 kamil * Revision 7.0 86/10/08 15:14:37 lwall 5 1.1 kamil * Split into separate files. Added amoebas and pirates. 6 1.1 kamil * 7 1.1 kamil */ 8 1.1 kamil 9 1.1 kamil #if RANDBITS < 15 || defined(lint) 10 1.1 kamil #define rand_mod(m) getpid() 11 1.1 kamil #define RANDRAND 0.0 12 1.1 kamil #define HALFRAND 0 13 1.1 kamil #define myrand() getpid() 14 1.1 kamil #else 15 1.1 kamil #if RANDBITS == 15 /* 15 bits of rand()? */ 16 1.1 kamil #define RANDRAND 268435456.0 /* that's 2**28 */ 17 1.1 kamil #define HALFRAND 0x4000 /* that's 2**14 */ 18 1.1 kamil int rand(); 19 1.1 kamil #define myrand() (rand()&32767) 20 1.1 kamil #define rand_mod(m) ((int)((double)myrand() / 32768.0 * ((double)(m)))) 21 1.1 kamil /* pick number in 0..m-1 */ 22 1.1 kamil 23 1.1 kamil #else 24 1.1 kamil 25 1.1 kamil #if RANDBITS < 31 /* 16 bits of rand()? */ 26 1.1 kamil #define RANDRAND 1073741824.0 /* that's 2**30 */ 27 1.1 kamil #define HALFRAND 0x8000 /* that's 2**15 */ 28 1.1 kamil unsigned rand(); 29 1.1 kamil #define myrand() (rand()&65535) 30 1.1 kamil #define rand_mod(m) ((int)((double)myrand() / 65536.0 * ((double)(m)))) 31 1.1 kamil /* pick number in 0..m-1 */ 32 1.1 kamil 33 1.1 kamil #else /* assume 31 bits */ 34 1.1 kamil #define RANDRAND 1152921504606846976.0 /* that's 2**60 */ 35 1.1 kamil #define HALFRAND 0x40000000 /* that's 2**30 */ 36 1.1 kamil long rand(); 37 1.1 kamil #define myrand() rand() 38 1.1 kamil #define rand_mod(m) ((myrand() / 37) % (m)) /* pick number in 0..m-1 */ 39 1.1 kamil /* 40 1.1 kamil * The reason for the /37 above is that our random number generator yields 41 1.1 kamil * successive evens and odds, for some reason. This makes strange star maps. 42 1.1 kamil */ 43 1.1 kamil #endif 44 1.1 kamil #endif 45 1.1 kamil #endif 46 1.1 kamil 47 1.1 kamil 48 1.1 kamil /* we get fractions of seconds from calling ftime on timebuf */ 49 1.1 kamil 50 1.1 kamil EXT struct timeb timebuf; 51 1.1 kamil #define roundsleep(x) (ftime(&timebuf),sleep(timebuf.millitm > 500?x+1:x)) 52 1.1 kamil 53 1.1 kamil void movc3(); 54 1.1 kamil void no_can_do(); 55 1.1 kamil int exdis(); 56 1.1 kamil 57 1.1 kamil EXT bool waiting INIT(FALSE); /* are we waiting for subprocess (in doshell)? */ 58 1.1 kamil 59 1.1 kamil #ifdef NOTDEF 60 1.1 kamil EXT int len_last_line_got INIT(0); 61 1.1 kamil /* strlen of some_buf after */ 62 1.1 kamil /* some_buf = get_a_line(bufptr,buffersize,fp) */ 63 1.1 kamil #endif 64 1.1 kamil 65 1.1 kamil #ifdef NOTDEF 66 1.1 kamil /* is the string for makedir a directory name or a filename? */ 67 1.1 kamil 68 1.1 kamil #define MD_DIR 0 69 1.1 kamil #define MD_FILE 1 70 1.1 kamil #endif 71 1.1 kamil 72 1.1 kamil void util_init(); 73 1.1 kamil char *safemalloc(); 74 1.1 kamil char *safecpy(); 75 1.1 kamil char *cpytill(); 76 1.1 kamil char *instr(); 77 1.1 kamil #ifdef SETUIDGID 78 1.1 kamil int eaccess(); 79 1.1 kamil #endif 80 1.1 kamil char *getwd(); 81 1.1 kamil void cat(); 82 1.1 kamil void prexit(); 83 1.1 kamil char *savestr(); 84 1.1 kamil char *getval(); 85