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