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