Annotation of researchv10no/cmd/weather/wdtr.c, revision 1.1.1.1

1.1       root        1: # include "stdio.h"
                      2: # include "ctype.h"
                      3: # include "assert.h"
                      4: main(argc,argv)
                      5:        char *argv[];
                      6: {
                      7: char line[100], *s, *p, *r;
                      8: int ck;
                      9: assert(argc>1);
                     10: rdict(argv[1]);
                     11: while (gets(line))
                     12:        {
                     13:        s=line;
                     14:        while (*s)
                     15:                {
                     16:                while (*s && !isalpha(*s))
                     17:                        putc(*s++, stdout);
                     18:                p=s;
                     19:                while (isalpha(*s))
                     20:                        s++;
                     21:                ck = *s;
                     22:                *s = 0;
                     23:                r = lkup(p);
                     24:                printf("%s", r ? r: p);
                     25:                if (ck)
                     26:                        {
                     27:                        printf("%c", ck);
                     28:                        s++;
                     29:                        }
                     30:                }
                     31:        printf("\n");
                     32:        }
                     33: }
                     34: static char * wold[500], * wnew[500];
                     35: static char wspace[5000], *wp=wspace;
                     36: int k=0;
                     37: rdict (fname)
                     38:        char *fname;
                     39: {
                     40: FILE *f;
                     41: char line[100],*s;
                     42: f = fopen(fname, "r");
                     43: assert(f!=NULL);
                     44: while (fgets(line, 100, f))
                     45:        {
                     46:        trimnl(line);
                     47:        s = index(line, ' ');
                     48:        *s++ = 0;
                     49:        wold[k] = wp;
                     50:        strcpy(wp, line);
                     51:        wp += strlen(line)+1;
                     52:        wnew[k]= wp;
                     53:        strcpy(wp, s);
                     54:        wp += strlen(s)+1;
                     55:        k++;
                     56:        assert(k<=500);
                     57:        assert(wp<=wspace+5000);
                     58:        }
                     59: }
                     60: trimnl(s)
                     61:        char *s;
                     62: {
                     63: while (*s) s++;
                     64: if (*--s=='\n') *s=0;
                     65: }
                     66: lkup(s)
                     67:        char *s;
                     68: {
                     69: int i;
                     70: for (i=0; i<k; i++)
                     71:        if (strcmp(wold[i], s) ==0)
                     72:                return(wnew[i]);
                     73: return(NULL);
                     74: }

unix.superglobalmegacorp.com

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