rendered paste bodystatic int strip_comments ( char *buf )
{
enum { NORMAL,
SINGLE_QUOTE,
DOUBLE_QUOTE
} state;
char *cp1;
cp1 = buf;
state = NORMAL;
while ( 1 ) {
switch ( state ) {
case NORMAL:
if (( *cp1 == '#' ) || ( *cp1 == '\n' ) || ( *cp1 == '\0' )) {
/* end of the line */
*cp1 = '\0';
return 0;
} else if ( *cp1 == '\'' ) {
/* start of a quoted string */
cp1++;
state = SINGLE_QUOTE;
} else if ( *cp1 == '\"' ) {
/* start of a quoted string */
cp1++;
state = DOUBLE_QUOTE;
} else {
/* normal character */
cp1++;
}
break;
case SINGLE_QUOTE:
if (( *cp1 == '\n' ) || ( *cp1 == '\0' )) {
/* end of the line, unterminated quoted string */
*cp1 = '\0';
return -1;
} else if ( *cp1 == '\'' ) {
/* end of quoted string */
cp1++;
state = NORMAL;
} else {
/* ordinary character */
cp1++;
}
break;
case DOUBLE_QUOTE:
if (( *cp1 == '\n' ) || ( *cp1 == '\0' )) {
/* end of the line, unterminated quoted string */
*cp1++ = '\0';
return -1;
} else if ( *cp1 == '\"' ) {
/* end of quoted string */
cp1++;
state = NORMAL;
} else {
/* ordinary character */
cp1++;
}
break;
default:
/* should never get here */
return -1;
}
}
}