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

Defined functions

auxil defined in line 93; used 1 times
  • in line 39
baddrop defined in line 8; used 2 times

Defined variables

outbuf defined in line 4; never used
qitem defined in line 11; used 2 times
  • in line 8, 68
rprog defined in line 11; used 4 times

Defined union's

ptr defined in line 9; never used

Defined macros

TXTLEN defined in line 3; used 4 times
Last modified: 1981-07-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 852
Valid CSS Valid XHTML 1.0 Strict