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