1/* $NetBSD: comment.c,v 1.2 2022/10/08 16:12:44 christos Exp $ */ 2 3#include <stdio.h> 4 5void 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 24void 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 37int 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