-#ifdef MSDOS
- strlwr (spec_outfile);
-#endif /* MSDOS */
- /* BASE_LENGTH includes ".tab" but not ".c". */
- base_length = strlen (spec_outfile);
-
- ext_index = get_extension_index (spec_outfile);
- /* if the initial segment of extension contains 'c' or a 'C', I assume
- that it is a C or C++ source file */
- if (ext_index)
- ext_index = (strspn(spec_outfile + ext_index + 1, "cC")) ? ext_index : 0;
- if (ext_index)
- {
- base_length -= strlen (spec_outfile + ext_index);
- compute_exts_from_src(spec_outfile + ext_index);
- }
-
- base_name = strndup (spec_outfile, base_length);
- /* SHORT_BASE_LENGTH includes neither ".tab" nor ".c". */
- short_base_length = base_length;
- if (strsuffix (base_name, ".tab") || strsuffix (base_name, "_tab"))
- short_base_length -= 4;
- short_base_name = strndup (spec_outfile, short_base_length);
-
- return;
- }
-
- /* If --file-prefix=foo was specified, BASE_NAME and SHORT_BASE_NAME
- are `foo'.
-
- Construct names from it. */
- if (spec_file_prefix)
- {
-#ifdef MSDOS
- strlwr (spec_file_prefix);
-#endif /* MSDOS */
- short_base_name = xstrdup (spec_file_prefix);
- base_name = XMALLOC (char,
- strlen (short_base_name) + strlen (EXT_TAB) + 1);
- stpcpy (stpcpy (base_name, short_base_name), EXT_TAB);
-
- return;
- }
-
- /* If neither -o nor --file-prefix were specified, and the input
- file is foo.y, BASE_NAME is `foo.tab', and SHORT_BASE_NAME is
- `foo'.