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