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

##### Functions

    auxil             X
    baddrop           X

##### Variables

    outbuf            X
    qitem             X
    rprog             X

##### Macros

    TXTLEN            X

##### unions's

    ptr               X

       1: #ifndef lint
       2: static char *sccsid = "@(#)hunt6.c	4.2 (Berkeley) 1/9/85";
       3: #endif
       4:
       5: #include <stdio.h>
       6: #include <assert.h>
       7: #define TXTLEN 1000
       8:
       9: char *outbuf = 0;
      10: extern char *soutput;
      11: extern int soutlen, iflong;
      12: extern long indexdate;
      13:
      14: baddrop(master, nf, fc, nitem, qitem, rprog, full)
      15: union ptr {
      16:     unsigned *a;
      17:     long *b;
      18: }
      19: master;
      20: FILE *fc;
      21: char *qitem[], *rprog;
      22: {
      23:     /* checks list of drops for real bad drops; finds items with "deliv" */
      24:     int i, g, j, need, got, na, len;
      25:     long lp;
      26:     char res[100], *ar[50], output[TXTLEN];
      27:     extern int colevel, reached;
      28: # if D1
      29:     if (iflong)
      30:         fprintf(stderr,"in baddrop, nf %d master %ld %ld %ld\n",
      31:             nf, master.b[0], master.b[1], master.b[2]);
      32:     else
      33:         fprintf(stderr,"in baddrop, nf %d master %d %d %d\n",
      34:             nf, master.a[0], master.a[1], master.a[2]);
      35: # endif
      36:     for (i=g=0; i<nf; i++)
      37:     {
      38:         lp = iflong ? master.b[i] : master.a[i];
      39: # if D1
      40:         if (iflong)
      41:             fprintf(stderr, "i %d master %lo lp %lo\n",
      42:                 i, master.b[i], lp);
      43:         else
      44:             fprintf(stderr, "i %d master %o lp %lo\n",
      45:                 i, master.a[i], lp);
      46: # endif
      47:         fseek (fc, lp, 0);
      48:         fgets( res, 100, fc);
      49: # if D1
      50:         fprintf(stderr, "tag %s", res);
      51: # endif
      52:         if (!auxil(res,output))
      53:         {
      54:             char *s;
      55:             int c;
      56: # if D1
      57:             fprintf(stderr, "not auxil try rprog %c\n",
      58:                 rprog? 'y': 'n');
      59: # endif
      60:             for(s=res; c= *s; s++)
      61:                 if (c == ';' || c == '\n')
      62:                 {
      63:                     *s=0;
      64:                     break;
      65:                 }
      66:             len = rprog ?
      67:             corout (res, output, rprog, 0, TXTLEN) :
      68:             findline (res, output, TXTLEN, indexdate);
      69:         }
      70: # if D1
      71:         _assert (len <TXTLEN);
      72:         fprintf(stderr,"item %d of %d, tag %s len %d output\n%s\n..\n",
      73:             i, nf, res, len, output);
      74: # endif
      75:         if (len==0)
      76:             continue;
      77:         need = colevel ? reached : nitem;
      78:         na=0;
      79:         ar[na++] = "fgrep";
      80:         ar[na++] = "-r";
      81:         ar[na++] = "-n";
      82:         ar[na++] = (char *) need;
      83:         ar[na++] = "-i";
      84:         ar[na++] = output;
      85:         ar[na++] = (char *) len;
      86:         for(j=0; j<nitem; j++)
      87:             ar[na++] = qitem[j];
      88: # ifdef D1
      89:         fprintf(stderr, "calling fgrep len %d ar[4] %s %o %d \n",
      90:             len,ar[4],ar[5],ar[6]);
      91: # endif
      92:         if (fgrep(na, ar)==0)
      93:         {
      94: # ifdef D1
      95:             fprintf(stderr, "fgrep found it\n");
      96: # endif
      97:             if (iflong)
      98:                 master.b[g++] = master.b[i];
      99:             else
     100:                 master.a[g++] = master.a[i];
     101:             if (full >= g)
     102:                 if (soutput==0)
     103:                     fputs(output, stdout);
     104:                 else
     105:                     strcpy (soutput, output);
     106:         }
     107: # ifdef D1
     108:         fprintf(stderr, "after fgrep\n");
     109: # endif
     110:     }
     111:     return(g);
     112: }
     113:
     114: auxil( res, output)
     115: char *res, *output;
     116: {
     117:     extern FILE *fd;
     118:     long lp, c;
     119:     int len;
     120:     if (fd==0)return(0);
     121:     while (c = *res++)
     122:     {
     123:         if (c == ';')
     124:         {
     125:             sscanf(res, "%ld,%d", &lp, &len);
     126:             fseek (fd, lp, 0);
     127:             fgets(output, len, fd);
     128:             return(1);
     129:         }
     130:     }
     131:     return(0);
     132: }

#### Defined functions

auxil defined in line 114; used 1 times

- in line 52

baddrop defined in line 14; used 2 times

- in /usr/src/usr.bin/refer/glue1.c line 214
- in /usr/src/usr.bin/refer/hunt1.c line 180

#### Defined variables

outbuf defined in line 9; never used
qitem defined in line 21; used 2 times

- in line 14, 87

rprog defined in line 21; used 4 times

- in line 14, 58, 66-67(2)

sccsid defined in line 2; never used

#### Defined union's

ptr defined in line 15; never used

#### Defined macros

TXTLEN defined in line 7; used 4 times

- in line 26, 67-71(3)

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