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