xref: /netbsd-src/external/ibm-public/postfix/dist/mantools/comment.c (revision 67b9b338a7386232ac596b5fd0cd5a9cc8a03c71)
1 /*	$NetBSD: comment.c,v 1.2 2022/10/08 16:12:44 christos Exp $	*/
2 
3 #include <stdio.h>
4 
copy_comment()5 void    copy_comment()
6 {
7     int     c;
8 
9     while ((c = getchar()) != EOF) {
10 	if (c == '*') {
11 	    if ((c = getchar()) == '/') {
12 		putchar('\n');
13 		return;
14 	    }
15 	    if (c != EOF)
16 		ungetc(c, stdin);
17 	    putchar('*');
18 	} else {
19 	    putchar(c);
20 	}
21     }
22 }
23 
skip_string(int quote)24 void    skip_string(int quote)
25 {
26     int     c;
27 
28     while ((c = getchar()) != EOF) {
29 	if (c == quote) {
30 	    return;
31 	} else if (c == '\\') {
32 	    getchar();
33 	}
34     }
35 }
36 
main()37 int     main()
38 {
39     int     c;
40 
41     while ((c = getchar()) != EOF) {
42 	switch (c) {
43 	case '/':
44 	    if ((c = getchar()) == '*') {
45 		copy_comment();
46 	    } else if (c == '/') {
47 		while ((c = getchar()) != EOF) {
48 		    putchar(c);
49 		    if (c == '\n')
50 			break;
51 		}
52 	    } else {
53 		if (c != EOF)
54 		    ungetc(c, stdin);
55 	    }
56 	    break;
57 	case '"':
58 	case '\'':
59 	    skip_string(c);
60 	    break;
61 	case '\\':
62 	    (void) getchar();
63 	    break;
64 	default:
65 	    break;
66 	}
67     }
68 }
69