xref: /csrg-svn/games/sail/main.c (revision 18670)
118255Sedward #ifndef lint
2*18670Sedward static	char *sccsid = "@(#)main.c	2.2 85/04/22";
318255Sedward #endif
418255Sedward 
518255Sedward #include "externs.h"
618255Sedward 
718255Sedward /*ARGSUSED*/
818255Sedward main(argc, argv)
918255Sedward 	int argc;
1018255Sedward 	register char **argv;
1118255Sedward {
1218255Sedward 	register char *p;
1318255Sedward 	int i;
1418255Sedward 	extern char _sobuf[];
1518255Sedward 
1618255Sedward 	setbuf(stdout, _sobuf);
1718255Sedward 	(void) srand(getpid());
1818255Sedward 	issetuid = getuid() != geteuid();
1918255Sedward 	if (p = rindex(*argv, '/'))
2018255Sedward 		p++;
2118255Sedward 	else
2218255Sedward 		p = *argv;
2318255Sedward 	if (strcmp(p, "driver") == 0 || strcmp(p, "saildriver") == 0)
2418255Sedward 		mode = MODE_DRIVER;
2518255Sedward 	else if (strcmp(p, "sail.log") == 0)
2618255Sedward 		mode = MODE_LOGGER;
2718255Sedward 	else
2818255Sedward 		mode = MODE_PLAYER;
2918255Sedward 	while ((p = *++argv) && *p == '-')
3018255Sedward 		switch (p[1]) {
3118255Sedward 		case 'd':
3218255Sedward 			mode = MODE_DRIVER;
3318255Sedward 			break;
3418255Sedward 		case 's':
3518255Sedward 			mode = MODE_LOGGER;
3618255Sedward 			break;
3718255Sedward 		case 'D':
3818255Sedward 			debug++;
3918255Sedward 			break;
4018255Sedward 		case 'x':
4118255Sedward 			randomize;
4218255Sedward 			break;
4318255Sedward 		case 'l':
4418255Sedward 			longfmt++;
4518255Sedward 			break;
46*18670Sedward 		case 'b':
47*18670Sedward 			nobells++;
48*18670Sedward 			break;
4918255Sedward 		default:
5018255Sedward 			fprintf(stderr, "SAIL: Unknown flag %s.\n", p);
5118255Sedward 			exit(1);
5218255Sedward 		}
5318255Sedward 	if (*argv)
5418255Sedward 		game = atoi(*argv);
5518255Sedward 	else
5618255Sedward 		game = -1;
5718255Sedward 	if (i = setjmp(restart))
5818255Sedward 		mode = i;
5918255Sedward 	switch (mode) {
6018255Sedward 	case MODE_PLAYER:
6118255Sedward 		return pl_main();
6218255Sedward 	case MODE_DRIVER:
6318255Sedward 		return dr_main();
6418255Sedward 	case MODE_LOGGER:
6518255Sedward 		return lo_main();
6618255Sedward 	default:
6718255Sedward 		fprintf(stderr, "SAIL: Unknown mode %d.\n", mode);
6818255Sedward 		abort();
6918255Sedward 	}
7018255Sedward 	/*NOTREACHED*/
7118255Sedward }
72