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