1: # include "stdio.h"
   2: # define SAME 0
   3: #define FGCT    10      /* number of files for out-of-date index */
   4: #define FGSIZE  150     /* total chars in filenames from OOD index */
   5: int keepold 1; /* keep old things for fgrep search */
   6: char fgspace[FGSIZE];
   7: char *fgp fgspace;
   8: char *fgnames[FGCT];
   9: char **fgnamp fgnames;
  10: 
  11: findline(in, out, outlen, indexdate)
  12: long indexdate;
  13: char *in, *out;
  14: {
  15:     static char name[100] "";
  16:     register char *p;
  17:     char **ftp;
  18:     extern long gdate();
  19:     static FILE *fa NULL;
  20:     long lp, llen;
  21:     int len;
  22:     register k;
  23:     char savc;
  24: 
  25:     if (in[0]==0)
  26:         return(0);
  27:     for(p=in; *p && *p != ':' && *p != ';'; p++)
  28:         ;
  29:     if (savc = *p) *p++=0;
  30:     else p=in;
  31:     k = sscanf(p, "%ld,%ld", &lp, &llen);
  32:     if (k<2)
  33:     {
  34:         lp = 0;
  35:         llen=outlen;
  36:     }
  37:     if (strcmp (name, in) != 0)
  38:     {
  39:         if (fa != NULL)
  40:             fa = freopen(in, "r", fa);
  41:         else
  42:             fa = fopen(in, "r");
  43:         if (fa == NULL)
  44:             return(0);
  45:         /* err("Can't open %s", in); */
  46:         strcpy(name, in);
  47:         if (gdate(fa) > indexdate && indexdate != 0)
  48:         {
  49:             if (keepold)
  50:             {
  51:                 for(ftp=fgnames; ftp<fgnamp; ftp++)
  52:                     if (strcmp(*ftp, name)==SAME)
  53:                         return(0);
  54:                 if ((fgnamp==fgnames+FGCT-1) ||
  55:                    (fgp+strlen(name)+1 >= &fgspace[FGSIZE])) {
  56:                     fprintf(stderr,
  57:                         "Too many out-of-date files\n");
  58:                     return(0);
  59:                 }
  60:                 strcpy (*fgnamp++ = fgp, name);
  61:                 return(0);
  62:             }
  63:             fprintf(stderr, "Warning: index predates file '%s'\n", name);
  64:         }
  65:     }
  66:     if (savc)
  67:         *(p-1) = savc;
  68:     if (fa != NULL)
  69:     {
  70:         fseek (fa, lp, 0);
  71:         if (llen >= outlen) {
  72:             fprintf(stderr,"Reference too long, truncated:\n");
  73:             len = outlen-1;
  74:         } else
  75:             len = llen;
  76:         len = fread (out, 1, len, fa);
  77:         out[len] = 0;
  78:         if (len != llen) {
  79:             out[len-1] = '\n';
  80:             fprintf(stderr,"%s\n",out);
  81:         }
  82:         return(len);
  83:     } else {
  84:         return(0);
  85:     }
  86: }

Defined functions

findline defined in line 11; used 3 times

Defined variables

fgnames defined in line 9; used 5 times
fgnamp defined in line 9; used 6 times
fgp defined in line 7; used 9 times
fgspace defined in line 7; used 2 times
keepold defined in line 5; used 1 times
  • in line 49

Defined macros

FGCT defined in line 3; used 2 times
  • in line 8, 54
FGSIZE defined in line 4; used 2 times
  • in line 6, 55
SAME defined in line 2; used 1 times
  • in line 52
Last modified: 1982-05-25
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 811
Valid CSS Valid XHTML 1.0 Strict