1*18710Sedward /* 2*18710Sedward * Copyright (c) 1983 Regents of the University of California, 3*18710Sedward * All rights reserved. Redistribution permitted subject to 4*18710Sedward * the terms of the Berkeley Software License Agreement. 5*18710Sedward */ 6*18710Sedward 718255Sedward #ifndef lint 8*18710Sedward static char *sccsid = "@(#)main.c 2.3 85/04/23"; 918255Sedward #endif 1018255Sedward 1118255Sedward #include "externs.h" 1218255Sedward 1318255Sedward /*ARGSUSED*/ 1418255Sedward main(argc, argv) 1518255Sedward int argc; 1618255Sedward register char **argv; 1718255Sedward { 1818255Sedward register char *p; 1918255Sedward int i; 2018255Sedward extern char _sobuf[]; 2118255Sedward 2218255Sedward setbuf(stdout, _sobuf); 2318255Sedward (void) srand(getpid()); 2418255Sedward issetuid = getuid() != geteuid(); 2518255Sedward if (p = rindex(*argv, '/')) 2618255Sedward p++; 2718255Sedward else 2818255Sedward p = *argv; 2918255Sedward if (strcmp(p, "driver") == 0 || strcmp(p, "saildriver") == 0) 3018255Sedward mode = MODE_DRIVER; 3118255Sedward else if (strcmp(p, "sail.log") == 0) 3218255Sedward mode = MODE_LOGGER; 3318255Sedward else 3418255Sedward mode = MODE_PLAYER; 3518255Sedward while ((p = *++argv) && *p == '-') 3618255Sedward switch (p[1]) { 3718255Sedward case 'd': 3818255Sedward mode = MODE_DRIVER; 3918255Sedward break; 4018255Sedward case 's': 4118255Sedward mode = MODE_LOGGER; 4218255Sedward break; 4318255Sedward case 'D': 4418255Sedward debug++; 4518255Sedward break; 4618255Sedward case 'x': 4718255Sedward randomize; 4818255Sedward break; 4918255Sedward case 'l': 5018255Sedward longfmt++; 5118255Sedward break; 5218670Sedward case 'b': 5318670Sedward nobells++; 5418670Sedward break; 5518255Sedward default: 5618255Sedward fprintf(stderr, "SAIL: Unknown flag %s.\n", p); 5718255Sedward exit(1); 5818255Sedward } 5918255Sedward if (*argv) 6018255Sedward game = atoi(*argv); 6118255Sedward else 6218255Sedward game = -1; 6318255Sedward if (i = setjmp(restart)) 6418255Sedward mode = i; 6518255Sedward switch (mode) { 6618255Sedward case MODE_PLAYER: 6718255Sedward return pl_main(); 6818255Sedward case MODE_DRIVER: 6918255Sedward return dr_main(); 7018255Sedward case MODE_LOGGER: 7118255Sedward return lo_main(); 7218255Sedward default: 7318255Sedward fprintf(stderr, "SAIL: Unknown mode %d.\n", mode); 7418255Sedward abort(); 7518255Sedward } 7618255Sedward /*NOTREACHED*/ 7718255Sedward } 78