Commit 61ff2bdc by Joseph Myers Committed by Joseph Myers

common.opt (o): Add MissingArgError.

	* common.opt (o): Add MissingArgError.
	* doc/options.texi (MissingArgError): Document.
	* hooks.c (hook_bool_constcharptr_size_t_false): Remove.
	* hooks.h (hook_bool_constcharptr_size_t_false): Remove.
	* langhooks-def.h (LANG_HOOKS_MISSING_ARGUMENT): Remove.
	(LANG_HOOKS_INITIALIZER): Remove missing_argument hook
	initializer.
	* langhooks.h (struct lang_hooks): Remove missing_argument.
	* optc-gen.awk: Handle MissingArgError and output new structure
	field initializers.
	* opts.c (read_cmdline_option): Use missing_argument_error field
	instead of missing_argument langhook.
	* opts.h (struct cl_option): Add missing_argument_error field.
	* system.h (LANG_HOOKS_MISSING_ARGUMENT): Poison.

c-family:
	* c-common.h (c_common_missing_argument): Remove.
	* c-opts.c (c_common_missing_argument): Remove.
	* c.opt (A, D, F, I, MD, MMD, MQ, MT, U, fconstant-string-class=,
	idirafter, imacros, include, isysroot, isystem, iquote): Add
	MissingArgError.
	* c-objc-common.h (LANG_HOOKS_MISSING_ARGUMENT): Remove.

cp:
	* cp-objcp-common.h (LANG_HOOKS_MISSING_ARGUMENT): Remove.

po:
	* exgettext: Also extract MissingArgError texts from .opt files.

From-SVN: r162571
parent 4e98bcaf
2010-07-27 Joseph Myers <joseph@codesourcery.com>
* common.opt (o): Add MissingArgError.
* doc/options.texi (MissingArgError): Document.
* hooks.c (hook_bool_constcharptr_size_t_false): Remove.
* hooks.h (hook_bool_constcharptr_size_t_false): Remove.
* langhooks-def.h (LANG_HOOKS_MISSING_ARGUMENT): Remove.
(LANG_HOOKS_INITIALIZER): Remove missing_argument hook
initializer.
* langhooks.h (struct lang_hooks): Remove missing_argument.
* optc-gen.awk: Handle MissingArgError and output new structure
field initializers.
* opts.c (read_cmdline_option): Use missing_argument_error field
instead of missing_argument langhook.
* opts.h (struct cl_option): Add missing_argument_error field.
* system.h (LANG_HOOKS_MISSING_ARGUMENT): Poison.
2010-07-27 Iain Sandoe <iains@gcc.gnu.org> 2010-07-27 Iain Sandoe <iains@gcc.gnu.org>
PR target/29090 PR target/29090
......
2010-07-27 Joseph Myers <joseph@codesourcery.com> 2010-07-27 Joseph Myers <joseph@codesourcery.com>
* c-common.h (c_common_missing_argument): Remove.
* c-opts.c (c_common_missing_argument): Remove.
* c.opt (A, D, F, I, MD, MMD, MQ, MT, U, fconstant-string-class=,
idirafter, imacros, include, isysroot, isystem, iquote): Add
MissingArgError.
* c-objc-common.h (LANG_HOOKS_MISSING_ARGUMENT): Remove.
2010-07-27 Joseph Myers <joseph@codesourcery.com>
* c-common.h (c_common_option_lang_mask, * c-common.h (c_common_option_lang_mask,
c_common_initialize_diagnostics, c_common_complain_wrong_lang_p): c_common_initialize_diagnostics, c_common_complain_wrong_lang_p):
New. New.
......
...@@ -659,7 +659,6 @@ extern tree handle_format_attribute (tree *, tree, tree, int, bool *); ...@@ -659,7 +659,6 @@ extern tree handle_format_attribute (tree *, tree, tree, int, bool *);
extern tree handle_format_arg_attribute (tree *, tree, tree, int, bool *); extern tree handle_format_arg_attribute (tree *, tree, tree, int, bool *);
extern bool attribute_takes_identifier_p (const_tree); extern bool attribute_takes_identifier_p (const_tree);
extern int c_common_handle_option (size_t code, const char *arg, int value, int kind); extern int c_common_handle_option (size_t code, const char *arg, int value, int kind);
extern bool c_common_missing_argument (const char *opt, size_t code);
extern tree c_common_type_for_mode (enum machine_mode, int); extern tree c_common_type_for_mode (enum machine_mode, int);
extern tree c_common_type_for_size (unsigned int, int); extern tree c_common_type_for_size (unsigned int, int);
extern tree c_common_fixed_point_type_for_size (unsigned int, unsigned int, extern tree c_common_fixed_point_type_for_size (unsigned int, unsigned int,
......
...@@ -135,59 +135,6 @@ static struct deferred_opt ...@@ -135,59 +135,6 @@ static struct deferred_opt
static const unsigned int static const unsigned int
c_family_lang_mask = (CL_C | CL_CXX | CL_ObjC | CL_ObjCXX); c_family_lang_mask = (CL_C | CL_CXX | CL_ObjC | CL_ObjCXX);
/* Complain that switch CODE expects an argument but none was
provided. OPT was the command-line option. Return FALSE to get
the default message in opts.c, TRUE if we provide a specialized
one. */
bool
c_common_missing_argument (const char *opt, size_t code)
{
switch (code)
{
default:
/* Pick up the default message. */
return false;
case OPT_fconstant_string_class_:
error ("no class name specified with %qs", opt);
break;
case OPT_A:
error ("assertion missing after %qs", opt);
break;
case OPT_D:
case OPT_U:
error ("macro name missing after %qs", opt);
break;
case OPT_F:
case OPT_I:
case OPT_idirafter:
case OPT_isysroot:
case OPT_isystem:
case OPT_iquote:
error ("missing path after %qs", opt);
break;
case OPT_MF:
case OPT_MD:
case OPT_MMD:
case OPT_include:
case OPT_imacros:
case OPT_o:
error ("missing filename after %qs", opt);
break;
case OPT_MQ:
case OPT_MT:
error ("missing makefile target after %qs", opt);
break;
}
return true;
}
/* Defer option CODE with argument ARG. */ /* Defer option CODE with argument ARG. */
static void static void
defer_opt (enum opt_code code, const char *arg) defer_opt (enum opt_code code, const char *arg)
......
...@@ -38,7 +38,7 @@ ObjC++ ...@@ -38,7 +38,7 @@ ObjC++
C ObjC C++ ObjC++ Joined Separate C ObjC C++ ObjC++ Joined Separate
A A
C ObjC C++ ObjC++ Joined Separate C ObjC C++ ObjC++ Joined Separate MissingArgError(assertion missing after %qs)
-A<question>=<answer> Assert the <answer> to <question>. Putting '-' before <question> disables the <answer> to <question> -A<question>=<answer> Assert the <answer> to <question>. Putting '-' before <question> disables the <answer> to <question>
C C
...@@ -50,14 +50,14 @@ C ObjC C++ ObjC++ ...@@ -50,14 +50,14 @@ C ObjC C++ ObjC++
Do not discard comments in macro expansions Do not discard comments in macro expansions
D D
C ObjC C++ ObjC++ Joined Separate C ObjC C++ ObjC++ Joined Separate MissingArgError(macro name missing after %qs)
-D<macro>[=<val>] Define a <macro> with <val> as its value. If just <macro> is given, <val> is taken to be 1 -D<macro>[=<val>] Define a <macro> with <val> as its value. If just <macro> is given, <val> is taken to be 1
E E
C ObjC C++ ObjC++ Undocumented Var(flag_preprocess_only) C ObjC C++ ObjC++ Undocumented Var(flag_preprocess_only)
F F
C ObjC C++ ObjC++ Joined Separate C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
-F <dir> Add <dir> to the end of the main framework include path -F <dir> Add <dir> to the end of the main framework include path
H H
...@@ -65,7 +65,7 @@ C ObjC C++ ObjC++ ...@@ -65,7 +65,7 @@ C ObjC C++ ObjC++
Print the name of header files as they are used Print the name of header files as they are used
I I
C ObjC C++ ObjC++ Joined Separate C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
-I <dir> Add <dir> to the end of the main include path -I <dir> Add <dir> to the end of the main include path
M M
...@@ -73,11 +73,11 @@ C ObjC C++ ObjC++ ...@@ -73,11 +73,11 @@ C ObjC C++ ObjC++
Generate make dependencies Generate make dependencies
MD MD
C ObjC C++ ObjC++ Separate C ObjC C++ ObjC++ Separate MissingArgError(missing filename after %qs)
Generate make dependencies and compile Generate make dependencies and compile
MF MF
C ObjC C++ ObjC++ Joined Separate C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
-MF <file> Write dependency output to the given file -MF <file> Write dependency output to the given file
MG MG
...@@ -89,7 +89,7 @@ C ObjC C++ ObjC++ ...@@ -89,7 +89,7 @@ C ObjC C++ ObjC++
Like -M but ignore system header files Like -M but ignore system header files
MMD MMD
C ObjC C++ ObjC++ Separate C ObjC C++ ObjC++ Separate MissingArgError(missing filename after %qs)
Like -MD but ignore system header files Like -MD but ignore system header files
MP MP
...@@ -97,11 +97,11 @@ C ObjC C++ ObjC++ ...@@ -97,11 +97,11 @@ C ObjC C++ ObjC++
Generate phony targets for all headers Generate phony targets for all headers
MQ MQ
C ObjC C++ ObjC++ Joined Separate C ObjC C++ ObjC++ Joined Separate MissingArgError(missing makefile target after %qs)
-MQ <target> Add a MAKE-quoted target -MQ <target> Add a MAKE-quoted target
MT MT
C ObjC C++ ObjC++ Joined Separate C ObjC C++ ObjC++ Joined Separate MissingArgError(missing makefile target after %qs)
-MT <target> Add an unquoted target -MT <target> Add an unquoted target
P P
...@@ -109,7 +109,7 @@ C ObjC C++ ObjC++ ...@@ -109,7 +109,7 @@ C ObjC C++ ObjC++
Do not generate #line directives Do not generate #line directives
U U
C ObjC C++ ObjC++ Joined Separate C ObjC C++ ObjC++ Joined Separate MissingArgError(macro name missing after %qs)
-U<macro> Undefine <macro> -U<macro> Undefine <macro>
Wabi Wabi
...@@ -564,7 +564,7 @@ C++ ObjC++ Var(flag_conserve_space) ...@@ -564,7 +564,7 @@ C++ ObjC++ Var(flag_conserve_space)
Reduce the size of object files Reduce the size of object files
fconstant-string-class= fconstant-string-class=
ObjC ObjC++ Joined ObjC ObjC++ Joined MissingArgError(no class name specified with %qs)
-fconst-string-class=<name> Use class <name> for constant strings -fconst-string-class=<name> Use class <name> for constant strings
fdeduce-init-list fdeduce-init-list
...@@ -886,11 +886,11 @@ C ObjC C++ ObjC++ Joined ...@@ -886,11 +886,11 @@ C ObjC C++ ObjC++ Joined
-femit-struct-debug-detailed=<spec-list> Detailed reduced debug info for structs -femit-struct-debug-detailed=<spec-list> Detailed reduced debug info for structs
idirafter idirafter
C ObjC C++ ObjC++ Joined Separate C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
-idirafter <dir> Add <dir> to the end of the system include path -idirafter <dir> Add <dir> to the end of the system include path
imacros imacros
C ObjC C++ ObjC++ Joined Separate C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
-imacros <file> Accept definition of macros in <file> -imacros <file> Accept definition of macros in <file>
imultilib imultilib
...@@ -898,7 +898,7 @@ C ObjC C++ ObjC++ Joined Separate ...@@ -898,7 +898,7 @@ C ObjC C++ ObjC++ Joined Separate
-imultilib <dir> Set <dir> to be the multilib include subdirectory -imultilib <dir> Set <dir> to be the multilib include subdirectory
include include
C ObjC C++ ObjC++ Joined Separate C ObjC C++ ObjC++ Joined Separate MissingArgError(missing filename after %qs)
-include <file> Include the contents of <file> before other files -include <file> Include the contents of <file> before other files
iprefix iprefix
...@@ -906,15 +906,15 @@ C ObjC C++ ObjC++ Joined Separate ...@@ -906,15 +906,15 @@ C ObjC C++ ObjC++ Joined Separate
-iprefix <path> Specify <path> as a prefix for next two options -iprefix <path> Specify <path> as a prefix for next two options
isysroot isysroot
C ObjC C++ ObjC++ Joined Separate C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
-isysroot <dir> Set <dir> to be the system root directory -isysroot <dir> Set <dir> to be the system root directory
isystem isystem
C ObjC C++ ObjC++ Joined Separate C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
-isystem <dir> Add <dir> to the start of the system include path -isystem <dir> Add <dir> to the start of the system include path
iquote iquote
C ObjC C++ ObjC++ Joined Separate C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
-iquote <dir> Add <dir> to the end of the quote include path -iquote <dir> Add <dir> to the end of the quote include path
iwithprefix iwithprefix
......
...@@ -39,8 +39,6 @@ along with GCC; see the file COPYING3. If not see ...@@ -39,8 +39,6 @@ along with GCC; see the file COPYING3. If not see
#define LANG_HOOKS_INITIALIZE_DIAGNOSTICS c_initialize_diagnostics #define LANG_HOOKS_INITIALIZE_DIAGNOSTICS c_initialize_diagnostics
#undef LANG_HOOKS_HANDLE_OPTION #undef LANG_HOOKS_HANDLE_OPTION
#define LANG_HOOKS_HANDLE_OPTION c_common_handle_option #define LANG_HOOKS_HANDLE_OPTION c_common_handle_option
#undef LANG_HOOKS_MISSING_ARGUMENT
#define LANG_HOOKS_MISSING_ARGUMENT c_common_missing_argument
#undef LANG_HOOKS_POST_OPTIONS #undef LANG_HOOKS_POST_OPTIONS
#define LANG_HOOKS_POST_OPTIONS c_common_post_options #define LANG_HOOKS_POST_OPTIONS c_common_post_options
#undef LANG_HOOKS_GET_ALIAS_SET #undef LANG_HOOKS_GET_ALIAS_SET
......
...@@ -1584,7 +1584,7 @@ Common Joined Var(plugindir_string) Init(0) ...@@ -1584,7 +1584,7 @@ Common Joined Var(plugindir_string) Init(0)
-iplugindir=<dir> Set <dir> to be the default plugin directory -iplugindir=<dir> Set <dir> to be the default plugin directory
o o
Common Joined Separate Common Joined Separate MissingArgError(missing filename after %qs)
-o <file> Place output into <file> -o <file> Place output into <file>
p p
......
2010-07-27 Joseph Myers <joseph@codesourcery.com> 2010-07-27 Joseph Myers <joseph@codesourcery.com>
* cp-objcp-common.h (LANG_HOOKS_MISSING_ARGUMENT): Remove.
2010-07-27 Joseph Myers <joseph@codesourcery.com>
* cp-objcp-common.c (cxx_initialize_diagnostics): First call * cp-objcp-common.c (cxx_initialize_diagnostics): First call
c_common_initialize_diagnostics. c_common_initialize_diagnostics.
* cp-objcp-common.h (LANG_HOOKS_OPTION_LANG_MASK, * cp-objcp-common.h (LANG_HOOKS_OPTION_LANG_MASK,
......
...@@ -53,8 +53,6 @@ extern bool cp_function_decl_explicit_p (tree decl); ...@@ -53,8 +53,6 @@ extern bool cp_function_decl_explicit_p (tree decl);
#define LANG_HOOKS_HANDLE_OPTION c_common_handle_option #define LANG_HOOKS_HANDLE_OPTION c_common_handle_option
#undef LANG_HOOKS_HANDLE_FILENAME #undef LANG_HOOKS_HANDLE_FILENAME
#define LANG_HOOKS_HANDLE_FILENAME c_common_handle_filename #define LANG_HOOKS_HANDLE_FILENAME c_common_handle_filename
#undef LANG_HOOKS_MISSING_ARGUMENT
#define LANG_HOOKS_MISSING_ARGUMENT c_common_missing_argument
#undef LANG_HOOKS_POST_OPTIONS #undef LANG_HOOKS_POST_OPTIONS
#define LANG_HOOKS_POST_OPTIONS c_common_post_options #define LANG_HOOKS_POST_OPTIONS c_common_post_options
#undef LANG_HOOKS_GET_ALIAS_SET #undef LANG_HOOKS_GET_ALIAS_SET
......
@c Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 @c Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
@c Free Software Foundation, Inc. @c Free Software Foundation, Inc.
@c This is part of the GCC manual. @c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi. @c For copying conditions, see the file gcc.texi.
...@@ -135,6 +135,14 @@ it will be part of the same @code{argv} entry as the option itself. ...@@ -135,6 +135,14 @@ it will be part of the same @code{argv} entry as the option itself.
This property cannot be used alongside @code{Joined} or @code{Separate}. This property cannot be used alongside @code{Joined} or @code{Separate}.
@item MissingArgError(@var{message})
For an option marked @code{Joined} or @code{Separate}, the message
@var{message} will be used as an error message if the mandatory
argument is missing; for options without @code{MissingArgError}, a
generic error message is used. @var{message} should contain a single
@samp{%qs} format, which will be used to format the name of the option
passed.
@item UInteger @item UInteger
The option's argument is a non-negative integer. The option parser The option's argument is a non-negative integer. The option parser
will check and convert the argument before passing it to the relevant will check and convert the argument before passing it to the relevant
......
...@@ -119,13 +119,6 @@ hook_bool_const_tree_hwi_hwi_const_tree_true (const_tree a ATTRIBUTE_UNUSED, ...@@ -119,13 +119,6 @@ hook_bool_const_tree_hwi_hwi_const_tree_true (const_tree a ATTRIBUTE_UNUSED,
} }
bool bool
hook_bool_constcharptr_size_t_false (const char *a ATTRIBUTE_UNUSED,
size_t b ATTRIBUTE_UNUSED)
{
return false;
}
bool
hook_bool_size_t_constcharptr_int_true (size_t a ATTRIBUTE_UNUSED, hook_bool_size_t_constcharptr_int_true (size_t a ATTRIBUTE_UNUSED,
const char *b ATTRIBUTE_UNUSED, const char *b ATTRIBUTE_UNUSED,
int c ATTRIBUTE_UNUSED) int c ATTRIBUTE_UNUSED)
......
...@@ -48,7 +48,6 @@ extern bool hook_bool_const_tree_hwi_hwi_const_tree_true (const_tree, ...@@ -48,7 +48,6 @@ extern bool hook_bool_const_tree_hwi_hwi_const_tree_true (const_tree,
extern bool hook_bool_rtx_false (rtx); extern bool hook_bool_rtx_false (rtx);
extern bool hook_bool_uintp_uintp_false (unsigned int *, unsigned int *); extern bool hook_bool_uintp_uintp_false (unsigned int *, unsigned int *);
extern bool hook_bool_rtx_int_int_intp_bool_false (rtx, int, int, int *, bool); extern bool hook_bool_rtx_int_int_intp_bool_false (rtx, int, int, int *, bool);
extern bool hook_bool_constcharptr_size_t_false (const char *, size_t);
extern bool hook_bool_size_t_constcharptr_int_true (size_t, const char *, int); extern bool hook_bool_size_t_constcharptr_int_true (size_t, const char *, int);
extern bool hook_bool_tree_tree_false (tree, tree); extern bool hook_bool_tree_tree_false (tree, tree);
extern bool hook_bool_tree_tree_true (tree, tree); extern bool hook_bool_tree_tree_true (tree, tree);
......
...@@ -90,7 +90,6 @@ extern void lhd_omp_firstprivatize_type_sizes (struct gimplify_omp_ctx *, ...@@ -90,7 +90,6 @@ extern void lhd_omp_firstprivatize_type_sizes (struct gimplify_omp_ctx *,
#define LANG_HOOKS_INITIALIZE_DIAGNOSTICS lhd_initialize_diagnostics #define LANG_HOOKS_INITIALIZE_DIAGNOSTICS lhd_initialize_diagnostics
#define LANG_HOOKS_COMPLAIN_WRONG_LANG_P lhd_complain_wrong_lang_p #define LANG_HOOKS_COMPLAIN_WRONG_LANG_P lhd_complain_wrong_lang_p
#define LANG_HOOKS_HANDLE_OPTION hook_int_size_t_constcharptr_int_0 #define LANG_HOOKS_HANDLE_OPTION hook_int_size_t_constcharptr_int_0
#define LANG_HOOKS_MISSING_ARGUMENT hook_bool_constcharptr_size_t_false
#define LANG_HOOKS_POST_OPTIONS lhd_post_options #define LANG_HOOKS_POST_OPTIONS lhd_post_options
#define LANG_HOOKS_MISSING_NORETURN_OK_P hook_bool_tree_true #define LANG_HOOKS_MISSING_NORETURN_OK_P hook_bool_tree_true
#define LANG_HOOKS_GET_ALIAS_SET lhd_get_alias_set #define LANG_HOOKS_GET_ALIAS_SET lhd_get_alias_set
...@@ -268,7 +267,6 @@ extern void lhd_end_section (void); ...@@ -268,7 +267,6 @@ extern void lhd_end_section (void);
LANG_HOOKS_INITIALIZE_DIAGNOSTICS, \ LANG_HOOKS_INITIALIZE_DIAGNOSTICS, \
LANG_HOOKS_COMPLAIN_WRONG_LANG_P, \ LANG_HOOKS_COMPLAIN_WRONG_LANG_P, \
LANG_HOOKS_HANDLE_OPTION, \ LANG_HOOKS_HANDLE_OPTION, \
LANG_HOOKS_MISSING_ARGUMENT, \
LANG_HOOKS_POST_OPTIONS, \ LANG_HOOKS_POST_OPTIONS, \
LANG_HOOKS_INIT, \ LANG_HOOKS_INIT, \
LANG_HOOKS_FINISH, \ LANG_HOOKS_FINISH, \
......
...@@ -298,10 +298,6 @@ struct lang_hooks ...@@ -298,10 +298,6 @@ struct lang_hooks
valid and should not be treated as language-independent too. */ valid and should not be treated as language-independent too. */
int (*handle_option) (size_t code, const char *arg, int value, int kind); int (*handle_option) (size_t code, const char *arg, int value, int kind);
/* Return false to use the default complaint about a missing
argument, otherwise output a complaint and return true. */
bool (*missing_argument) (const char *opt, size_t code);
/* Called when all command line options have been parsed to allow /* Called when all command line options have been parsed to allow
further processing and initialization further processing and initialization
......
...@@ -194,6 +194,12 @@ for (i = 0; i < n_opts; i++) { ...@@ -194,6 +194,12 @@ for (i = 0; i < n_opts; i++) {
else else
hlp = quote help[i] quote; hlp = quote help[i] quote;
missing_arg_error = opt_args("MissingArgError", flags[i])
if (missing_arg_error == "")
missing_arg_error = "0"
else
missing_arg_error = quote missing_arg_error quote
neg = opt_args("Negative", flags[i]); neg = opt_args("Negative", flags[i]);
if (neg != "") if (neg != "")
idx = indices[neg] idx = indices[neg]
...@@ -209,8 +215,9 @@ for (i = 0; i < n_opts; i++) { ...@@ -209,8 +215,9 @@ for (i = 0; i < n_opts; i++) {
} }
# Split the printf after %u to work around an ia64-hp-hpux11.23 # Split the printf after %u to work around an ia64-hp-hpux11.23
# awk bug. # awk bug.
printf(" { %c-%s%c,\n %s,\n %s, %u,", printf(" { %c-%s%c,\n %s,\n %s,\n %s, %u,",
quote, opts[i], quote, hlp, back_chain[i], len) quote, opts[i], quote, hlp, missing_arg_error,
back_chain[i], len)
printf(" %d,\n", idx) printf(" %d,\n", idx)
condition = opt_args("Condition", flags[i]) condition = opt_args("Condition", flags[i])
cl_flags = switch_flags(flags[i]) cl_flags = switch_flags(flags[i])
......
...@@ -547,7 +547,9 @@ read_cmdline_option (struct cl_decoded_option *decoded, ...@@ -547,7 +547,9 @@ read_cmdline_option (struct cl_decoded_option *decoded,
if (decoded->errors & CL_ERR_MISSING_ARG) if (decoded->errors & CL_ERR_MISSING_ARG)
{ {
if (!lang_hooks.missing_argument (opt, decoded->opt_index)) if (option->missing_argument_error)
error (option->missing_argument_error, opt);
else
error ("missing argument to %qs", opt); error ("missing argument to %qs", opt);
return; return;
} }
......
...@@ -44,6 +44,7 @@ struct cl_option ...@@ -44,6 +44,7 @@ struct cl_option
{ {
const char *opt_text; const char *opt_text;
const char *help; const char *help;
const char *missing_argument_error;
unsigned short back_chain; unsigned short back_chain;
unsigned char opt_len; unsigned char opt_len;
int neg_index; int neg_index;
......
2010-07-27 Joseph Myers <joseph@codesourcery.com>
* exgettext: Also extract MissingArgError texts from .opt files.
2010-06-29 Joern Rennecke <joern.rennecke@embecosm.com> 2010-06-29 Joern Rennecke <joern.rennecke@embecosm.com>
PR other/44034 PR other/44034
......
#! /bin/sh #! /bin/sh
# Wrapper around gettext for programs using the msgid convention. # Wrapper around gettext for programs using the msgid convention.
# Copyright 1998, 2001, 2002, 2003, 2009 Free Software Foundation, Inc. # Copyright 1998, 2001, 2002, 2003, 2009, 2010 Free Software Foundation, Inc.
# Written by Paul Eggert <eggert@twinsun.com>. # Written by Paul Eggert <eggert@twinsun.com>.
# Revised by Zack Weinberg <zackw@stanford.edu> for no-POTFILES operation. # Revised by Zack Weinberg <zackw@stanford.edu> for no-POTFILES operation.
...@@ -223,6 +223,13 @@ echo "scanning option files..." >&2 ...@@ -223,6 +223,13 @@ echo "scanning option files..." >&2
if (/^[ \t]*(;|$)/ || !/^[^ \t]/) { if (/^[ \t]*(;|$)/ || !/^[^ \t]/) {
field = 0 field = 0
} else { } else {
if ((field == 1) && /MissingArgError/) {
line = $0
sub(".*MissingArgError\\(", "", line)
sub("\\).*", "", line)
printf("#line %d \"%s\"\n", lineno, file)
printf("_(\"%s\")\n", line)
}
if (field == 2) { if (field == 2) {
line = $0 line = $0
printf("#line %d \"%s\"\n", lineno, file) printf("#line %d \"%s\"\n", lineno, file)
......
...@@ -779,7 +779,8 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN; ...@@ -779,7 +779,8 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
LANG_HOOKS_PUSHLEVEL LANG_HOOKS_SET_BLOCK \ LANG_HOOKS_PUSHLEVEL LANG_HOOKS_SET_BLOCK \
LANG_HOOKS_MAYBE_BUILD_CLEANUP LANG_HOOKS_UPDATE_DECL_AFTER_SAVING \ LANG_HOOKS_MAYBE_BUILD_CLEANUP LANG_HOOKS_UPDATE_DECL_AFTER_SAVING \
LANG_HOOKS_POPLEVEL LANG_HOOKS_TRUTHVALUE_CONVERSION \ LANG_HOOKS_POPLEVEL LANG_HOOKS_TRUTHVALUE_CONVERSION \
TARGET_PROMOTE_FUNCTION_ARGS TARGET_PROMOTE_FUNCTION_RETURN TARGET_PROMOTE_FUNCTION_ARGS TARGET_PROMOTE_FUNCTION_RETURN \
LANG_HOOKS_MISSING_ARGUMENT
/* Miscellaneous macros that are no longer used. */ /* Miscellaneous macros that are no longer used. */
#pragma GCC poison USE_MAPPED_LOCATION #pragma GCC poison USE_MAPPED_LOCATION
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment