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