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