118710Sedward /* 221237Sdist * Copyright (c) 1983 Regents of the University of California. 3*33694Sbostic * All rights reserved. 4*33694Sbostic * 5*33694Sbostic * Redistribution and use in source and binary forms are permitted 6*33694Sbostic * provided that this notice is preserved and that due credit is given 7*33694Sbostic * to the University of California at Berkeley. The name of the University 8*33694Sbostic * may not be used to endorse or promote products derived from this 9*33694Sbostic * software without specific prior written permission. This software 10*33694Sbostic * is provided ``as is'' without express or implied warranty. 1118710Sedward */ 1218710Sedward 1318255Sedward #ifndef lint 1421237Sdist char copyright[] = 15*33694Sbostic "@(#) Copyright (c) 1983 Regents of the University of California.\n\ 1621237Sdist All rights reserved.\n"; 17*33694Sbostic #endif /* not lint */ 1818255Sedward 1921237Sdist #ifndef lint 20*33694Sbostic static char sccsid[] = "@(#)main.c 5.2 (Berkeley) 03/09/88"; 21*33694Sbostic #endif /* not lint */ 2221237Sdist 2318255Sedward #include "externs.h" 2418255Sedward 2518255Sedward /*ARGSUSED*/ 2618255Sedward main(argc, argv) 2718255Sedward int argc; 2818255Sedward register char **argv; 2918255Sedward { 3018255Sedward register char *p; 3118255Sedward int i; 3218255Sedward extern char _sobuf[]; 3318255Sedward 3418255Sedward setbuf(stdout, _sobuf); 3518255Sedward (void) srand(getpid()); 3618255Sedward issetuid = getuid() != geteuid(); 3718255Sedward if (p = rindex(*argv, '/')) 3818255Sedward p++; 3918255Sedward else 4018255Sedward p = *argv; 4118255Sedward if (strcmp(p, "driver") == 0 || strcmp(p, "saildriver") == 0) 4218255Sedward mode = MODE_DRIVER; 4318255Sedward else if (strcmp(p, "sail.log") == 0) 4418255Sedward mode = MODE_LOGGER; 4518255Sedward else 4618255Sedward mode = MODE_PLAYER; 4718255Sedward while ((p = *++argv) && *p == '-') 4818255Sedward switch (p[1]) { 4918255Sedward case 'd': 5018255Sedward mode = MODE_DRIVER; 5118255Sedward break; 5218255Sedward case 's': 5318255Sedward mode = MODE_LOGGER; 5418255Sedward break; 5518255Sedward case 'D': 5618255Sedward debug++; 5718255Sedward break; 5818255Sedward case 'x': 5918255Sedward randomize; 6018255Sedward break; 6118255Sedward case 'l': 6218255Sedward longfmt++; 6318255Sedward break; 6418670Sedward case 'b': 6518670Sedward nobells++; 6618670Sedward break; 6718255Sedward default: 6818255Sedward fprintf(stderr, "SAIL: Unknown flag %s.\n", p); 6918255Sedward exit(1); 7018255Sedward } 7118255Sedward if (*argv) 7218255Sedward game = atoi(*argv); 7318255Sedward else 7418255Sedward game = -1; 7518255Sedward if (i = setjmp(restart)) 7618255Sedward mode = i; 7718255Sedward switch (mode) { 7818255Sedward case MODE_PLAYER: 7918255Sedward return pl_main(); 8018255Sedward case MODE_DRIVER: 8118255Sedward return dr_main(); 8218255Sedward case MODE_LOGGER: 8318255Sedward return lo_main(); 8418255Sedward default: 8518255Sedward fprintf(stderr, "SAIL: Unknown mode %d.\n", mode); 8618255Sedward abort(); 8718255Sedward } 8818255Sedward /*NOTREACHED*/ 8918255Sedward } 90