+ switch (ch)
+ {
+ case ' ':
+ case 0x0a:
+ case 0x0d:
+ case 0x09:
+ break;
+ case '/':
+ {
+ int prev_ch = ch;
+ ch = getc(fd);
+ if (ch == EOF)
+ {
+ ungetc(prev_ch, fd);
+ return TRUE;
+ }
+
+ if (ch == '*')
+ {
+ // Eat C comment
+ prev_ch = 0;
+ while ((ch = getc(fd)) != EOF)
+ {
+ if (ch == '/' && prev_ch == '*')
+ break;
+ prev_ch = ch;
+ }
+ }
+ else if (ch == '/')
+ {
+ // Eat C++ comment
+ static char buffer[255];
+ fgets(buffer, 255, fd);
+ }
+ else
+ {
+ ungetc(prev_ch, fd);
+ ungetc(ch, fd);
+ return TRUE;
+ }
+ }
+ break;
+ default:
+ ungetc(ch, fd);
+ return TRUE;
+
+ }