| 1 | static char sccsid[] = " okplay.c 4.1 82/05/11 "; |
| 2 | |
| 3 | main(argc, argv) |
| 4 | int argc; char *argv[]; |
| 5 | { |
| 6 | argv[argc] = 0; |
| 7 | okplay(); |
| 8 | if (argc == 1) |
| 9 | advmotd(); |
| 10 | execv("/usr/games/lib/adventure", argv); |
| 11 | write(2, "No adventure just now\n", 22); |
| 12 | exit(1); |
| 13 | } |
| 14 | |
| 15 | okplay() |
| 16 | { |
| 17 | int tvec[2]; |
| 18 | register struct local { |
| 19 | int seconds,minutes,hours,daymo,month,year,daywk,dayyr,dst; |
| 20 | } *local; |
| 21 | |
| 22 | return; |
| 23 | time(tvec); |
| 24 | local = localtime(tvec); |
| 25 | local->month++; |
| 26 | if (local->daywk == 6||local->daywk == 0) |
| 27 | return; |
| 28 | if (local->hours>=9&&local->hours<18) |
| 29 | if (!holiday(local->month, local->daymo)) |
| 30 | notinprime(); |
| 31 | } |
| 32 | |
| 33 | holiday(mo,da) |
| 34 | int mo,da; |
| 35 | { |
| 36 | int stbuf[30]; |
| 37 | char *np, *op; |
| 38 | |
| 39 | np = "/usr/games/holiday/XXXX"; |
| 40 | for(op=np;*op;op++); |
| 41 | *--op=(da%10)|'0'; |
| 42 | *--op=(da/10)|'0'; |
| 43 | *--op=(mo%10)|'0'; |
| 44 | *--op=(mo/10)|'0'; |
| 45 | return(stat(np,stbuf) == 0); |
| 46 | } |
| 47 | char notinm[] "No adventure in prime time (M-F 9am-5pm) except on holidays\n"; |
| 48 | |
| 49 | notinprime() |
| 50 | { |
| 51 | write(2, notinm, sizeof notinm); |
| 52 | exit(1); |
| 53 | } |
| 54 | |
| 55 | advmotd() |
| 56 | { |
| 57 | char ch; |
| 58 | int fd; |
| 59 | |
| 60 | fd = open("/usr/games/lib/advmotd", 0); |
| 61 | if (fd < 0) return; |
| 62 | while(read(fd,&ch,1) ==1) write(1,&ch,1); |
| 63 | close(fd); |
| 64 | } |