1 /*
2 * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
3 * Use is subject to license terms.
4 */
5
6 /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
7 /* All Rights Reserved */
8
9 /*
10 * Copyright (c) 1980 Regents of the University of California.
11 * All rights reserved. The Berkeley software License Agreement
12 * specifies the terms and conditions for redistribution.
13 */
14
15 #include <stdio.h>
16 #include <locale.h>
17
18 extern char *comname; /* "/usr/lib/refer/eign" */
19 int wholefile = 0;
20 int keycount = 100;
21 int labels = 1;
22 int minlen = 3;
23 extern int comcount;
24 char *iglist = "XYZ#";
25
26 extern void dofile();
27 extern void err();
28 extern char *trimnl();
29
30 int
main(int argc,char * argv[])31 main(int argc, char *argv[])
32 {
33 /*
34 * this program expects as its arguments a list of
35 * files and generates a set of lines of the form
36 * filename:byte-add,length (tab) key1 key2 key3
37 * where the byte addresses give the position within
38 * the file and the keys are the strings off the lines
39 * which are alphabetic, first six characters only.
40 */
41
42 int i;
43 char *name, qn[200];
44 char *inlist = 0;
45
46 FILE *f, *ff;
47
48 (void) setlocale(LC_ALL, "");
49
50 #if !defined(TEXT_DOMAIN)
51 #define TEXT_DOMAIN "SYS_TEST"
52 #endif
53 (void) textdomain(TEXT_DOMAIN);
54
55 while (argc > 1 && argv[1][0] == '-') {
56 switch (argv[1][1]) {
57 case 'c':
58 comname = argv[2];
59 argv++;
60 argc--;
61 break;
62 case 'w':
63 wholefile = 1;
64 break;
65 case 'f':
66 inlist = argv[2];
67 argv++;
68 argc--;
69 break;
70 case 'i':
71 iglist = argv[2];
72 argv++;
73 argc--;
74 break;
75 case 'l':
76 minlen = atoi(argv[1]+2);
77 if (minlen <= 0) minlen = 3;
78 break;
79 case 'n': /* number of common words to use */
80 comcount = atoi(argv[1]+2);
81 break;
82 case 'k': /* number of keys per file max */
83 keycount = atoi(argv[1]+2);
84 break;
85 case 's': /* suppress labels, search only */
86 labels = 0;
87 break;
88 }
89 argc--;
90 argv++;
91 }
92 if (inlist) {
93 ff = fopen(inlist, "r");
94 while (fgets(qn, 200, ff)) {
95 trimnl(qn);
96 f = fopen(qn, "r");
97 if (f != NULL)
98 dofile(f, qn);
99 else
100 fprintf(stderr, gettext("Can't read %s\n"), qn);
101 }
102 } else
103 if (argc <= 1)
104 dofile(stdin, "");
105 else
106 for (i = 1; i < argc; i++) {
107 f = fopen(name = argv[i], "r");
108 if (f == NULL)
109 err(gettext("No file %s"), name);
110 else
111 dofile(f, name);
112 }
113 return (0);
114 }
115