/* * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ /* All Rights Reserved */ /* * Copyright (c) 1980 Regents of the University of California. * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. */ #include #include extern char *comname; /* "/usr/lib/refer/eign" */ int wholefile = 0; int keycount = 100; int labels = 1; int minlen = 3; extern int comcount; char *iglist = "XYZ#"; extern void dofile(); extern void err(); extern char *trimnl(); int main(int argc, char *argv[]) { /* * this program expects as its arguments a list of * files and generates a set of lines of the form * filename:byte-add,length (tab) key1 key2 key3 * where the byte addresses give the position within * the file and the keys are the strings off the lines * which are alphabetic, first six characters only. */ int i; char *name, qn[200]; char *inlist = 0; FILE *f, *ff; (void) setlocale(LC_ALL, ""); #if !defined(TEXT_DOMAIN) #define TEXT_DOMAIN "SYS_TEST" #endif (void) textdomain(TEXT_DOMAIN); while (argc > 1 && argv[1][0] == '-') { switch (argv[1][1]) { case 'c': comname = argv[2]; argv++; argc--; break; case 'w': wholefile = 1; break; case 'f': inlist = argv[2]; argv++; argc--; break; case 'i': iglist = argv[2]; argv++; argc--; break; case 'l': minlen = atoi(argv[1]+2); if (minlen <= 0) minlen = 3; break; case 'n': /* number of common words to use */ comcount = atoi(argv[1]+2); break; case 'k': /* number of keys per file max */ keycount = atoi(argv[1]+2); break; case 's': /* suppress labels, search only */ labels = 0; break; } argc--; argv++; } if (inlist) { ff = fopen(inlist, "r"); while (fgets(qn, 200, ff)) { trimnl(qn); f = fopen(qn, "r"); if (f != NULL) dofile(f, qn); else fprintf(stderr, gettext("Can't read %s\n"), qn); } } else if (argc <= 1) dofile(stdin, ""); else for (i = 1; i < argc; i++) { f = fopen(name = argv[i], "r"); if (f == NULL) err(gettext("No file %s"), name); else dofile(f, name); } return (0); }