Annotation of researchv10no/cmd/refer/hunt3.c, revision 1.1.1.1

1.1       root        1: # include "refer..c"
                      2: getq(v)
                      3:        char *v[];
                      4: {
                      5: # define BSIZ 250
                      6: static char buff[BSIZ];
                      7: static int eof = 0;
                      8: extern char *sinput;
                      9: char *p;
                     10: int c, n = 0, las = 0;
                     11: if (eof) return(-1);
                     12: p = buff;
                     13: while ( (c = (sinput ? *sinput++ : getchar()) ) > 0)
                     14:        {
                     15:        if (c== '\n')
                     16:                break;
                     17:        if (isalpha(c) || isdigit(c))
                     18:                {
                     19:                if (las==0)
                     20:                        {
                     21:                        v[n++] = p;
                     22:                        las=1;
                     23:                        }
                     24:                if (las++ <= 6)
                     25:                        *p++ = c;
                     26:                }
                     27:        else
                     28:                {
                     29:                if (las>0)
                     30:                        *p++ = 0;
                     31:                las=0;
                     32:                }
                     33:        }
                     34: *p=0;
                     35: assert(p<buff+BSIZ);
                     36: if (sinput==0 && c<= 0) eof=1;
                     37: n = keycomp(v,n);
                     38: # if D1
                     39: fprintf(stderr, "no. keys %d\n",n);
                     40: for(c=0; c<n; c++)
                     41:  fprintf(stderr, "keys X%sX\n", v[c]);
                     42: # endif
                     43: return(n);
                     44: }
                     45: keycomp(v,n) /* compress keys */
                     46:        char *v[];
                     47: {
                     48: int i, j, k;
                     49: for(i=j=0; i<n; i++)
                     50:        {
                     51:        for(k=0; k<j; k++)
                     52:                if (strcmp(v[i], v[k])==0)
                     53:                        break;
                     54:        if (k<j) /* found it */
                     55:                continue;
                     56:        v[j++] = v[i];
                     57:        }
                     58: return(j);
                     59: }

unix.superglobalmegacorp.com

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