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

Defined variables

outbuf defined in line 9; never used
qitem defined in line 21; used 2 times
rprog defined in line 21; used 4 times
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
Last modified: 1987-02-17
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 2682
Valid CSS Valid XHTML 1.0 Strict