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