|
|
1.1 root 1: /*
2: * pickpstr.c
3: * Read a set of files.
4: * Find all strings of the form PSTR("...").
5: * Output them, minus the enclosing PSTR( and ) to stdout.
6: */
7:
8: #include <stdio.h>
9: #define STR "LANG(\""
10:
11: main (ac, av)
12: char **av;
13: {
14: int copying, match, bslash;
15: FILE *f;
16: int c;
17:
18: if (ac < 2) {
19: fprintf (stderr, "Usage: %s file [...]\n", av[0]);
20: exit (1);
21: }
22:
23: while (*++av) {
24: if ((f = fopen (*av, "r")) == NULL) {
25: fprintf (stderr, "Unable to open file %s, skipping\n");
26: continue;
27: }
28: match = 0;
29: copying = 0;
30: while ((c = getc(f)) != EOF) {
31: if (!copying) {
32: if (c == STR[match]) {
33: if (++match == strlen(STR)) {
34: copying = 1;
35: match = 0;
36: bslash = 0;
37: putchar (c);
38: }
39: } else
40: match = 0;
41: } else {
42: if (!bslash) {
43: if (c == '"') {
44: putchar (c);
45: putchar ('\n');
46: putchar ('\n');
47: copying = 0;
48: } else if (c == '\\') {
49: bslash = 1;
50: putchar (c);
51: } else
52: putchar (c);
53: } else {
54: putchar (c);
55: bslash = 0;
56: }
57: }
58: }
59: fclose (f);
60: }
61: exit (0);
62: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.