#include <c-strcase.h>
#include <configmake.h>
#include <error.h>
-#include <quotearg.h>
/* Hack to get <getopt.h> to declare getopt with a prototype. */
#if lint && ! defined __GNU_LIBRARY__
# undef HACK_FOR___GNU_LIBRARY___PROTOTYPE
#endif
+#include <progname.h>
+
#include "complain.h"
#include "files.h"
#include "getargs.h"
#include "muscle-tab.h"
+#include "quote.h"
#include "uniqstr.h"
bool defines_flag;
struct bison_language const *language = &valid_languages[0];
const char *include = NULL;
-char *program_name;
-
/** Decode an option's set of keys.
*
args = strtok (args, ",");
while (args)
{
- int no = strncmp (args, "no-", 3) == 0 ? 3 : 0;
+ int no = STRPREFIX_LIT ("no-", args) ? 3 : 0;
int value = XARGMATCH (option, args + no, keys, values);
if (value == 0)
{
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));
}
/*----------------------.
case 'F': /* -FNAME[=VALUE]. */
{
char* name = optarg;
- char* value = mbschr (optarg, '=');
+ char* value = strchr (optarg, '=');
if (value)
*value++ = 0;
muscle_percent_define_insert (name, command_line_location (),
/* 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':
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':
exit (EXIT_SUCCESS);
case PRINT_DATADIR_OPTION:
- printf ("%s\n", compute_pkgdatadir ());
+ printf ("%s\n", pkgdatadir ());
exit (EXIT_SUCCESS);
case REPORT_FILE_OPTION:
+ free (spec_verbose_file);
spec_verbose_file = xstrdup (AS_FILE_NAME (optarg));
break;
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);
}