# 2.11BSD#431 - /usr/src/usr.bin/refer/inv2.c

##### Functions

    newkeys           X
    trimnl            X

##### Macros

    LINESIZ           X

       1: #ifndef lint
       2: static char *sccsid = "@(#)inv2.c	4.1 (Berkeley) 5/6/83";
       3: #endif
       4:
       5: #include <stdio.h>
       6: #include <assert.h>
       7: #define LINESIZ 1250
       8:
       9: newkeys (outf, inf, recf, nhash, fd, iflong)
      10: FILE *outf, *inf, *recf, *fd;
      11: int *iflong;
      12: {
      13:     /* reads key lines from inf; hashes and writes on outf;
      14: 	 * writes orig key on recf, records pointer on outf too.
      15: 	 * format of outf is : hash code space record pointer
      16: 	 */
      17:
      18:     long lp, ftell();
      19:     long ld = 0;
      20:     int ll = 0, lt = 0;
      21:     char line[LINESIZ];
      22:     char key[30], bkeys[40];
      23:     char *p, *s;
      24:     char *keyv[500];
      25:     int i, nk, ndoc = 0, more = 0, c;
      26:
      27:     lp = ftell (recf);
      28:     while (fgets(line, LINESIZ, inf))
      29:     {
      30:         p = line;
      31:         while (*p != '\t') p++;
      32:         *p++ =0;
      33:         fputs(line, recf);
      34:         if (fd)
      35:         {
      36:             sprintf(bkeys, ";%ld", ld);
      37:             ll = strlen(p);
      38:             lt = strlen(bkeys);
      39:             fputs(bkeys, recf);
      40:             sprintf(bkeys, ",%d", ll);
      41:             lt += strlen(bkeys);
      42:             fputs(bkeys, recf);
      43:             ld += ll;
      44:             fputs(p, fd);
      45:         }
      46:         putc('\n',recf);
      47:         for(s=p; *s; s++);
      48:         if (*--s == '\n')
      49:         {
      50:             more=0;
      51:             *s=0;
      52:         }
      53:         else
      54:             more=1;
      55:         _assert (fd==0 || more==0);
      56:         nk = getargs(p, keyv);
      57:         if (more)
      58:             nk--;
      59:         for(i=0; i<nk; i++)
      60:             fprintf(outf,"%04d %06ld\n",hash(keyv[i])%nhash, lp);
      61: # if D1
      62:         for(i=0; i<nk; i++)
      63:             printf("key %s hash %d\n",keyv[i],hash(keyv[i])%nhash);
      64: # endif
      65:         if (more) /* allow more than LINESIZ keys */
      66:         {
      67:             strcpy(key, keyv[nk]);
      68:             for(s=key; *s; s++);
      69:             while ( (c=getc(inf)) != '\n')
      70:             {
      71:                 if (c != ' ')
      72:                 {
      73:                     *s++ = c;
      74:                     continue;
      75:                 }
      76:                 *s=0;
      77:                 if (s>key)
      78:                     fprintf(outf, "%04d %06ld\n",hash(key)%nhash, lp);
      79:                 s = key;
      80:             }
      81:         }
      82:         lp += (strlen(line)+lt+1);
      83:         ndoc++;
      84:     }
      85:     *iflong = (lp>=65536L);
      86:     if (sizeof(int)>2) *iflong=1; /* force long on VAX */
      87:     fclose(recf);
      88:     return(ndoc);
      89: }
      90:
      91: trimnl(p)
      92: char *p;
      93: {
      94:     while (*p) p++;
      95:     p--;
      96:     if (*p == '\n') *p=0;
      97: }

#### Defined functions

newkeys defined in line 9; used 1 times

- in /usr/src/usr.bin/refer/inv1.c line 124

trimnl defined in line 91; never used

#### Defined variables

sccsid defined in line 2; never used

#### Defined macros

LINESIZ defined in line 7; used 2 times

- in line 21, 28

Last modified: 1987-02-17 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 503 |