X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/abf3f74b216c0ef4a5195ae1a5ebb7123b672387..9bcffa0c13d1abee13433f14cdb785cbb960425c:/src/getargs.c diff --git a/src/getargs.c b/src/getargs.c index 62147d49..3fa2a7af 100644 --- a/src/getargs.c +++ b/src/getargs.c @@ -26,7 +26,6 @@ #include #include #include -#include /* Hack to get to declare getopt with a prototype. */ #if lint && ! defined __GNU_LIBRARY__ @@ -41,10 +40,13 @@ # undef HACK_FOR___GNU_LIBRARY___PROTOTYPE #endif +#include + #include "complain.h" #include "files.h" #include "getargs.h" #include "muscle-tab.h" +#include "quote.h" #include "uniqstr.h" bool debug_flag; @@ -79,8 +81,6 @@ int language_prio = default_prio; struct bison_language const *language = &valid_languages[0]; const char *include = NULL; -char *program_name; - /** Decode an option's set of keys. * @@ -424,14 +424,14 @@ language_argmatch (char const *arg, int prio, location loc) language = &valid_languages[i]; return; } - msg = _("invalid language '%s'"); + msg = _("%s: invalid language"); } else if (language_prio == prio) msg = _("multiple language declarations are invalid"); else return; - complain_at (loc, msg, arg); + complain_at (loc, msg, quotearg_colon (arg)); } /*----------------------. @@ -606,13 +606,19 @@ getargs (int argc, char *argv[]) /* Here, the -d and --defines options are differentiated. */ defines_flag = true; if (optarg) - spec_defines_file = xstrdup (AS_FILE_NAME (optarg)); + { + free (spec_defines_file); + spec_defines_file = xstrdup (AS_FILE_NAME (optarg)); + } break; case 'g': graph_flag = true; if (optarg) - spec_graph_file = xstrdup (AS_FILE_NAME (optarg)); + { + free (spec_graph_file); + spec_graph_file = xstrdup (AS_FILE_NAME (optarg)); + } break; case 'h': @@ -649,7 +655,10 @@ getargs (int argc, char *argv[]) case 'x': xml_flag = true; if (optarg) - spec_xml_file = xstrdup (AS_FILE_NAME (optarg)); + { + free (spec_xml_file); + spec_xml_file = xstrdup (AS_FILE_NAME (optarg)); + } break; case 'y': @@ -669,6 +678,7 @@ getargs (int argc, char *argv[]) exit (EXIT_SUCCESS); case REPORT_FILE_OPTION: + free (spec_verbose_file); spec_verbose_file = xstrdup (AS_FILE_NAME (optarg)); break; @@ -679,9 +689,9 @@ getargs (int argc, char *argv[]) if (argc - optind != 1) { if (argc - optind < 1) - error (0, 0, _("missing operand after '%s'"), argv[argc - 1]); + error (0, 0, _("%s: missing operand"), quotearg_colon (argv[argc - 1])); else - error (0, 0, _("extra operand '%s'"), argv[optind + 1]); + error (0, 0, _("extra operand %s"), quote (argv[optind + 1])); usage (EXIT_FAILURE); }