|
|
1.1 root 1: # include "stdio.h"
2: # include "lrnref"
3: # define SAME 0
4:
5: struct keys {
6: char *k_wd;
7: int k_val;
8: } keybuff[] = {
9: {"ready", READY},
10: {"answer", READY},
11: {"#print", PRINT},
12: {"#copyin", COPYIN},
13: {"#uncopyin", UNCOPIN},
14: {"#copyout", COPYOUT},
15: {"#uncopyout", UNCOPOUT},
16: {"#pipe", PIPE},
17: {"#unpipe", UNPIPE},
18: {"#succeed", SUCCEED},
19: {"#fail", FAIL},
20: {"bye", BYE},
21: {"chdir", CHDIR},
22: {"cd", CHDIR},
23: {"learn", LEARN},
24: {"#log", LOG},
25: {"yes", YES},
26: {"no", NO},
27: {"#mv", MV},
28: {"#user", USER},
29: {"#next", NEXT},
30: {"skip", SKIP},
31: {"#where", WHERE},
32: {"#match", MATCH},
33: {"#bad", BAD},
34: {"#create", CREATE},
35: {"#cmp", CMP},
36: {"#goto", GOTO},
37: {"#once", ONCE},
38: {"#", NOP},
39: {NULL, 0}
40: };
41:
42: int *action(s)
43: char *s;
44: {
45: struct keys *kp;
46: for (kp=keybuff; kp->k_wd; kp++)
47: if (strcmp(kp->k_wd, s) == SAME)
48: return(&(kp->k_val));
49: return(NULL);
50: }
51:
52: # define NW 100
53: # define NWCH 800
54: struct whichdid {
55: char *w_less;
56: int w_seq;
57: } which[NW];
58: int nwh = 0;
59: char whbuff[NWCH];
60: char *whcp = whbuff;
61:
62: setdid(lesson, sequence)
63: char *lesson;
64: {
65: struct whichdid *pw;
66: for(pw=which; pw < which+nwh; pw++)
67: if (strcmp(pw->w_less, lesson) == SAME)
68: {
69: pw->w_seq = sequence;
70: return;
71: }
72: pw=which+nwh++;
73: if (nwh >= NW) {
74: fprintf(stderr, "nwh>=NW\n");
75: wrapup(1);
76: }
77: pw->w_seq = sequence;
78: pw->w_less = whcp;
79: while (*whcp++ = *lesson++);
80: if (whcp >= whbuff + NWCH) {
81: fprintf(stderr, "lesson name too long\n");
82: wrapup(1);
83: }
84: }
85:
86: already(lesson, sequence)
87: char *lesson;
88: {
89: struct whichdid *pw;
90: for (pw=which; pw < which+nwh; pw++)
91: if (strcmp(pw->w_less, lesson) == SAME)
92: return(1);
93: return(0);
94: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.