in utils/unlit/unlit.c [174:237]
static line readline(FILE *istream, FILE *ostream) {
int c, c1;
char buf[100];
int i;
c = egetc(istream);
if (c==EOF)
return ENDFILE;
if ( c == '#' ) {
if ( ignore_shebang ) {
c1 = egetc(istream);
if ( c1 == '!' ) {
while (c=egetc(istream), !isLineTerm(c)) ;
return SHEBANG;
}
myputc(c, ostream);
c=c1;
}
if ( leavecpp ) {
myputc(c, ostream);
while (c=egetc(istream), !isLineTerm(c))
myputc(c,ostream);
myputc('\n',ostream);
return HASH;
}
}
if (c==DEFNCHAR) {
myputc(' ',ostream);
while (c=egetc(istream), !isLineTerm(c))
myputc(c,ostream);
myputc('\n',ostream);
return DEFN;
}
if (!crunchnl)
myputc('\n',ostream);
while (isWhitespace(c))
c=egetc(istream);
if (isLineTerm(c))
return BLANK;
i = 0;
buf[i++] = c;
while (c=egetc(istream), !isLineTerm(c))
if (i < sizeof buf - 1)
buf[i++] = c;
while(i > 0 && isspace(buf[i-1]))
i--;
buf[i] = 0;
if (strcmp(buf, BEGINCODE) == 0)
return BEGIN;
if (strcmp(buf, ENDCODE) == 0)
return END;
#if defined(PSEUDOCODE)
else if (strcmp(buf, BEGINPSEUDOCODE) == 0)
return PSEUDO;
#endif
else
return TEXT;
}