1*12289Stut #ifndef lint 2*12289Stut static char *sccsid = "@(#)hunt8.c 4.1 (Berkeley) 05/06/83"; 3*12289Stut #endif 4*12289Stut 5*12289Stut #include <stdio.h> 6*12289Stut #include <assert.h> 7*12289Stut #define unopen(fil) {if (fil!=NULL) {fclose(fil); fil=NULL;}} 8*12289Stut 9*12289Stut extern long indexdate, gdate(); 10*12289Stut extern FILE *iopen(); 11*12289Stut runbib (s) 12*12289Stut char *s; 13*12289Stut { 14*12289Stut /* make a file suitable for fgrep */ 15*12289Stut char tmp[200]; 16*12289Stut sprintf(tmp, "/usr/lib/refer/mkey %s >%s.ig", s,s); 17*12289Stut system(tmp); 18*12289Stut } 19*12289Stut 20*12289Stut makefgrep(indexname) 21*12289Stut char *indexname; 22*12289Stut { 23*12289Stut FILE *fa, *fb; 24*12289Stut if (ckexist(indexname, ".ig")) 25*12289Stut { 26*12289Stut /* existing gfrep -type index */ 27*12289Stut # if D1 28*12289Stut fprintf(stderr, "found fgrep\n"); 29*12289Stut # endif 30*12289Stut fa = iopen(indexname, ".ig"); 31*12289Stut fb = iopen(indexname, ""); 32*12289Stut if (gdate(fb)>gdate(fa)) 33*12289Stut { 34*12289Stut if (fa!=NULL) 35*12289Stut fclose(fa); 36*12289Stut runbib(indexname); 37*12289Stut fa= iopen(indexname, ".ig"); 38*12289Stut } 39*12289Stut indexdate = gdate(fa); 40*12289Stut unopen(fa); 41*12289Stut unopen(fb); 42*12289Stut } 43*12289Stut else 44*12289Stut if (ckexist(indexname, "")) 45*12289Stut { 46*12289Stut /* make fgrep */ 47*12289Stut # if D1 48*12289Stut fprintf(stderr, "make fgrep\n"); 49*12289Stut # endif 50*12289Stut runbib(indexname); 51*12289Stut time(&indexdate); 52*12289Stut unopen(fb); 53*12289Stut } 54*12289Stut else /* failure */ 55*12289Stut return(0); 56*12289Stut return(1); /* success */ 57*12289Stut } 58*12289Stut 59*12289Stut ckexist(s, t) 60*12289Stut char *s, *t; 61*12289Stut { 62*12289Stut char fnam[100]; 63*12289Stut strcpy (fnam, s); 64*12289Stut strcat (fnam, t); 65*12289Stut return (access(fnam, 04) != -1); 66*12289Stut } 67*12289Stut 68*12289Stut FILE * 69*12289Stut iopen(s, t) 70*12289Stut char *s, *t; 71*12289Stut { 72*12289Stut char fnam[100]; 73*12289Stut FILE *f; 74*12289Stut strcpy (fnam, s); 75*12289Stut strcat (fnam, t); 76*12289Stut f = fopen (fnam, "r"); 77*12289Stut if (f == NULL) 78*12289Stut { 79*12289Stut err("Missing expected file %s", fnam); 80*12289Stut exit(1); 81*12289Stut } 82*12289Stut return(f); 83*12289Stut } 84