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