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