118710Sedward /* 2*60846Sbostic * Copyright (c) 1983, 1993 3*60846Sbostic * The Regents of the University of California. All rights reserved. 433694Sbostic * 542604Sbostic * %sccs.include.redist.c% 618710Sedward */ 718710Sedward 818255Sedward #ifndef lint 9*60846Sbostic static char copyright[] = 10*60846Sbostic "@(#) Copyright (c) 1983, 1993\n\ 11*60846Sbostic The Regents of the University of California. All rights reserved.\n"; 1233694Sbostic #endif /* not lint */ 1318255Sedward 1421237Sdist #ifndef lint 15*60846Sbostic static char sccsid[] = "@(#)main.c 8.1 (Berkeley) 05/31/93"; 1633694Sbostic #endif /* not lint */ 1721237Sdist 1818255Sedward #include "externs.h" 1918255Sedward 2018255Sedward /*ARGSUSED*/ 2118255Sedward main(argc, argv) 2218255Sedward int argc; 2318255Sedward register char **argv; 2418255Sedward { 2518255Sedward register char *p; 2618255Sedward int i; 2718255Sedward 2818255Sedward (void) srand(getpid()); 2918255Sedward issetuid = getuid() != geteuid(); 3018255Sedward if (p = rindex(*argv, '/')) 3118255Sedward p++; 3218255Sedward else 3318255Sedward p = *argv; 3418255Sedward if (strcmp(p, "driver") == 0 || strcmp(p, "saildriver") == 0) 3518255Sedward mode = MODE_DRIVER; 3618255Sedward else if (strcmp(p, "sail.log") == 0) 3718255Sedward mode = MODE_LOGGER; 3818255Sedward else 3918255Sedward mode = MODE_PLAYER; 4018255Sedward while ((p = *++argv) && *p == '-') 4118255Sedward switch (p[1]) { 4218255Sedward case 'd': 4318255Sedward mode = MODE_DRIVER; 4418255Sedward break; 4518255Sedward case 's': 4618255Sedward mode = MODE_LOGGER; 4718255Sedward break; 4818255Sedward case 'D': 4918255Sedward debug++; 5018255Sedward break; 5118255Sedward case 'x': 5218255Sedward randomize; 5318255Sedward break; 5418255Sedward case 'l': 5518255Sedward longfmt++; 5618255Sedward break; 5718670Sedward case 'b': 5818670Sedward nobells++; 5918670Sedward break; 6018255Sedward default: 6118255Sedward fprintf(stderr, "SAIL: Unknown flag %s.\n", p); 6218255Sedward exit(1); 6318255Sedward } 6418255Sedward if (*argv) 6518255Sedward game = atoi(*argv); 6618255Sedward else 6718255Sedward game = -1; 6818255Sedward if (i = setjmp(restart)) 6918255Sedward mode = i; 7018255Sedward switch (mode) { 7118255Sedward case MODE_PLAYER: 7218255Sedward return pl_main(); 7318255Sedward case MODE_DRIVER: 7418255Sedward return dr_main(); 7518255Sedward case MODE_LOGGER: 7618255Sedward return lo_main(); 7718255Sedward default: 7818255Sedward fprintf(stderr, "SAIL: Unknown mode %d.\n", mode); 7918255Sedward abort(); 8018255Sedward } 8118255Sedward /*NOTREACHED*/ 8218255Sedward } 83