Commit | Line | Data |
---|---|---|
e951eec3 EW |
1 | #ifndef lint |
2 | static char *sccsid = "@(#)main.c 2.1 85/03/04"; | |
3 | #endif | |
4 | ||
5 | #include "externs.h" | |
6 | ||
7 | /*ARGSUSED*/ | |
8 | main(argc, argv) | |
9 | int argc; | |
10 | register char **argv; | |
11 | { | |
12 | register char *p; | |
13 | int i; | |
14 | extern char _sobuf[]; | |
15 | ||
16 | setbuf(stdout, _sobuf); | |
17 | (void) srand(getpid()); | |
18 | issetuid = getuid() != geteuid(); | |
19 | if (p = rindex(*argv, '/')) | |
20 | p++; | |
21 | else | |
22 | p = *argv; | |
23 | if (strcmp(p, "driver") == 0 || strcmp(p, "saildriver") == 0) | |
24 | mode = MODE_DRIVER; | |
25 | else if (strcmp(p, "sail.log") == 0) | |
26 | mode = MODE_LOGGER; | |
27 | else | |
28 | mode = MODE_PLAYER; | |
29 | while ((p = *++argv) && *p == '-') | |
30 | switch (p[1]) { | |
31 | case 'd': | |
32 | mode = MODE_DRIVER; | |
33 | break; | |
34 | case 's': | |
35 | mode = MODE_LOGGER; | |
36 | break; | |
37 | case 'D': | |
38 | debug++; | |
39 | break; | |
40 | case 'x': | |
41 | randomize; | |
42 | break; | |
43 | case 'l': | |
44 | longfmt++; | |
45 | break; | |
46 | default: | |
47 | fprintf(stderr, "SAIL: Unknown flag %s.\n", p); | |
48 | exit(1); | |
49 | } | |
50 | if (*argv) | |
51 | game = atoi(*argv); | |
52 | else | |
53 | game = -1; | |
54 | if (i = setjmp(restart)) | |
55 | mode = i; | |
56 | switch (mode) { | |
57 | case MODE_PLAYER: | |
58 | return pl_main(); | |
59 | case MODE_DRIVER: | |
60 | return dr_main(); | |
61 | case MODE_LOGGER: | |
62 | return lo_main(); | |
63 | default: | |
64 | fprintf(stderr, "SAIL: Unknown mode %d.\n", mode); | |
65 | abort(); | |
66 | } | |
67 | /*NOTREACHED*/ | |
68 | } |