Main Page | Class Hierarchy | Data Structures | Directories | File List | Data Fields | Related Pages

t.c

00001 #include <sys/types.h>
00002 
00003 #include <ctype.h>
00004 #include <errno.h>
00005 #include <stdio.h>
00006 #include <stdlib.h>
00007 #include <string.h>
00008 
00009 void
00010 chk(f, str)
00011         char *f, *str;
00012 {
00013         char *s;
00014         int ch, l, ok, pc;
00015 
00016         if (freopen(f, "r", stdin) == NULL) {
00017                 fprintf(stderr, "%s: %s\n", f, strerror(errno));
00018                 exit (1);
00019         }
00020 
00021         for (l = 1, ok = 1, s = str; (ch = getchar()) != EOF;) {
00022                 if (ch == '\n')
00023                         ++l;
00024                 if (!ok || ch != *s) {
00025                         s = str;
00026                         ok = !isalpha(ch) && !isdigit(ch) && ch != '_';
00027                         continue;
00028                 }
00029                 if (*++s != '\0')
00030                         continue;
00031 
00032                 /* Match. */
00033                 printf("%s: %d: %s", f, l, str);
00034                 for (pc = 1; (ch = getchar()) != EOF;) {
00035                         switch (ch) {
00036                         case '(':
00037                                 ++pc;
00038                                 break;
00039                         case ')':
00040                                 --pc;
00041                                 break;
00042                         case '\n':
00043                                 ++l;
00044                                 break;
00045                         }
00046                         if (ch == '\n')
00047                                 putchar(' ');
00048                         else
00049                                 putchar(ch);
00050                         if (pc <= 0) {
00051                                 putchar('\n');
00052                                 break;
00053                         }
00054                 }
00055                 s = str;
00056         }
00057 }
00058 
00059 int
00060 main(int argc, char *argv[])
00061 {
00062         int r;
00063 
00064         for (r = 0; *++argv != NULL;) {
00065                 chk(*argv, "F_ISSET(");
00066                 chk(*argv, "F_CLR(");
00067                 chk(*argv, "F_SET(");
00068         }
00069         return (0);
00070 }

Generated on Sun Dec 25 12:14:52 2005 for Berkeley DB 4.4.16 by  doxygen 1.4.2