xref: /csrg-svn/old/refer/hunt/hunt8.c (revision 12289)
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