Bell 32V development
[unix-history] / usr / src / cmd / learn / mem.c
CommitLineData
bbddffb1
TL
1# include "stdio.h"
2# include "lrnref"
3# define SAME 0
4
5struct 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
42int *action(s)
43char *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
54struct whichdid {
55 char *w_less;
56 int w_seq;
57} which[NW];
58int nwh = 0;
59char whbuff[NWCH];
60char *whcp = whbuff;
61
62setdid(lesson, sequence)
63char *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
86already(lesson, sequence)
87char *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}