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