1: # include "stdio.h"
   2: int nh 500;
   3: int saw[6000];
   4: char *comname "/usr/lib/eign";
   5: 
   6: main (argc,argv)
   7:     char *argv[];
   8: {
   9: 
  10: int i, z;
  11: char *name;
  12: 
  13: FILE *f;
  14: 
  15: while (argc>1 && argv[1][0] == '-')
  16:     {
  17:     switch(argv[1][1])
  18:         {
  19:         case 'h':
  20:             nh = atoi(argv[1]+2); break;
  21:         }
  22:     argc--; argv++;
  23:     }
  24: if (argc<=1)
  25:     dofile(stdin, "");
  26: else
  27: for(i=1; i<argc; i++)
  28:     {
  29:     f = fopen(name=argv[i], "r");
  30:     if (f==NULL)
  31:         err("No file %s",name);
  32:     else
  33:         dofile(f, name);
  34:     }
  35: for(z=i=0; i<nh; i++)
  36:     {
  37:     if (saw[i]) z++;
  38:     }
  39: printf("hashes %d used %d\n",nh,z);
  40: }
  41: # include "stdio.h"
  42: 
  43: dofile(f, name)
  44:     FILE *f;
  45:     char *name;
  46: {
  47: 
  48: /* read file f & spit out keys & ptrs */
  49: # define MAXLINE 750
  50: char line[MAXLINE], *s;
  51: char key[20], *p;
  52: int k 0;
  53: int c, lim;
  54: int alph 0;
  55: int used 0;
  56: long lp 0;
  57: 
  58: while (fgets(line, MAXLINE, f))
  59:     {
  60:     k++;
  61:     used=alph=0;
  62:     lim = strlen(line);
  63:     p = key;
  64:     for(s=line; c= *s; s++)
  65:         {
  66:         if (isalpha(c) || isdigit(c))
  67:             {
  68:             if (alph++ < 6)
  69:                 *p++ = c;
  70:             }
  71:         else
  72:             {
  73:             *p = 0;
  74:             if (outkey(p=key))
  75:                 {
  76:                 tkey(key,k);
  77:                 used=1;
  78:                 }
  79:             alph=0;
  80:             }
  81:         }
  82:     lp += lim;
  83:     }
  84: }
  85: 
  86: outkey( ky)
  87:     char *ky;
  88: {
  89:     int n;
  90: n = strlen(ky);
  91: if (n<3) return(0);
  92: if (isdigit(ky[0]))
  93:     if (ky[0] != '1' || ky[1] != '9' || n!= 4) return(0);
  94: return(1);
  95: }
  96: # include "stdio.h"
  97: hash (s)
  98:     char *s;
  99: {
 100: int c, n, q;
 101: for(q=n=0; c= *s; s++)
 102:     n += (c*n + c << (n%4));
 103: return(n);
 104: }
 105: err (s, a)
 106:     char *s;
 107: {
 108: fprintf(stderr, "Error: ");
 109: fprintf(stderr, s, a);
 110: putc('\n', stderr);
 111: }
 112: prefix(t, s)
 113:     char *t, *s;
 114: {
 115: int c, d;
 116: while ( (c= *t++) == *s++)
 117:     if (c==0) return(1);
 118: return(c==0 ? 1: 0);
 119: }
 120: mindex(s, c)
 121:     char *s;
 122: {
 123: register char *p;
 124: for( p=s; *p; p++)
 125:     if (*p ==c)
 126:         return(p);
 127: return(0);
 128: }
 129: tkey(s,nw)
 130:     char *s;
 131: {
 132: int x;
 133: x = abs(hash(s)) % nh;
 134: /* if (saw[x]) printf("%d %d\n", x, nw); */
 135: saw[x]= nw;
 136: }
 137: abs(n)
 138: {
 139: return(n>0 ? n : -n);
 140: }

Defined functions

abs defined in line 137; used 1 times
dofile defined in line 43; used 2 times
err defined in line 105; used 1 times
  • in line 31
hash defined in line 97; used 1 times
main defined in line 6; never used
mindex defined in line 120; never used
outkey defined in line 86; used 1 times
  • in line 74
prefix defined in line 112; never used
tkey defined in line 129; used 1 times
  • in line 76

Defined variables

comname defined in line 4; never used
nh defined in line 2; used 4 times
saw defined in line 3; used 2 times

Defined macros

MAXLINE defined in line 49; used 2 times
Last modified: 1981-07-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 793
Valid CSS Valid XHTML 1.0 Strict