|
|
1.1 root 1:
2: static char sccsid[] = " zork.c 4.1 82/10/24 ";
3:
4: #include <stdio.h>
5: /*
6: * Dungeon - open UP dungeon
7: */
8:
9: #ifdef CHECKUID
10: int users[] = {
11: 522, /* sa */
12: 164, /* Leiby */
13: 229, /* richards */
14: 264, /* marshall */
15: 1099, /* wizard */
16: 425, /* clm */
17: 15, /* mowle */
18: 32, /* ghg */
19: 27, /* qtip (zager) */
20: 530, /* mike */
21: 16, /* bc */
22: 333, /* pdh */
23: 230, /* wa1yyn */
24: 19, /* joe
25: 43, /* bruner */
26: 308, /* gedeon (watch him closely!) */
27: 429, /* mayhew */
28: 743, /* alicia */
29: 367, /* feather */
30: 85, /* clark bar */
31: 382, /* malcolm */
32: 99, /* jones */
33: 636, /* gfg */
34: 0 };
35: #endif
36:
37: main()
38: {
39:
40: register int *up;
41: register uid;
42: int fd3, fd4, fd5;
43:
44: #ifdef CHECKUID
45:
46: uid = getuid();
47: for (up=users; *up; up++)
48: if (*up == uid)
49: goto ok;
50: printf("You are not a Wizard!\n");
51: exit();
52: #endif
53: /*
54: * open up files needed by program
55: * look in current directory first, then try default names
56: * The following files must be as follows:
57: * "dtext.dat" open read-only on fd 3
58: * "dindex.dat open read-only on fd 4 (maybe this file isn't used)
59: * "doverlay" open read-only on fd 5 (put this file on fast disk)
60: */
61: close(3);
62: close(4);
63: close(5);
64: if ((fd3 = open("dtext.dat", 0)) < 0)
65: if ((fd3 = open("/usr/games/lib/dtext.dat", 0)) < 0)
66: error("Can't open dtext.dat\n");
67:
68: if ((fd4 = open("dindex.dat", 0)) < 0)
69: if ((fd4 = open("/usr/games/lib/dindex.dat", 0)) < 0)
70: error("Can' open dindex.dat\n");
71:
72: if ((fd5 = open("doverlay", 0)) < 0)
73: if ((fd5 = open("/tmp/nedtmp/doverlay", 0)) < 0)
74: if ((fd5 = open("/usr/games/lib/doverlay", 0)) < 0)
75: error("Can't open doverlay\n");
76:
77: if (fd3 != 3 || fd4 != 4 || fd5 != 5)
78: error("Files opened on wrong descriptors\n");
79:
80: signal(2,1);
81:
82: printf("You are in an open field west of a big white house with a boarded\n");
83: printf("front door.\n");
84: printf("There is a small mailbox here.\n>");
85: fflush(stdout);
86: #ifdef pdp11
87: execl("dungeon","zork", 0);
88: execl("/usr/games/lib/dungeon","zork", 0);
89: #else
90: if( (uid=open("dungeon", 0)) > 0 ) {
91: close(uid);
92: execlp("compat", "zork", "dungeon", 0);
93: execlp("/usr/games/lib/compat", "zork", "dungeon", 0);
94: }
95: execlp("compat", "zork", "/usr/games/lib/dungeon", 0);
96: execlp("/usr/games/lib/compat", "zork", "/usr/games/lib/dungeon", 0);
97: #endif
98: printf("Can't start dungeons.\n");
99: exit(0);
100: }
101: error(s)
102: char *s;
103: {
104: printf("%s", s);
105: exit(1);
106: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.