|
|
1.1 ! root 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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.