xref: /original-bsd/games/sail/main.c (revision 0842ddeb)
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*/
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