void push_file (FILE *fp, const char *title) { input_block *i; if (next != NULL) { obstack_free (current_input, next); next = NULL; } if (debug_level & DEBUG_TRACE_INPUT) DEBUG_MESSAGE1 ("input read from %s", title); i = (input_block *) obstack_alloc (current_input, sizeof (struct input_block)); i->type = INPUT_FILE; i->u.u_f.name = current_file; i->u.u_f.lineno = current_line; i->u.u_f.out_lineno = output_current_line; i->u.u_f.advance_line = start_of_input_line; current_file = obstack_copy0 (current_input, title, strlen (title)); current_line = 1; output_current_line = -1; i->u.u_f.file = fp; i->prev = isp; isp = i; }
void push_file (FILE *fp, const char *title, bool close_when_done) { input_block *i; if (next != NULL) { obstack_free (current_input, next); next = NULL; } if (debug_level & DEBUG_TRACE_INPUT) DEBUG_MESSAGE1 ("input read from %s", title); i = (input_block *) obstack_alloc (current_input, sizeof (struct input_block)); i->type = INPUT_FILE; i->file = (char *) obstack_copy0 (&file_names, title, strlen (title)); i->line = 1; input_change = true; i->u.u_f.fp = fp; i->u.u_f.end = false; i->u.u_f.close = close_when_done; i->u.u_f.advance = start_of_input_line; output_current_line = -1; i->prev = isp; isp = i; }