if (!strcmp(param, "line")) {
if (lex->push_line)
lex->push_line--;
+ --line;
}
else
goto unroll;
}
+ else if (!strcmp(command, "file")) {
+ lex->name = util_strdup(param);
+ vec_push(lex_filenames, lex->name);
+ }
+ else if (!strcmp(command, "line")) {
+ line = strtol(param, NULL, 0)-1;
+ }
else
goto unroll;
- while (ch != '\n')
- ch = lex_getch(lex);
lex->line = line;
+ while (ch != '\n' && ch != EOF)
+ ch = lex_getch(lex);
return true;
unroll:
ch = lex_getch(lex);
while (ch != EOF && isspace(ch)) {
if (ch == '\n') {
- if (lex_try_pragma(lex)) {
- ch = lex_getch(lex);
+ if (lex_try_pragma(lex))
continue;
- }
}
if (lex->flags.preprocessing) {
if (ch == '\n') {