Annotation of researchv10dc/cmd/learn/lib/src/mem.c, revision 1.1.1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.