Home | History | Annotate | Line # | Download | only in mantools
      1 /*	$NetBSD: comment.c,v 1.2 2022/10/08 16:12:44 christos Exp $	*/
      2 
      3 #include <stdio.h>
      4 
      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 
     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 
     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