| 1 | #include <stdio.h> |
| 2 | /* |
| 3 | * Dungeon - open UP dungeon |
| 4 | */ |
| 5 | |
| 6 | #ifdef CHECKUID |
| 7 | int 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 | |
| 34 | main() |
| 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 | } |
| 98 | error(s) |
| 99 | char *s; |
| 100 | { |
| 101 | printf("%s", s); |
| 102 | exit(1); |
| 103 | } |