1 /* $NetBSD: dump.c,v 1.4 2014/01/28 20:43:55 joerg Exp $ */ 2 /*- 3 * Copyright (c) 1992, 1993, 1994 4 * The Regents of the University of California. All rights reserved. 5 * 6 * %sccs.include.redist.c% 7 */ 8 9 #if defined(__NetBSD__) 10 #include <sys/cdefs.h> 11 #if 0 12 #ifndef lint 13 static char copyright[] = 14 "%Z% Copyright (c) 1992, 1993, 1994\n\ 15 The Regents of the University of California. All rights reserved.\n"; 16 #endif /* not lint */ 17 #else 18 __RCSID("$NetBSD: dump.c,v 1.4 2014/01/28 20:43:55 joerg Exp $"); 19 #endif 20 #endif 21 22 #include <ctype.h> 23 #include <stdio.h> 24 #include <stdlib.h> 25 26 static void 27 parse(fp) 28 FILE *fp; 29 { 30 int ch, s1, s2, s3; 31 32 #define TESTD(s) { \ 33 if ((s = getc(fp)) == EOF) \ 34 return; \ 35 if (!isdigit(s)) \ 36 continue; \ 37 } 38 #define TESTP { \ 39 if ((ch = getc(fp)) == EOF) \ 40 return; \ 41 if (ch != '|') \ 42 continue; \ 43 } 44 #define MOVEC(t) { \ 45 do { \ 46 if ((ch = getc(fp)) == EOF) \ 47 return; \ 48 } while (ch != (t)); \ 49 } 50 for (;;) { 51 MOVEC('"'); 52 TESTD(s1); 53 TESTD(s2); 54 TESTD(s3); 55 TESTP; 56 putchar('"'); 57 putchar(s1); 58 putchar(s2); 59 putchar(s3); 60 putchar('|'); 61 for (;;) { /* dump to end quote. */ 62 if ((ch = getc(fp)) == EOF) 63 return; 64 putchar(ch); 65 if (ch == '"') 66 break; 67 if (ch == '\\') { 68 if ((ch = getc(fp)) == EOF) 69 return; 70 putchar(ch); 71 } 72 } 73 putchar('\n'); 74 } 75 } 76 77 int 78 main(argc, argv) 79 int argc; 80 char *argv[]; 81 { 82 FILE *fp; 83 84 for (; *argv != NULL; ++argv) { 85 if ((fp = fopen(*argv, "r")) == NULL) { 86 perror(*argv); 87 exit (1); 88 } 89 parse(fp); 90 (void)fclose(fp); 91 } 92 exit (0); 93 } 94