|
|
1.1 root 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();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.