date and time created 82/10/24 18:27:25 by mckusick
authorKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Mon, 25 Oct 1982 10:27:25 +0000 (02:27 -0800)
committerKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Mon, 25 Oct 1982 10:27:25 +0000 (02:27 -0800)
SCCS-vsn: old/games.vax/zork/zork.c 4.1

usr/src/old/games.vax/zork/zork.c [new file with mode: 0644]

diff --git a/usr/src/old/games.vax/zork/zork.c b/usr/src/old/games.vax/zork/zork.c
new file mode 100644 (file)
index 0000000..28e49f0
--- /dev/null
@@ -0,0 +1,106 @@
+
+static char sccsid[] = "       zork.c  4.1     82/10/24        ";
+
+#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);
+}