|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1983 Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * Redistribution and use in source and binary forms are permitted ! 6: * provided that: (1) source distributions retain this entire copyright ! 7: * notice and comment, and (2) distributions including binaries display ! 8: * the following acknowledgement: ``This product includes software ! 9: * developed by the University of California, Berkeley and its contributors'' ! 10: * in the documentation or other materials provided with the distribution ! 11: * and in all advertising materials mentioning features or use of this ! 12: * software. Neither the name of the University nor the names of its ! 13: * contributors may be used to endorse or promote products derived ! 14: * from this software without specific prior written permission. ! 15: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ! 16: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! 17: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 18: */ ! 19: ! 20: #ifndef lint ! 21: static char sccsid[] = "@(#)dr_main.c 5.5 (Berkeley) 6/1/90"; ! 22: #endif /* not lint */ ! 23: ! 24: #include "driver.h" ! 25: ! 26: dr_main() ! 27: { ! 28: register int n; ! 29: register struct ship *sp; ! 30: int nat[NNATION]; ! 31: int value = 0; ! 32: ! 33: (void) signal(SIGINT, SIG_IGN); ! 34: (void) signal(SIGQUIT, SIG_IGN); ! 35: (void) signal(SIGTSTP, SIG_IGN); ! 36: if (issetuid) ! 37: (void) setruid(geteuid()); ! 38: if (game < 0 || game >= NSCENE) { ! 39: fprintf(stderr, "DRIVER: Bad game number %d\n", game); ! 40: exit(1); ! 41: } ! 42: cc = &scene[game]; ! 43: ls = SHIP(cc->vessels); ! 44: if (sync_open() < 0) { ! 45: perror("driver: syncfile"); ! 46: exit(1); ! 47: } ! 48: for (n = 0; n < NNATION; n++) ! 49: nat[n] = 0; ! 50: foreachship(sp) { ! 51: if (sp->file == NULL && ! 52: (sp->file = (struct File *)calloc(1, sizeof (struct File))) == NULL) { ! 53: (void) fprintf(stderr, "DRIVER: Out of memory.\n"); ! 54: exit(1); ! 55: } ! 56: sp->file->index = sp - SHIP(0); ! 57: sp->file->loadL = L_ROUND; ! 58: sp->file->loadR = L_ROUND; ! 59: sp->file->readyR = R_LOADED|R_INITIAL; ! 60: sp->file->readyL = R_LOADED|R_INITIAL; ! 61: sp->file->stern = nat[sp->nationality]++; ! 62: sp->file->dir = sp->shipdir; ! 63: sp->file->row = sp->shiprow; ! 64: sp->file->col = sp->shipcol; ! 65: } ! 66: windspeed = cc->windspeed; ! 67: winddir = cc->winddir; ! 68: people = 0; ! 69: for (;;) { ! 70: sleep(7); ! 71: if (Sync() < 0) { ! 72: value = 1; ! 73: break; ! 74: } ! 75: if (next() < 0) ! 76: break; ! 77: unfoul(); ! 78: checkup(); ! 79: prizecheck(); ! 80: moveall(); ! 81: thinkofgrapples(); ! 82: boardcomp(); ! 83: compcombat(); ! 84: resolve(); ! 85: reload(); ! 86: checksails(); ! 87: if (Sync() < 0) { ! 88: value = 1; ! 89: break; ! 90: } ! 91: } ! 92: sync_close(1); ! 93: return value; ! 94: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.