1#include <sys/types.h>
2
3#include <ctype.h>
4#include <errno.h>
5#include <stdio.h>
6#include <stdlib.h>
7#include <string.h>
8
9void
10chk(f, str)
11	char *f, *str;
12{
13	char *s;
14	int ch, l, ok, pc;
15
16	if (freopen(f, "r", stdin) == NULL) {
17		fprintf(stderr, "%s: %s\n", f, strerror(errno));
18		exit(EXIT_FAILURE);
19	}
20
21	for (l = 1, ok = 1, s = str; (ch = getchar()) != EOF;) {
22		if (ch == '\n')
23			++l;
24		if (!ok || ch != *s) {
25			s = str;
26			ok = !isalpha(ch) && !isdigit(ch) && ch != '_';
27			continue;
28		}
29		if (*++s != '\0')
30			continue;
31
32		/* Match. */
33		printf("%s: %d: %s", f, l, str);
34		for (pc = 1; (ch = getchar()) != EOF;) {
35			switch (ch) {
36			case '(':
37				++pc;
38				break;
39			case ')':
40				--pc;
41				break;
42			case '\n':
43				++l;
44				break;
45			}
46			if (ch == '\n')
47				putchar(' ');
48			else
49				putchar(ch);
50			if (pc <= 0) {
51				putchar('\n');
52				break;
53			}
54		}
55		s = str;
56	}
57}
58
59int
60main(int argc, char *argv[])
61{
62	int r;
63
64	for (r = 0; *++argv != NULL;) {
65		chk(*argv, "FLD_CLR(");
66		chk(*argv, "FLD_ISSET(");
67		chk(*argv, "FLD_SET(");
68		chk(*argv, "F_CLR(");
69		chk(*argv, "F_ISSET(");
70		chk(*argv, "F_SET(");
71	}
72	return (0);
73}
74