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