Commit | Line | Data |
---|---|---|
fd1a6882 KM |
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 | } |