date and time created 83/08/05 13:34:44 by sam
[unix-history] / usr / src / old / games.vax / zork / zork.c
CommitLineData
fd1a6882
KM
1
2static 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
10int 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
37main()
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}
101error(s)
102char *s;
103{
104 printf("%s", s);
105 exit(1);
106}