#include "complain.h"
FILE *finput = NULL;
-FILE *foutput = NULL;
struct obstack action_obstack;
struct obstack attrs_obstack;
struct obstack table_obstack;
struct obstack defines_obstack;
struct obstack guard_obstack;
+struct obstack output_obstack;
char *spec_outfile; /* for -o. */
char *spec_file_prefix; /* for -b. */
base_length = strlen (spec_outfile);
if (strsuffix (spec_outfile, ".c"))
base_length -= 2;
+ base_name = strndup (spec_outfile, base_length);
/* SHORT_BASE_LENGTH includes neither ".tab" nor ".c". */
short_base_length = base_length;
- if (strsuffix (spec_outfile, ".tab") || strsuffix (spec_outfile, "_tab"))
+ if (strsuffix (base_name, ".tab") || strsuffix (base_name, "_tab"))
short_base_length -= 4;
- base_name = strndup (spec_outfile, base_length);
short_base_name = strndup (spec_outfile, short_base_length);
return;
finput = xfopen (infile, "r");
- if (verbose_flag)
- /* We used to use just .out if spec_name_prefix (-p) was used, but
- that conflicts with Posix. */
- foutput = xfopen (stringappend (short_base_name, EXT_OUTPUT), "w");
-
attrsfile = stringappend (short_base_name, EXT_STYPE_H);
/* Initialize the obstacks. */
obstack_init (&table_obstack);
obstack_init (&defines_obstack);
obstack_init (&guard_obstack);
+ obstack_init (&output_obstack);
}
output_files (void)
{
xfclose (finput);
- xfclose (foutput);
/* Output the main file. */
if (spec_outfile)
obstack_save (&guard_obstack,
stringappend (short_base_name, EXT_GUARD_C));
}
+
+ if (verbose_flag)
+ /* We used to use just .out if spec_name_prefix (-p) was used, but
+ that conflicts with Posix. */
+ obstack_save (&output_obstack, stringappend (short_base_name, EXT_OUTPUT));
}