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