-#ifdef VMS
- attrsfile = stringappend(name_base, short_base_length, "_stype.h");
- guardfile = stringappend(name_base, short_base_length, "_guard.c");
-#else
-#ifdef MSDOS
- attrsfile = stringappend(name_base, short_base_length, ".sth");
- guardfile = stringappend(name_base, short_base_length, ".guc");
-#else
- attrsfile = stringappend(name_base, short_base_length, ".stype.h");
- guardfile = stringappend(name_base, short_base_length, ".guard.c");
-#endif /* not MSDOS */
-#endif /* not VMS */
+ ext_index = get_extension_index (name_base);
+ /* if the initial segment of extension contains a 'y' or a 'Y', I assume
+ that it is a yacc or bison grammar file */
+ if (ext_index)
+ ext_index = (strspn(name_base + ext_index + 1, "yY")) ? ext_index : 0;
+ if (ext_index)
+ {
+ base_length -= strlen (name_base + ext_index);
+ compute_exts_from_gf(name_base + ext_index);
+ }
+
+ short_base_length = base_length;
+ short_base_name = strndup (name_base, short_base_length);
+
+ base_name = XMALLOC (char,
+ strlen (short_base_name) + strlen (EXT_TAB) + 1);
+ stpcpy (stpcpy (base_name, short_base_name), EXT_TAB);
+
+ return;
+ }
+}
+
+/*-----------------------------------------------------------------.
+| Open the input file. Look for the skeletons. Find the names of |
+| the output files. Prepare the obstacks. |
+`-----------------------------------------------------------------*/
+
+void
+open_files (void)
+{
+ finput = xfopen (infile, "r");
+
+ /* Initialize the obstacks. */
+ obstack_init (&action_obstack);
+ obstack_init (&attrs_obstack);
+ obstack_init (&table_obstack);
+ obstack_init (&defines_obstack);
+ obstack_init (&guard_obstack);
+ obstack_init (&output_obstack);
+ obstack_init (&graph_obstack);