BSD 4 development
[unix-history] / usr / src / games / zork.c
#include <stdio.h>
/*
* Dungeon - open UP dungeon
*/
#ifdef CHECKUID
int users[] = {
522, /* sa */
164, /* Leiby */
229, /* richards */
264, /* marshall */
1099, /* wizard */
425, /* clm */
15, /* mowle */
32, /* ghg */
27, /* qtip (zager) */
530, /* mike */
16, /* bc */
333, /* pdh */
230, /* wa1yyn */
19, /* joe
43, /* bruner */
308, /* gedeon (watch him closely!) */
429, /* mayhew */
743, /* alicia */
367, /* feather */
85, /* clark bar */
382, /* malcolm */
99, /* jones */
636, /* gfg */
0 };
#endif
main()
{
register int *up;
register uid;
int fd3, fd4, fd5;
#ifdef CHECKUID
uid = getuid();
for (up=users; *up; up++)
if (*up == uid)
goto ok;
printf("You are not a Wizard!\n");
exit();
#endif
/*
* open up files needed by program
* look in current directory first, then try default names
* The following files must be as follows:
* "dtext.dat" open read-only on fd 3
* "dindex.dat open read-only on fd 4 (maybe this file isn't used)
* "doverlay" open read-only on fd 5 (put this file on fast disk)
*/
close(3);
close(4);
close(5);
if ((fd3 = open("dtext.dat", 0)) < 0)
if ((fd3 = open("/usr/games/lib/dtext.dat", 0)) < 0)
error("Can't open dtext.dat\n");
if ((fd4 = open("dindex.dat", 0)) < 0)
if ((fd4 = open("/usr/games/lib/dindex.dat", 0)) < 0)
error("Can' open dindex.dat\n");
if ((fd5 = open("doverlay", 0)) < 0)
if ((fd5 = open("/tmp/nedtmp/doverlay", 0)) < 0)
if ((fd5 = open("/usr/games/lib/doverlay", 0)) < 0)
error("Can't open doverlay\n");
if (fd3 != 3 || fd4 != 4 || fd5 != 5)
error("Files opened on wrong descriptors\n");
signal(2,1);
printf("You are in an open field west of a big white house with a boarded\n");
printf("front door.\n");
printf("There is a small mailbox here.\n>");
fflush(stdout);
#ifdef pdp11
execl("dungeon","zork", 0);
execl("/usr/games/lib/dungeon","zork", 0);
#else
if( (uid=open("dungeon", 0)) > 0 ) {
close(uid);
execlp("compat", "zork", "dungeon", 0);
execlp("/usr/games/lib/compat", "zork", "dungeon", 0);
}
execlp("compat", "zork", "/usr/games/lib/dungeon", 0);
execlp("/usr/games/lib/compat", "zork", "/usr/games/lib/dungeon", 0);
#endif
printf("Can't start dungeons.\n");
exit(0);
}
error(s)
char *s;
{
printf("%s", s);
exit(1);
}