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