1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
/* static char copyright[] = "@(#)Copyright (c) 1986, Greg McGary";
static char sccsid[] = "@(#)idx.c 1.2 86/10/17"; */
#include <stdio.h>
#include <string.h>
#include <config.h>
#include "misc.h"
#include "filenames.h"
#include "scanners.h"
void idxtract __P((char *path));
char const *program_name;
static void
usage (void)
{
fprintf (stderr, "Usage: %s [-u] [+/-a<ccc>] [-c<ccc>] files\n", program_name);
exit (1);
}
int
main (int argc, char **argv)
{
char *arg;
int op;
program_name = basename ((argc--, *argv++));
init_scanners ();
while (argc)
{
arg = (argc--, *argv++);
switch (op = *arg++)
{
case '-':
case '+':
break;
default:
(argc++, --argv);
goto argsdone;
}
switch (*arg++)
{
case 'S':
set_scan_args (op, arg);
break;
default:
usage ();
}
}
argsdone:
if (argc == 0)
usage ();
while (argc)
idxtract ((argc--, *argv++));
return 0;
}
void
idxtract (char *file_name)
{
char const *key;
FILE *source_FILE;
int flags;
char const *suffix;
char const *filter;
char const *lang_name;
char const *(*scanner) (FILE*, int*);
suffix = strrchr (file_name, '.');
lang_name = get_lang_name (suffix);
scanner = get_scanner (lang_name);
if (scanner == NULL)
return;
source_FILE = open_source_FILE (file_name, filter = get_filter (suffix));
if (source_FILE == NULL)
return;
while ((key = (*scanner) (source_FILE, &flags)) != NULL)
puts (key);
close_source_FILE (source_FILE, filter);
}
|