BSD 4 development
[unix-history] / usr / src / games / zork.c
CommitLineData
913f0338
BJ
1#include <stdio.h>
2/*
3 * Dungeon - open UP dungeon
4 */
5
6#ifdef CHECKUID
7int 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
34main()
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}
98error(s)
99char *s;
100{
101 printf("%s", s);
102 exit(1);
103}