X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/abf3f74b216c0ef4a5195ae1a5ebb7123b672387..d0d3313d10a28aa6fe77f158d61b84424aa9b3ce:/src/getargs.c?ds=sidebyside diff --git a/src/getargs.c b/src/getargs.c index 62147d49..599cbbad 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. * @@ -311,10 +311,11 @@ Parser:\n\ -S, --skeleton=FILE specify the skeleton to use\n\ -t, --debug instrument the parser for debugging\n\ --locations enable location support\n\ - -D, --define=NAME[=VALUE] similar to `%define NAME \"VALUE\"'\n\ - -F, --force-define=NAME[=VALUE] override `%define NAME \"VALUE\"'\n\ + -D, --define=NAME[=VALUE] similar to '%define NAME \"VALUE\"'\n\ + -F, --force-define=NAME[=VALUE] override '%define NAME \"VALUE\"'\n\ -p, --name-prefix=PREFIX prepend PREFIX to the external symbols\n\ - -l, --no-lines don't generate `#line' directives\n\ + deprecated by '-Dapi.prefix=PREFIX'\n\ + -l, --no-lines don't generate '#line' directives\n\ -k, --token-table include a table of token names\n\ \n\ "), stdout); @@ -424,14 +425,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 +607,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 +656,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 +679,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 +690,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); }