void scanner_include (void) { scanner_newline(); char *filename = alloca (strlen (yytext) + 1); int linenr; int scan_rc = sscanf (yytext, "# %d \"%[^\"]\"", &linenr, filename); if (scan_rc != 2) { errprintf ("%: %d: [%s]: invalid directive, ignored\n", scan_rc, yytext); }else { //alloc is on stack so we still need to make a copy char *newfilename = strdup (filename); assert (newfilename != NULL); scanner_newfilename (newfilename); scan_linenr = linenr - 1; DEBUGF ('m', "filename=%s, scan_linenr=%d\n", filename_stack.filenames[filename_stack.last_filenr], scan_linenr); } }
void scanner_include (void) { scanner_newline(); char *filename = alloca (strlen (yytext) + 1); int linenr; int scan_rc = sscanf (yytext, "# %d \"%[^\"]\"", &linenr, filename); if (scan_rc != 2) { errprintf ("%: %d: [%s]: invalid directive, ignored\n", scan_rc, yytext); }else { char *newfilename = strdup (filename); assert (newfilename != NULL); printf (";#include \"%s\"\n", newfilename); scanner_newfilename (newfilename); scan_linenr = linenr; fprintf(yytok, "# %d \"%s\"\n",linenr, newfilename); DEBUGF ('m', "filename=%s, scan_linenr=%d\n", filename_stack.filenames[filename_stack.last_filenr], scan_linenr); } }