select kludge
[unix-history] / usr / src / games / sail / main.c
CommitLineData
e951eec3
EW
1#ifndef lint
2static char *sccsid = "@(#)main.c 2.1 85/03/04";
3#endif
4
5#include "externs.h"
6
7/*ARGSUSED*/
8main(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}