1: #
2: /* Re-coding of advent in C: privileged operations */
3:
4: static char sccsid[] = " wizard.c 4.1 82/05/11 ";
5:
6: # include "hdr.h"
7:
8: datime(d,t)
9: int *d,*t;
10: { int tvec[2],*tptr;
11: int *localtime();
12: time(tvec);
13: tptr=localtime(tvec);
14: *d=tptr[7]+365*(tptr[5]-77); /* day since 1977 (mod leap) */
15: /* bug: this will overflow in the year 2066 AD */
16: /* it will be attributed to Wm the C's millenial celebration */
17: *t=tptr[2]*60+tptr[1]; /* and minutes since midnite */
18: } /* pretty painless */
19:
20:
21: char *magic;
22:
23: poof()
24: { magic="dwarf";
25: latncy=45;
26: }
27:
28: start(n)
29: { int d,t,delay;
30: datime(&d,&t);
31: delay=(d-saved)*1440+(t-savet); /* good for about a month */
32: if (delay>=latncy || setup >= 0)
33: { saved= -1;
34: return(FALSE);
35: }
36: printf("This adventure was suspended a mere %d minutes ago.",delay);
37: if (delay<=latncy/3)
38: { mspeak(2);
39: exit(0);
40: }
41: mspeak(8);
42: if (!wizard())
43: { mspeak(9);
44: exit(0);
45: }
46: saved = -1;
47: return(FALSE);
48: }
49:
50: wizard() /* not as complex as advent/10 (for now) */
51: { register int wiz;
52: char *word,*x;
53: if (!yesm(16,0,7)) return(FALSE);
54: mspeak(17);
55: getin(&word,&x);
56: if (!weq(word,magic))
57: { mspeak(20);
58: return(FALSE);
59: }
60: mspeak(19);
61: return(TRUE);
62: }
63:
64: ciao(cmdfile)
65: char *cmdfile;
66: { register char *c;
67: register int outfd, size;
68: char fname[80], buf[512];
69: extern unsigned filesize;
70:
71: lseek(datfd,(long)filesize,0);
72: for (;;)
73: { printf("What would you like to call the saved version?\n");
74: for (c=fname;; c++)
75: if ((*c=getchar())=='\n') break;
76: *c=0;
77: if (save(cmdfile,fname)>=0) break;
78: printf("I can't use that one.\n");
79: return;
80: }
81: outfd=open(fname,1);
82: lseek(outfd,0L,2); /* end of executable file */
83: while ((size=read(datfd,buf,512))>0)
84: write(outfd,buf,size); /* copy the message data */
85: printf(" ^\n");
86: printf("That should do it. Gis revido.\n");
87: exit(0);
88: }
89:
90:
91: ran(range) /* uses unix rng */
92: int range; /* can't div by 32768 because */
93: {
94: long rand(), i;
95: i = rand() % range;
96: return(i);
97: }
Defined functions
ciao
defined in line
64; used 1 times
datime
defined in line
8; used 2 times
poof
defined in line
23; used 1 times
ran
defined in line
91; used 5 times
start
defined in line
28; used 2 times
Defined variables
magic
defined in line
21; used 2 times
sccsid
defined in line
4;
never used