util.h revision 1.4 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.4 christos int rand(void);
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.3 kamil #define waiting 0
54 1.1 kamil
55 1.1 kamil #ifdef NOTDEF
56 1.1 kamil EXT int len_last_line_got INIT(0);
57 1.1 kamil /* strlen of some_buf after */
58 1.1 kamil /* some_buf = get_a_line(bufptr,buffersize,fp) */
59 1.1 kamil #endif
60 1.1 kamil
61 1.1 kamil #ifdef NOTDEF
62 1.1 kamil /* is the string for makedir a directory name or a filename? */
63 1.1 kamil
64 1.1 kamil #define MD_DIR 0
65 1.1 kamil #define MD_FILE 1
66 1.1 kamil #endif
67 1.1 kamil
68 1.4 christos void util_init(void);
69 1.4 christos void movc3(int, char *, char *);
70 1.4 christos void no_can_do(const char *);
71 1.4 christos int exdis(int);
72 1.4 christos void *safemalloc(size_t size);
73 1.4 christos char *safecpy(char *, const char *, size_t);
74 1.4 christos char *cpytill(char *, const char *, int);
75 1.4 christos char *instr(const char *, const char *);
76 1.1 kamil #ifdef SETUIDGID
77 1.4 christos int eaccess(const char *, mode_t);
78 1.1 kamil #endif
79 1.4 christos void prexit(const char *);
80 1.4 christos char *savestr(const char *);
81 1.4 christos char *getval(const char *, const char *);
82