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