exgettext: Handle gmsgid and cmsgid arguments specially, as gcc-internal-format and c-format.
gcc/po/ * exgettext: Handle gmsgid and cmsgid arguments specially, as gcc-internal-format and c-format. Because of xgettext bug, invoke xgettext once with --language=c, once with --language=GCC-source and then merge together. Fail if xgettext is not 0.14.5 or later. gcc/ * intl.h (G_): New macro. * rtl-error.c (error_for_asm, warning_for_asm): Use gmsgid instead of msgid for argument name. * tree-ssa.c (warn_uninit): Likewise. * c-parser.c (c_parser_error): Likewise. * config/rs6000/rs6000-c.c (SYNTAX_ERROR): Likewise. * config/darwin-c.c (BAD): Likewise. * config/c4x/c4x-c.c (BAD): Likewise. * c-pragma.c (GCC_BAD, GCC_BAD2): Likewise. * c-errors.c (pedwarn_c99, pedwarn_c90): Likewise. * c-common.c (c_parse_error): Likewise. * diagnostic.c (diagnostic_set_info, verbatim, inform, warning, warning0, pedwarn, error, sorry, fatal_error, internal_error): Likewise. (fnotice): Use cmsgid instead of msgid for argument name. * gcov.c (fnotice): Likewise. * protoize.c (notice): Likewise. * final.c (output_operand_lossage): Likewise. * gcc.c (fatal, notice): Likewise. (error): Use gmsgid instead of msgid for argument name. * collect2.c (notice, fatal_perror, fatal): Use cmsgid instead of msgid for argument name. (error): Use gmsgid instead of msgid for argument name. * c-decl.c (locate_old_decl, implicit_decl_warning): Use G_() instead of N_(). * c-typeck.c (readonly_error, convert_for_assignment): Likewise. * tree-inline.c (inline_forbidden_p_1): Likewise. * ABOUT-GCC-NLS: Require gettext 0.14.5 or later. Mention the new conventions for marking translations. * doc/install.texi: Mention gettext 0.14.5 or later requirement. gcc/cp/ * error.c (locate_error): Use gmsgid instead of msgid for argument name. (cp_error_at, cp_warning_at, cp_pedwarn_at): Likewise. gcc/java/ * jv-scan.c (fatal_error, warning, warning0): Use gmsgid instead of msgid for argument name. * gjavah.c (error): Likewise. * java-tree.h (parse_error_context): Likewise. * parse.y (parse_error_context, parse_warning_context, issue_warning_error_from_context): Likewise. From-SVN: r100676
This commit is contained in:
parent
6be74c4f5c
commit
4b794eaf73
|
@ -25,15 +25,22 @@ responsibility to translate the message before the user sees it.
|
|||
|
||||
By convention, any function parameter in the GCC sources whose name
|
||||
ends in `msgid' is expected to be a message requiring translation.
|
||||
For example, the `error' function's first parameter is named `msgid'.
|
||||
If the parameter name ends with `gmsgid', it is assumed to be a GCC
|
||||
diagnostics format string requiring translation, if it ends with
|
||||
`cmsgid', it is assumed to be a format string for `printf' family
|
||||
of functions, requiring a translation.
|
||||
For example, the `error' function's first parameter is named `gmsgid'.
|
||||
GCC's exgettext script uses this convention to determine which
|
||||
function parameter strings need to be translated. The exgettext
|
||||
script also assumes that any occurrence of `%eMSGID}' on a source
|
||||
line, where MSGID does not contain `%' or `}', corresponds to a
|
||||
message MSGID that requires translation; this is needed to identify
|
||||
diagnostics in GCC spec strings.
|
||||
The `G_(GMSGID)' macro defined in intl.h can be used to mark GCC diagnostics
|
||||
format strings as requiring translation, but other than that it is a
|
||||
no-op at runtime.
|
||||
|
||||
If you modify source files, you'll need at least version 0.10.37 of the
|
||||
If you modify source files, you'll need at least version 0.14.15 of the
|
||||
GNU gettext package to propagate the modifications to the translation
|
||||
tables.
|
||||
|
||||
|
|
|
@ -1,5 +1,36 @@
|
|||
2005-06-06 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* intl.h (G_): New macro.
|
||||
* rtl-error.c (error_for_asm, warning_for_asm): Use gmsgid
|
||||
instead of msgid for argument name.
|
||||
* tree-ssa.c (warn_uninit): Likewise.
|
||||
* c-parser.c (c_parser_error): Likewise.
|
||||
* config/rs6000/rs6000-c.c (SYNTAX_ERROR): Likewise.
|
||||
* config/darwin-c.c (BAD): Likewise.
|
||||
* config/c4x/c4x-c.c (BAD): Likewise.
|
||||
* c-pragma.c (GCC_BAD, GCC_BAD2): Likewise.
|
||||
* c-errors.c (pedwarn_c99, pedwarn_c90): Likewise.
|
||||
* c-common.c (c_parse_error): Likewise.
|
||||
* diagnostic.c (diagnostic_set_info, verbatim, inform, warning,
|
||||
warning0, pedwarn, error, sorry, fatal_error, internal_error):
|
||||
Likewise.
|
||||
(fnotice): Use cmsgid instead of msgid for argument name.
|
||||
* gcov.c (fnotice): Likewise.
|
||||
* protoize.c (notice): Likewise.
|
||||
* final.c (output_operand_lossage): Likewise.
|
||||
* gcc.c (fatal, notice): Likewise.
|
||||
(error): Use gmsgid instead of msgid for argument name.
|
||||
* collect2.c (notice, fatal_perror, fatal): Use cmsgid instead
|
||||
of msgid for argument name.
|
||||
(error): Use gmsgid instead of msgid for argument name.
|
||||
* c-decl.c (locate_old_decl, implicit_decl_warning): Use G_()
|
||||
instead of N_().
|
||||
* c-typeck.c (readonly_error, convert_for_assignment): Likewise.
|
||||
* tree-inline.c (inline_forbidden_p_1): Likewise.
|
||||
* ABOUT-GCC-NLS: Require gettext 0.14.5 or later. Mention the new
|
||||
conventions for marking translations.
|
||||
* doc/install.texi: Mention gettext 0.14.5 or later requirement.
|
||||
|
||||
* tree-chrec.c (reset_evolution_in_loop): Use build3 instead of
|
||||
build2.
|
||||
|
||||
|
|
|
@ -5520,51 +5520,51 @@ catenate_strings (const char *lhs, const char *rhs_start, int rhs_size)
|
|||
return result;
|
||||
}
|
||||
|
||||
/* Issue the error given by MSGID, indicating that it occurred before
|
||||
/* Issue the error given by GMSGID, indicating that it occurred before
|
||||
TOKEN, which had the associated VALUE. */
|
||||
|
||||
void
|
||||
c_parse_error (const char *msgid, enum cpp_ttype token, tree value)
|
||||
c_parse_error (const char *gmsgid, enum cpp_ttype token, tree value)
|
||||
{
|
||||
#define catenate_messages(M1, M2) catenate_strings ((M1), (M2), sizeof (M2))
|
||||
|
||||
char *message = NULL;
|
||||
|
||||
if (token == CPP_EOF)
|
||||
message = catenate_messages (msgid, " at end of input");
|
||||
message = catenate_messages (gmsgid, " at end of input");
|
||||
else if (token == CPP_CHAR || token == CPP_WCHAR)
|
||||
{
|
||||
unsigned int val = TREE_INT_CST_LOW (value);
|
||||
const char *const ell = (token == CPP_CHAR) ? "" : "L";
|
||||
if (val <= UCHAR_MAX && ISGRAPH (val))
|
||||
message = catenate_messages (msgid, " before %s'%c'");
|
||||
message = catenate_messages (gmsgid, " before %s'%c'");
|
||||
else
|
||||
message = catenate_messages (msgid, " before %s'\\x%x'");
|
||||
message = catenate_messages (gmsgid, " before %s'\\x%x'");
|
||||
|
||||
error (message, ell, val);
|
||||
free (message);
|
||||
message = NULL;
|
||||
}
|
||||
else if (token == CPP_STRING || token == CPP_WSTRING)
|
||||
message = catenate_messages (msgid, " before string constant");
|
||||
message = catenate_messages (gmsgid, " before string constant");
|
||||
else if (token == CPP_NUMBER)
|
||||
message = catenate_messages (msgid, " before numeric constant");
|
||||
message = catenate_messages (gmsgid, " before numeric constant");
|
||||
else if (token == CPP_NAME)
|
||||
{
|
||||
message = catenate_messages (msgid, " before %qE");
|
||||
message = catenate_messages (gmsgid, " before %qE");
|
||||
error (message, value);
|
||||
free (message);
|
||||
message = NULL;
|
||||
}
|
||||
else if (token < N_TTYPES)
|
||||
{
|
||||
message = catenate_messages (msgid, " before %qs token");
|
||||
message = catenate_messages (gmsgid, " before %qs token");
|
||||
error (message, cpp_type2name (token));
|
||||
free (message);
|
||||
message = NULL;
|
||||
}
|
||||
else
|
||||
error (msgid);
|
||||
error (gmsgid);
|
||||
|
||||
if (message)
|
||||
{
|
||||
|
|
|
@ -1131,11 +1131,11 @@ locate_old_decl (tree decl, void (*diag)(const char *, ...))
|
|||
if (TREE_CODE (decl) == FUNCTION_DECL && DECL_BUILT_IN (decl))
|
||||
;
|
||||
else if (DECL_INITIAL (decl))
|
||||
diag (N_("%Jprevious definition of %qD was here"), decl, decl);
|
||||
diag (G_("%Jprevious definition of %qD was here"), decl, decl);
|
||||
else if (C_DECL_IMPLICIT (decl))
|
||||
diag (N_("%Jprevious implicit declaration of %qD was here"), decl, decl);
|
||||
diag (G_("%Jprevious implicit declaration of %qD was here"), decl, decl);
|
||||
else
|
||||
diag (N_("%Jprevious declaration of %qD was here"), decl, decl);
|
||||
diag (G_("%Jprevious declaration of %qD was here"), decl, decl);
|
||||
}
|
||||
|
||||
/* Subroutine of duplicate_decls. Compare NEWDECL to OLDDECL.
|
||||
|
@ -2292,7 +2292,7 @@ implicit_decl_warning (tree id, tree olddecl)
|
|||
default: gcc_unreachable ();
|
||||
}
|
||||
|
||||
diag (N_("implicit declaration of function %qE"), id);
|
||||
diag (G_("implicit declaration of function %qE"), id);
|
||||
if (olddecl)
|
||||
locate_old_decl (olddecl, diag);
|
||||
}
|
||||
|
|
|
@ -32,13 +32,13 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
|||
/* Issue an ISO C99 pedantic warning MSGID. */
|
||||
|
||||
void
|
||||
pedwarn_c99 (const char *msgid, ...)
|
||||
pedwarn_c99 (const char *gmsgid, ...)
|
||||
{
|
||||
diagnostic_info diagnostic;
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
diagnostic_set_info (&diagnostic, msgid, &ap, input_location,
|
||||
va_start (ap, gmsgid);
|
||||
diagnostic_set_info (&diagnostic, gmsgid, &ap, input_location,
|
||||
flag_isoc99 ? pedantic_error_kind () : DK_WARNING);
|
||||
report_diagnostic (&diagnostic);
|
||||
va_end (ap);
|
||||
|
@ -50,13 +50,13 @@ pedwarn_c99 (const char *msgid, ...)
|
|||
(There is no flag_c90.) */
|
||||
|
||||
void
|
||||
pedwarn_c90 (const char *msgid, ...)
|
||||
pedwarn_c90 (const char *gmsgid, ...)
|
||||
{
|
||||
diagnostic_info diagnostic;
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
diagnostic_set_info (&diagnostic, msgid, &ap, input_location,
|
||||
va_start (ap, gmsgid);
|
||||
diagnostic_set_info (&diagnostic, gmsgid, &ap, input_location,
|
||||
flag_isoc99 ? DK_WARNING : pedantic_error_kind ());
|
||||
report_diagnostic (&diagnostic);
|
||||
va_end (ap);
|
||||
|
|
|
@ -635,18 +635,18 @@ c_parser_new (void)
|
|||
used. */
|
||||
|
||||
static void
|
||||
c_parser_error (c_parser *parser, const char *msgid)
|
||||
c_parser_error (c_parser *parser, const char *gmsgid)
|
||||
{
|
||||
c_token *token = c_parser_peek_token (parser);
|
||||
if (parser->error)
|
||||
return;
|
||||
parser->error = true;
|
||||
if (!msgid)
|
||||
if (!gmsgid)
|
||||
return;
|
||||
/* This diagnostic makes more sense if it is tagged to the line of
|
||||
the token we just peeked at. */
|
||||
c_parser_set_source_position_from_token (token);
|
||||
c_parse_error (msgid,
|
||||
c_parse_error (gmsgid,
|
||||
/* Because c_parse_error does not understand
|
||||
CPP_KEYWORD, keywords are treated like
|
||||
identifiers. */
|
||||
|
|
|
@ -37,8 +37,9 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
|||
#include "vec.h"
|
||||
#include "target.h"
|
||||
|
||||
#define GCC_BAD(msgid) do { warning (0, msgid); return; } while (0)
|
||||
#define GCC_BAD2(msgid, arg) do { warning (0, msgid, arg); return; } while (0)
|
||||
#define GCC_BAD(gmsgid) do { warning (0, gmsgid); return; } while (0)
|
||||
#define GCC_BAD2(gmsgid, arg) \
|
||||
do { warning (0, gmsgid, arg); return; } while (0)
|
||||
|
||||
typedef struct align_stack GTY(())
|
||||
{
|
||||
|
|
|
@ -2845,20 +2845,20 @@ readonly_error (tree arg, enum lvalue_use use)
|
|||
if (TYPE_READONLY (TREE_TYPE (TREE_OPERAND (arg, 0))))
|
||||
readonly_error (TREE_OPERAND (arg, 0), use);
|
||||
else
|
||||
error (READONLY_MSG (N_("assignment of read-only member %qD"),
|
||||
N_("increment of read-only member %qD"),
|
||||
N_("decrement of read-only member %qD")),
|
||||
error (READONLY_MSG (G_("assignment of read-only member %qD"),
|
||||
G_("increment of read-only member %qD"),
|
||||
G_("decrement of read-only member %qD")),
|
||||
TREE_OPERAND (arg, 1));
|
||||
}
|
||||
else if (TREE_CODE (arg) == VAR_DECL)
|
||||
error (READONLY_MSG (N_("assignment of read-only variable %qD"),
|
||||
N_("increment of read-only variable %qD"),
|
||||
N_("decrement of read-only variable %qD")),
|
||||
error (READONLY_MSG (G_("assignment of read-only variable %qD"),
|
||||
G_("increment of read-only variable %qD"),
|
||||
G_("decrement of read-only variable %qD")),
|
||||
arg);
|
||||
else
|
||||
error (READONLY_MSG (N_("assignment of read-only location"),
|
||||
N_("increment of read-only location"),
|
||||
N_("decrement of read-only location")));
|
||||
error (READONLY_MSG (G_("assignment of read-only location"),
|
||||
G_("increment of read-only location"),
|
||||
G_("decrement of read-only location")));
|
||||
}
|
||||
|
||||
|
||||
|
@ -3728,26 +3728,26 @@ convert_for_assignment (tree type, tree rhs, enum impl_conv errtype,
|
|||
function where an ordinary one is wanted, but not
|
||||
vice-versa. */
|
||||
if (TYPE_QUALS (ttl) & ~TYPE_QUALS (ttr))
|
||||
WARN_FOR_ASSIGNMENT (N_("passing argument %d of %qE "
|
||||
WARN_FOR_ASSIGNMENT (G_("passing argument %d of %qE "
|
||||
"makes qualified function "
|
||||
"pointer from unqualified"),
|
||||
N_("assignment makes qualified "
|
||||
G_("assignment makes qualified "
|
||||
"function pointer from "
|
||||
"unqualified"),
|
||||
N_("initialization makes qualified "
|
||||
G_("initialization makes qualified "
|
||||
"function pointer from "
|
||||
"unqualified"),
|
||||
N_("return makes qualified function "
|
||||
G_("return makes qualified function "
|
||||
"pointer from unqualified"));
|
||||
}
|
||||
else if (TYPE_QUALS (ttr) & ~TYPE_QUALS (ttl))
|
||||
WARN_FOR_ASSIGNMENT (N_("passing argument %d of %qE discards "
|
||||
WARN_FOR_ASSIGNMENT (G_("passing argument %d of %qE discards "
|
||||
"qualifiers from pointer target type"),
|
||||
N_("assignment discards qualifiers "
|
||||
G_("assignment discards qualifiers "
|
||||
"from pointer target type"),
|
||||
N_("initialization discards qualifiers "
|
||||
G_("initialization discards qualifiers "
|
||||
"from pointer target type"),
|
||||
N_("return discards qualifiers from "
|
||||
G_("return discards qualifiers from "
|
||||
"pointer target type"));
|
||||
}
|
||||
|
||||
|
@ -3796,14 +3796,14 @@ convert_for_assignment (tree type, tree rhs, enum impl_conv errtype,
|
|||
which are not ANSI null ptr constants. */
|
||||
&& (!integer_zerop (rhs) || TREE_CODE (rhs) == NOP_EXPR)
|
||||
&& TREE_CODE (ttl) == FUNCTION_TYPE)))
|
||||
WARN_FOR_ASSIGNMENT (N_("ISO C forbids passing argument %d of "
|
||||
WARN_FOR_ASSIGNMENT (G_("ISO C forbids passing argument %d of "
|
||||
"%qE between function pointer "
|
||||
"and %<void *%>"),
|
||||
N_("ISO C forbids assignment between "
|
||||
G_("ISO C forbids assignment between "
|
||||
"function pointer and %<void *%>"),
|
||||
N_("ISO C forbids initialization between "
|
||||
G_("ISO C forbids initialization between "
|
||||
"function pointer and %<void *%>"),
|
||||
N_("ISO C forbids return between function "
|
||||
G_("ISO C forbids return between function "
|
||||
"pointer and %<void *%>"));
|
||||
/* Const and volatile mean something different for function types,
|
||||
so the usual warnings are not appropriate. */
|
||||
|
@ -3816,13 +3816,13 @@ convert_for_assignment (tree type, tree rhs, enum impl_conv errtype,
|
|||
qualifier are acceptable if the 'volatile' has been added
|
||||
in by the Objective-C EH machinery. */
|
||||
if (!objc_type_quals_match (ttl, ttr))
|
||||
WARN_FOR_ASSIGNMENT (N_("passing argument %d of %qE discards "
|
||||
WARN_FOR_ASSIGNMENT (G_("passing argument %d of %qE discards "
|
||||
"qualifiers from pointer target type"),
|
||||
N_("assignment discards qualifiers "
|
||||
G_("assignment discards qualifiers "
|
||||
"from pointer target type"),
|
||||
N_("initialization discards qualifiers "
|
||||
G_("initialization discards qualifiers "
|
||||
"from pointer target type"),
|
||||
N_("return discards qualifiers from "
|
||||
G_("return discards qualifiers from "
|
||||
"pointer target type"));
|
||||
}
|
||||
/* If this is not a case of ignoring a mismatch in signedness,
|
||||
|
@ -3832,13 +3832,13 @@ convert_for_assignment (tree type, tree rhs, enum impl_conv errtype,
|
|||
;
|
||||
/* If there is a mismatch, do warn. */
|
||||
else if (warn_pointer_sign)
|
||||
WARN_FOR_ASSIGNMENT (N_("pointer targets in passing argument "
|
||||
WARN_FOR_ASSIGNMENT (G_("pointer targets in passing argument "
|
||||
"%d of %qE differ in signedness"),
|
||||
N_("pointer targets in assignment "
|
||||
G_("pointer targets in assignment "
|
||||
"differ in signedness"),
|
||||
N_("pointer targets in initialization "
|
||||
G_("pointer targets in initialization "
|
||||
"differ in signedness"),
|
||||
N_("pointer targets in return differ "
|
||||
G_("pointer targets in return differ "
|
||||
"in signedness"));
|
||||
}
|
||||
else if (TREE_CODE (ttl) == FUNCTION_TYPE
|
||||
|
@ -3849,26 +3849,26 @@ convert_for_assignment (tree type, tree rhs, enum impl_conv errtype,
|
|||
it is okay to use a const or volatile function
|
||||
where an ordinary one is wanted, but not vice-versa. */
|
||||
if (TYPE_QUALS (ttl) & ~TYPE_QUALS (ttr))
|
||||
WARN_FOR_ASSIGNMENT (N_("passing argument %d of %qE makes "
|
||||
WARN_FOR_ASSIGNMENT (G_("passing argument %d of %qE makes "
|
||||
"qualified function pointer "
|
||||
"from unqualified"),
|
||||
N_("assignment makes qualified function "
|
||||
G_("assignment makes qualified function "
|
||||
"pointer from unqualified"),
|
||||
N_("initialization makes qualified "
|
||||
G_("initialization makes qualified "
|
||||
"function pointer from unqualified"),
|
||||
N_("return makes qualified function "
|
||||
G_("return makes qualified function "
|
||||
"pointer from unqualified"));
|
||||
}
|
||||
}
|
||||
else
|
||||
/* Avoid warning about the volatile ObjC EH puts on decls. */
|
||||
if (!objc_ok)
|
||||
WARN_FOR_ASSIGNMENT (N_("passing argument %d of %qE from "
|
||||
WARN_FOR_ASSIGNMENT (G_("passing argument %d of %qE from "
|
||||
"incompatible pointer type"),
|
||||
N_("assignment from incompatible pointer type"),
|
||||
N_("initialization from incompatible "
|
||||
G_("assignment from incompatible pointer type"),
|
||||
G_("initialization from incompatible "
|
||||
"pointer type"),
|
||||
N_("return from incompatible pointer type"));
|
||||
G_("return from incompatible pointer type"));
|
||||
|
||||
return convert (type, rhs);
|
||||
}
|
||||
|
@ -3890,26 +3890,26 @@ convert_for_assignment (tree type, tree rhs, enum impl_conv errtype,
|
|||
&& TREE_CODE (TREE_TYPE (rhs)) == INTEGER_TYPE
|
||||
&& TREE_CODE (TREE_OPERAND (rhs, 0)) == INTEGER_CST
|
||||
&& integer_zerop (TREE_OPERAND (rhs, 0))))
|
||||
WARN_FOR_ASSIGNMENT (N_("passing argument %d of %qE makes "
|
||||
WARN_FOR_ASSIGNMENT (G_("passing argument %d of %qE makes "
|
||||
"pointer from integer without a cast"),
|
||||
N_("assignment makes pointer from integer "
|
||||
G_("assignment makes pointer from integer "
|
||||
"without a cast"),
|
||||
N_("initialization makes pointer from "
|
||||
G_("initialization makes pointer from "
|
||||
"integer without a cast"),
|
||||
N_("return makes pointer from integer "
|
||||
G_("return makes pointer from integer "
|
||||
"without a cast"));
|
||||
|
||||
return convert (type, rhs);
|
||||
}
|
||||
else if (codel == INTEGER_TYPE && coder == POINTER_TYPE)
|
||||
{
|
||||
WARN_FOR_ASSIGNMENT (N_("passing argument %d of %qE makes integer "
|
||||
WARN_FOR_ASSIGNMENT (G_("passing argument %d of %qE makes integer "
|
||||
"from pointer without a cast"),
|
||||
N_("assignment makes integer from pointer "
|
||||
G_("assignment makes integer from pointer "
|
||||
"without a cast"),
|
||||
N_("initialization makes integer from pointer "
|
||||
G_("initialization makes integer from pointer "
|
||||
"without a cast"),
|
||||
N_("return makes integer from pointer "
|
||||
G_("return makes integer from pointer "
|
||||
"without a cast"));
|
||||
return convert (type, rhs);
|
||||
}
|
||||
|
|
|
@ -328,26 +328,26 @@ collect_exit (int status)
|
|||
|
||||
/* Notify user of a non-error. */
|
||||
void
|
||||
notice (const char *msgid, ...)
|
||||
notice (const char *cmsgid, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
vfprintf (stderr, _(msgid), ap);
|
||||
va_start (ap, cmsgid);
|
||||
vfprintf (stderr, _(cmsgid), ap);
|
||||
va_end (ap);
|
||||
}
|
||||
|
||||
/* Die when sys call fails. */
|
||||
|
||||
void
|
||||
fatal_perror (const char * msgid, ...)
|
||||
fatal_perror (const char * cmsgid, ...)
|
||||
{
|
||||
int e = errno;
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
va_start (ap, cmsgid);
|
||||
fprintf (stderr, "collect2: ");
|
||||
vfprintf (stderr, _(msgid), ap);
|
||||
vfprintf (stderr, _(cmsgid), ap);
|
||||
fprintf (stderr, ": %s\n", xstrerror (e));
|
||||
va_end (ap);
|
||||
|
||||
|
@ -357,13 +357,13 @@ fatal_perror (const char * msgid, ...)
|
|||
/* Just die. */
|
||||
|
||||
void
|
||||
fatal (const char * msgid, ...)
|
||||
fatal (const char * cmsgid, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
va_start (ap, cmsgid);
|
||||
fprintf (stderr, "collect2: ");
|
||||
vfprintf (stderr, _(msgid), ap);
|
||||
vfprintf (stderr, _(cmsgid), ap);
|
||||
fprintf (stderr, "\n");
|
||||
va_end (ap);
|
||||
|
||||
|
@ -373,13 +373,13 @@ fatal (const char * msgid, ...)
|
|||
/* Write error message. */
|
||||
|
||||
void
|
||||
error (const char * msgid, ...)
|
||||
error (const char * gmsgid, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
va_start (ap, gmsgid);
|
||||
fprintf (stderr, "collect2: ");
|
||||
vfprintf (stderr, _(msgid), ap);
|
||||
vfprintf (stderr, _(gmsgid), ap);
|
||||
fprintf (stderr, "\n");
|
||||
va_end(ap);
|
||||
}
|
||||
|
|
|
@ -57,7 +57,7 @@ static int c4x_parse_pragma (const char *, tree *, tree *);
|
|||
the STRING_CST node of the string. If SECT is null, then this
|
||||
pragma doesn't take a section string. Returns 0 for a good pragma,
|
||||
-1 for a malformed pragma. */
|
||||
#define BAD(msgid, arg) do { warning (0, msgid, arg); return -1; } while (0)
|
||||
#define BAD(gmsgid, arg) do { warning (0, gmsgid, arg); return -1; } while (0)
|
||||
|
||||
static int
|
||||
c4x_parse_pragma (name, func, sect)
|
||||
|
|
|
@ -35,7 +35,7 @@ Boston, MA 02111-1307, USA. */
|
|||
|
||||
/* Pragmas. */
|
||||
|
||||
#define BAD(msgid) do { warning (0, msgid); return; } while (0)
|
||||
#define BAD(gmsgid) do { warning (0, gmsgid); return; } while (0)
|
||||
|
||||
static bool using_frameworks = false;
|
||||
|
||||
|
|
|
@ -50,8 +50,8 @@ static tree altivec_resolve_overloaded_builtin (tree, tree);
|
|||
whether or not new function declarations receive a longcall
|
||||
attribute by default. */
|
||||
|
||||
#define SYNTAX_ERROR(msgid) do { \
|
||||
warning (0, msgid); \
|
||||
#define SYNTAX_ERROR(gmsgid) do { \
|
||||
warning (0, gmsgid); \
|
||||
warning (0, "ignoring malformed #pragma longcall"); \
|
||||
return; \
|
||||
} while (0)
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
2005-06-06 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* error.c (locate_error): Use gmsgid instead of msgid for argument
|
||||
name.
|
||||
(cp_error_at, cp_warning_at, cp_pedwarn_at): Likewise.
|
||||
|
||||
2005-06-06 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
PR 21903
|
||||
|
|
|
@ -2319,13 +2319,13 @@ cp_printer (pretty_printer *pp, text_info *text)
|
|||
behavior of cp_*_at. */
|
||||
|
||||
static tree
|
||||
locate_error (const char *msgid, va_list ap)
|
||||
locate_error (const char *gmsgid, va_list ap)
|
||||
{
|
||||
tree here = 0, t;
|
||||
int plus = 0;
|
||||
const char *f;
|
||||
|
||||
for (f = msgid; *f; f++)
|
||||
for (f = gmsgid; *f; f++)
|
||||
{
|
||||
plus = 0;
|
||||
if (*f == '%')
|
||||
|
@ -2381,57 +2381,57 @@ locate_error (const char *msgid, va_list ap)
|
|||
|
||||
|
||||
void
|
||||
cp_error_at (const char *msgid, ...)
|
||||
cp_error_at (const char *gmsgid, ...)
|
||||
{
|
||||
tree here;
|
||||
diagnostic_info diagnostic;
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
here = locate_error (msgid, ap);
|
||||
va_start (ap, gmsgid);
|
||||
here = locate_error (gmsgid, ap);
|
||||
va_end (ap);
|
||||
|
||||
va_start (ap, msgid);
|
||||
diagnostic_set_info (&diagnostic, msgid, &ap,
|
||||
va_start (ap, gmsgid);
|
||||
diagnostic_set_info (&diagnostic, gmsgid, &ap,
|
||||
input_location, DK_ERROR);
|
||||
cp_diagnostic_starter (global_dc, &diagnostic);
|
||||
diagnostic_set_info (&diagnostic, msgid, &ap,
|
||||
diagnostic_set_info (&diagnostic, gmsgid, &ap,
|
||||
location_of (here), DK_ERROR);
|
||||
report_diagnostic (&diagnostic);
|
||||
va_end (ap);
|
||||
}
|
||||
|
||||
void
|
||||
cp_warning_at (const char *msgid, ...)
|
||||
cp_warning_at (const char *gmsgid, ...)
|
||||
{
|
||||
tree here;
|
||||
diagnostic_info diagnostic;
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
here = locate_error (msgid, ap);
|
||||
va_start (ap, gmsgid);
|
||||
here = locate_error (gmsgid, ap);
|
||||
va_end (ap);
|
||||
|
||||
va_start (ap, msgid);
|
||||
diagnostic_set_info (&diagnostic, msgid, &ap,
|
||||
va_start (ap, gmsgid);
|
||||
diagnostic_set_info (&diagnostic, gmsgid, &ap,
|
||||
location_of (here), DK_WARNING);
|
||||
report_diagnostic (&diagnostic);
|
||||
va_end (ap);
|
||||
}
|
||||
|
||||
void
|
||||
cp_pedwarn_at (const char *msgid, ...)
|
||||
cp_pedwarn_at (const char *gmsgid, ...)
|
||||
{
|
||||
tree here;
|
||||
diagnostic_info diagnostic;
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
here = locate_error (msgid, ap);
|
||||
va_start (ap, gmsgid);
|
||||
here = locate_error (gmsgid, ap);
|
||||
va_end (ap);
|
||||
|
||||
va_start (ap, msgid);
|
||||
diagnostic_set_info (&diagnostic, msgid, &ap,
|
||||
va_start (ap, gmsgid);
|
||||
diagnostic_set_info (&diagnostic, gmsgid, &ap,
|
||||
location_of (here), pedantic_error_kind());
|
||||
report_diagnostic (&diagnostic);
|
||||
va_end (ap);
|
||||
|
|
|
@ -113,13 +113,13 @@ diagnostic_initialize (diagnostic_context *context)
|
|||
}
|
||||
|
||||
void
|
||||
diagnostic_set_info (diagnostic_info *diagnostic, const char *msgid,
|
||||
diagnostic_set_info (diagnostic_info *diagnostic, const char *gmsgid,
|
||||
va_list *args, location_t location,
|
||||
diagnostic_t kind)
|
||||
{
|
||||
diagnostic->message.err_no = errno;
|
||||
diagnostic->message.args_ptr = args;
|
||||
diagnostic->message.format_spec = _(msgid);
|
||||
diagnostic->message.format_spec = _(gmsgid);
|
||||
diagnostic->location = location;
|
||||
diagnostic->kind = kind;
|
||||
diagnostic->option_index = 0;
|
||||
|
@ -396,15 +396,15 @@ trim_filename (const char *name)
|
|||
/* Text to be emitted verbatim to the error message stream; this
|
||||
produces no prefix and disables line-wrapping. Use rarely. */
|
||||
void
|
||||
verbatim (const char *msgid, ...)
|
||||
verbatim (const char *gmsgid, ...)
|
||||
{
|
||||
text_info text;
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
va_start (ap, gmsgid);
|
||||
text.err_no = errno;
|
||||
text.args_ptr = ≈
|
||||
text.format_spec = _(msgid);
|
||||
text.format_spec = _(gmsgid);
|
||||
pp_format_verbatim (global_dc->printer, &text);
|
||||
pp_flush (global_dc->printer);
|
||||
va_end (ap);
|
||||
|
@ -413,13 +413,13 @@ verbatim (const char *msgid, ...)
|
|||
/* An informative note. Use this for additional details on an error
|
||||
message. */
|
||||
void
|
||||
inform (const char *msgid, ...)
|
||||
inform (const char *gmsgid, ...)
|
||||
{
|
||||
diagnostic_info diagnostic;
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
diagnostic_set_info (&diagnostic, msgid, &ap, input_location, DK_NOTE);
|
||||
va_start (ap, gmsgid);
|
||||
diagnostic_set_info (&diagnostic, gmsgid, &ap, input_location, DK_NOTE);
|
||||
report_diagnostic (&diagnostic);
|
||||
va_end (ap);
|
||||
}
|
||||
|
@ -427,13 +427,13 @@ inform (const char *msgid, ...)
|
|||
/* A warning. Use this for code which is correct according to the
|
||||
relevant language specification but is likely to be buggy anyway. */
|
||||
void
|
||||
warning (int opt, const char *msgid, ...)
|
||||
warning (int opt, const char *gmsgid, ...)
|
||||
{
|
||||
diagnostic_info diagnostic;
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
diagnostic_set_info (&diagnostic, msgid, &ap, input_location, DK_WARNING);
|
||||
va_start (ap, gmsgid);
|
||||
diagnostic_set_info (&diagnostic, gmsgid, &ap, input_location, DK_WARNING);
|
||||
diagnostic.option_index = opt;
|
||||
|
||||
report_diagnostic (&diagnostic);
|
||||
|
@ -441,13 +441,13 @@ warning (int opt, const char *msgid, ...)
|
|||
}
|
||||
|
||||
void
|
||||
warning0 (const char *msgid, ...)
|
||||
warning0 (const char *gmsgid, ...)
|
||||
{
|
||||
diagnostic_info diagnostic;
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
diagnostic_set_info (&diagnostic, msgid, &ap, input_location, DK_WARNING);
|
||||
va_start (ap, gmsgid);
|
||||
diagnostic_set_info (&diagnostic, gmsgid, &ap, input_location, DK_WARNING);
|
||||
report_diagnostic (&diagnostic);
|
||||
va_end (ap);
|
||||
}
|
||||
|
@ -461,13 +461,13 @@ warning0 (const char *msgid, ...)
|
|||
of the -pedantic command-line switch. To get a warning enabled
|
||||
only with that switch, write "if (pedantic) pedwarn (...);" */
|
||||
void
|
||||
pedwarn (const char *msgid, ...)
|
||||
pedwarn (const char *gmsgid, ...)
|
||||
{
|
||||
diagnostic_info diagnostic;
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
diagnostic_set_info (&diagnostic, msgid, &ap, input_location,
|
||||
va_start (ap, gmsgid);
|
||||
diagnostic_set_info (&diagnostic, gmsgid, &ap, input_location,
|
||||
pedantic_error_kind ());
|
||||
report_diagnostic (&diagnostic);
|
||||
va_end (ap);
|
||||
|
@ -476,13 +476,13 @@ pedwarn (const char *msgid, ...)
|
|||
/* A hard error: the code is definitely ill-formed, and an object file
|
||||
will not be produced. */
|
||||
void
|
||||
error (const char *msgid, ...)
|
||||
error (const char *gmsgid, ...)
|
||||
{
|
||||
diagnostic_info diagnostic;
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
diagnostic_set_info (&diagnostic, msgid, &ap, input_location, DK_ERROR);
|
||||
va_start (ap, gmsgid);
|
||||
diagnostic_set_info (&diagnostic, gmsgid, &ap, input_location, DK_ERROR);
|
||||
report_diagnostic (&diagnostic);
|
||||
va_end (ap);
|
||||
}
|
||||
|
@ -491,13 +491,13 @@ error (const char *msgid, ...)
|
|||
required by the relevant specification but not implemented by GCC.
|
||||
An object file will not be produced. */
|
||||
void
|
||||
sorry (const char *msgid, ...)
|
||||
sorry (const char *gmsgid, ...)
|
||||
{
|
||||
diagnostic_info diagnostic;
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
diagnostic_set_info (&diagnostic, msgid, &ap, input_location, DK_SORRY);
|
||||
va_start (ap, gmsgid);
|
||||
diagnostic_set_info (&diagnostic, gmsgid, &ap, input_location, DK_SORRY);
|
||||
report_diagnostic (&diagnostic);
|
||||
va_end (ap);
|
||||
}
|
||||
|
@ -506,13 +506,13 @@ sorry (const char *msgid, ...)
|
|||
continue. Do not use this for internal consistency checks; that's
|
||||
internal_error. Use of this function should be rare. */
|
||||
void
|
||||
fatal_error (const char *msgid, ...)
|
||||
fatal_error (const char *gmsgid, ...)
|
||||
{
|
||||
diagnostic_info diagnostic;
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
diagnostic_set_info (&diagnostic, msgid, &ap, input_location, DK_FATAL);
|
||||
va_start (ap, gmsgid);
|
||||
diagnostic_set_info (&diagnostic, gmsgid, &ap, input_location, DK_FATAL);
|
||||
report_diagnostic (&diagnostic);
|
||||
va_end (ap);
|
||||
|
||||
|
@ -524,13 +524,13 @@ fatal_error (const char *msgid, ...)
|
|||
a more specific message, or some other good reason, you should use
|
||||
abort () instead of calling this function directly. */
|
||||
void
|
||||
internal_error (const char *msgid, ...)
|
||||
internal_error (const char *gmsgid, ...)
|
||||
{
|
||||
diagnostic_info diagnostic;
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
diagnostic_set_info (&diagnostic, msgid, &ap, input_location, DK_ICE);
|
||||
va_start (ap, gmsgid);
|
||||
diagnostic_set_info (&diagnostic, gmsgid, &ap, input_location, DK_ICE);
|
||||
report_diagnostic (&diagnostic);
|
||||
va_end (ap);
|
||||
|
||||
|
@ -543,12 +543,12 @@ internal_error (const char *msgid, ...)
|
|||
/* Print a diagnostic MSGID on FILE. This is just fprintf, except it
|
||||
runs its second argument through gettext. */
|
||||
void
|
||||
fnotice (FILE *file, const char *msgid, ...)
|
||||
fnotice (FILE *file, const char *cmsgid, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
vfprintf (file, _(msgid), ap);
|
||||
va_start (ap, cmsgid);
|
||||
vfprintf (file, _(cmsgid), ap);
|
||||
va_end (ap);
|
||||
}
|
||||
|
||||
|
|
|
@ -328,7 +328,7 @@ the 1.9.x series, which is currently 1.9.3. When regenerating a directory
|
|||
to a newer version, please update all the directories using an older 1.9.x
|
||||
to the latest released version.
|
||||
|
||||
@item gettext version 0.12 (or later)
|
||||
@item gettext version 0.14.5 (or later)
|
||||
|
||||
Needed to regenerate @file{gcc.pot}.
|
||||
|
||||
|
|
|
@ -2753,17 +2753,17 @@ alter_cond (rtx cond)
|
|||
In an `asm', it's the user's fault; otherwise, the compiler's fault. */
|
||||
|
||||
void
|
||||
output_operand_lossage (const char *msgid, ...)
|
||||
output_operand_lossage (const char *cmsgid, ...)
|
||||
{
|
||||
char *fmt_string;
|
||||
char *new_message;
|
||||
const char *pfx_str;
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
va_start (ap, cmsgid);
|
||||
|
||||
pfx_str = this_is_asm_operands ? _("invalid 'asm': ") : "output_operand: ";
|
||||
asprintf (&fmt_string, "%s%s", pfx_str, _(msgid));
|
||||
asprintf (&fmt_string, "%s%s", pfx_str, _(cmsgid));
|
||||
vasprintf (&new_message, fmt_string, ap);
|
||||
|
||||
if (this_is_asm_operands)
|
||||
|
|
24
gcc/gcc.c
24
gcc/gcc.c
|
@ -6716,40 +6716,46 @@ fancy_abort (const char *file, int line, const char *func)
|
|||
/* Output an error message and exit. */
|
||||
|
||||
void
|
||||
fatal (const char *msgid, ...)
|
||||
fatal (const char *cmsgid, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
va_start (ap, cmsgid);
|
||||
|
||||
fprintf (stderr, "%s: ", programname);
|
||||
vfprintf (stderr, _(msgid), ap);
|
||||
vfprintf (stderr, _(cmsgid), ap);
|
||||
va_end (ap);
|
||||
fprintf (stderr, "\n");
|
||||
delete_temp_files ();
|
||||
exit (1);
|
||||
}
|
||||
|
||||
/* The argument is actually c-format, not gcc-internal-format,
|
||||
but because functions with identical names are used through
|
||||
the rest of the compiler with gcc-internal-format, we just
|
||||
need to hope all users of these functions use the common
|
||||
subset between c-format and gcc-internal-format. */
|
||||
|
||||
void
|
||||
error (const char *msgid, ...)
|
||||
error (const char *gmsgid, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
va_start (ap, gmsgid);
|
||||
fprintf (stderr, "%s: ", programname);
|
||||
vfprintf (stderr, _(msgid), ap);
|
||||
vfprintf (stderr, _(gmsgid), ap);
|
||||
va_end (ap);
|
||||
|
||||
fprintf (stderr, "\n");
|
||||
}
|
||||
|
||||
static void
|
||||
notice (const char *msgid, ...)
|
||||
notice (const char *cmsgid, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
vfprintf (stderr, _(msgid), ap);
|
||||
va_start (ap, cmsgid);
|
||||
vfprintf (stderr, _(cmsgid), ap);
|
||||
va_end (ap);
|
||||
}
|
||||
|
||||
|
|
|
@ -367,12 +367,12 @@ main (int argc, char **argv)
|
|||
}
|
||||
|
||||
static void
|
||||
fnotice (FILE *file, const char *msgid, ...)
|
||||
fnotice (FILE *file, const char *cmsgid, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
vfprintf (file, _(msgid), ap);
|
||||
va_start (ap, cmsgid);
|
||||
vfprintf (file, _(cmsgid), ap);
|
||||
va_end (ap);
|
||||
}
|
||||
|
||||
|
|
|
@ -51,6 +51,10 @@ extern size_t gcc_gettext_width (const char *);
|
|||
# define N_(msgid) msgid
|
||||
#endif
|
||||
|
||||
#ifndef G_
|
||||
# define G_(gmsgid) gmsgid
|
||||
#endif
|
||||
|
||||
extern const char *open_quote;
|
||||
extern const char *close_quote;
|
||||
|
||||
|
|
|
@ -1,3 +1,12 @@
|
|||
2005-06-06 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* jv-scan.c (fatal_error, warning, warning0): Use gmsgid instead of
|
||||
msgid for argument name.
|
||||
* gjavah.c (error): Likewise.
|
||||
* java-tree.h (parse_error_context): Likewise.
|
||||
* parse.y (parse_error_context, parse_warning_context,
|
||||
issue_warning_error_from_context): Likewise.
|
||||
|
||||
2005-06-01 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
PR java/21722:
|
||||
|
|
|
@ -164,7 +164,7 @@ static const unsigned char *
|
|||
decode_signature_piece (FILE *, const unsigned char *,
|
||||
const unsigned char *, int *);
|
||||
static void print_class_decls (FILE *, JCF *, int);
|
||||
static void error (const char *msgid, ...);
|
||||
static void error (const char *gmsgid, ...);
|
||||
static void usage (void) ATTRIBUTE_NORETURN;
|
||||
static void help (void) ATTRIBUTE_NORETURN;
|
||||
static void version (void) ATTRIBUTE_NORETURN;
|
||||
|
@ -266,16 +266,19 @@ static int decompiled = 0;
|
|||
|
||||
#include "jcf-reader.c"
|
||||
|
||||
/* Print an error message and set found_error. */
|
||||
/* Print an error message and set found_error.
|
||||
Not really gcc-internal-format message, but as error elsewhere
|
||||
uses it, assume all users will use intersection between
|
||||
c-format and gcc-internal-format. */
|
||||
static void
|
||||
error (const char *msgid, ...)
|
||||
error (const char *gmsgid, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
va_start (ap, gmsgid);
|
||||
|
||||
fprintf (stderr, TOOLNAME ": ");
|
||||
vfprintf (stderr, _(msgid), ap);
|
||||
vfprintf (stderr, _(gmsgid), ap);
|
||||
va_end (ap);
|
||||
fprintf (stderr, "\n");
|
||||
found_error = 1;
|
||||
|
|
|
@ -1305,7 +1305,7 @@ extern tree emit_symbol_table (tree, tree, tree, tree, tree, int);
|
|||
extern void lang_init_source (int);
|
||||
extern void write_classfile (tree);
|
||||
extern char *print_int_node (tree);
|
||||
extern void parse_error_context (tree cl, const char *msgid, ...);
|
||||
extern void parse_error_context (tree cl, const char *gmsgid, ...);
|
||||
extern void finish_class (void);
|
||||
extern void java_layout_seen_class_methods (void);
|
||||
extern void check_for_initialization (tree, tree);
|
||||
|
|
|
@ -40,10 +40,10 @@ Boston, MA 02111-1307, USA. */
|
|||
|
||||
#include <getopt.h>
|
||||
|
||||
extern void fatal_error (const char *msgid, ...)
|
||||
extern void fatal_error (const char *gmsgid, ...)
|
||||
ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN;
|
||||
void warning (int opt, const char *msgid, ...) ATTRIBUTE_PRINTF_2;
|
||||
void warning0 (const char *msgid, ...) ATTRIBUTE_PRINTF_1;
|
||||
void warning (int opt, const char *gmsgid, ...) ATTRIBUTE_PRINTF_2;
|
||||
void warning0 (const char *gmsgid, ...) ATTRIBUTE_PRINTF_1;
|
||||
void report (void);
|
||||
|
||||
static void usage (void) ATTRIBUTE_NORETURN;
|
||||
|
@ -245,38 +245,40 @@ main (int argc, char **argv)
|
|||
|
||||
|
||||
/* Error report, memory, obstack initialization and other utility
|
||||
functions */
|
||||
functions. Use actually c-format msgid, but as functions with
|
||||
the same name elsewhere use gcc-internal-format, assume all users
|
||||
here use intersection between c-format and gcc-internal-format. */
|
||||
|
||||
void
|
||||
fatal_error (const char *msgid, ...)
|
||||
fatal_error (const char *gmsgid, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start (ap, msgid);
|
||||
va_start (ap, gmsgid);
|
||||
fprintf (stderr, _("%s: error: "), exec_name);
|
||||
vfprintf (stderr, _(msgid), ap);
|
||||
vfprintf (stderr, _(gmsgid), ap);
|
||||
fputc ('\n', stderr);
|
||||
va_end (ap);
|
||||
exit (1);
|
||||
}
|
||||
|
||||
void
|
||||
warning (int opt ATTRIBUTE_UNUSED, const char *msgid, ...)
|
||||
warning (int opt ATTRIBUTE_UNUSED, const char *gmsgid, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start (ap, msgid);
|
||||
va_start (ap, gmsgid);
|
||||
fprintf (stderr, _("%s: warning: "), exec_name);
|
||||
vfprintf (stderr, _(msgid), ap);
|
||||
vfprintf (stderr, _(gmsgid), ap);
|
||||
fputc ('\n', stderr);
|
||||
va_end (ap);
|
||||
}
|
||||
|
||||
void
|
||||
warning0 (const char *msgid, ...)
|
||||
warning0 (const char *gmsgid, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start (ap, msgid);
|
||||
va_start (ap, gmsgid);
|
||||
fprintf (stderr, _("%s: warning: "), exec_name);
|
||||
vfprintf (stderr, _(msgid), ap);
|
||||
vfprintf (stderr, _(gmsgid), ap);
|
||||
fputc ('\n', stderr);
|
||||
va_end (ap);
|
||||
}
|
||||
|
|
|
@ -96,13 +96,13 @@ static tree lookup_java_method2 (tree, tree, int);
|
|||
static tree method_header (int, tree, tree, tree);
|
||||
static void fix_method_argument_names (tree ,tree);
|
||||
static tree method_declarator (tree, tree);
|
||||
static void parse_warning_context (tree cl, const char *msgid, ...);
|
||||
static void parse_warning_context (tree cl, const char *gmsgid, ...);
|
||||
#ifdef USE_MAPPED_LOCATION
|
||||
static void issue_warning_error_from_context
|
||||
(source_location, const char *msgid, va_list *);
|
||||
(source_location, const char *gmsgid, va_list *);
|
||||
#else
|
||||
static void issue_warning_error_from_context
|
||||
(tree, const char *msgid, va_list *);
|
||||
(tree, const char *gmsgid, va_list *);
|
||||
#endif
|
||||
static void parse_ctor_invocation_error (void);
|
||||
static tree parse_jdk1_1_error (const char *);
|
||||
|
@ -3126,7 +3126,7 @@ issue_warning_error_from_context (
|
|||
#else
|
||||
tree cl,
|
||||
#endif
|
||||
const char *msgid, va_list *ap)
|
||||
const char *gmsgid, va_list *ap)
|
||||
{
|
||||
#ifdef USE_MAPPED_LOCATION
|
||||
source_location saved_location = input_location;
|
||||
|
@ -3140,7 +3140,7 @@ issue_warning_error_from_context (
|
|||
|
||||
text.err_no = errno;
|
||||
text.args_ptr = ap;
|
||||
text.format_spec = msgid;
|
||||
text.format_spec = gmsgid;
|
||||
pp_format_text (global_dc->printer, &text);
|
||||
strncpy (buffer, pp_formatted_text (global_dc->printer), sizeof (buffer) - 1);
|
||||
buffer[sizeof (buffer) - 1] = '\0';
|
||||
|
@ -3182,14 +3182,14 @@ issue_warning_error_from_context (
|
|||
FUTURE/FIXME: change cl to be a source_location. */
|
||||
|
||||
void
|
||||
parse_error_context (tree cl, const char *msgid, ...)
|
||||
parse_error_context (tree cl, const char *gmsgid, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start (ap, msgid);
|
||||
va_start (ap, gmsgid);
|
||||
#ifdef USE_MAPPED_LOCATION
|
||||
issue_warning_error_from_context (EXPR_LOCATION (cl), msgid, &ap);
|
||||
issue_warning_error_from_context (EXPR_LOCATION (cl), gmsgid, &ap);
|
||||
#else
|
||||
issue_warning_error_from_context (cl, msgid, &ap);
|
||||
issue_warning_error_from_context (cl, gmsgid, &ap);
|
||||
#endif
|
||||
va_end (ap);
|
||||
}
|
||||
|
@ -3198,16 +3198,16 @@ parse_error_context (tree cl, const char *msgid, ...)
|
|||
FUTURE/FIXME: change cl to be a source_location. */
|
||||
|
||||
static void
|
||||
parse_warning_context (tree cl, const char *msgid, ...)
|
||||
parse_warning_context (tree cl, const char *gmsgid, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start (ap, msgid);
|
||||
va_start (ap, gmsgid);
|
||||
|
||||
do_warning = 1;
|
||||
#ifdef USE_MAPPED_LOCATION
|
||||
issue_warning_error_from_context (EXPR_LOCATION (cl), msgid, &ap);
|
||||
issue_warning_error_from_context (EXPR_LOCATION (cl), gmsgid, &ap);
|
||||
#else
|
||||
issue_warning_error_from_context (cl, msgid, &ap);
|
||||
issue_warning_error_from_context (cl, gmsgid, &ap);
|
||||
#endif
|
||||
do_warning = 0;
|
||||
va_end (ap);
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
2005-06-06 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* exgettext: Handle gmsgid and cmsgid arguments specially,
|
||||
as gcc-internal-format and c-format. Because of xgettext
|
||||
bug, invoke xgettext once with --language=c, once with
|
||||
--language=GCC-source and then merge together. Fail if
|
||||
xgettext is not 0.14.5 or later.
|
||||
|
||||
2005-05-31 Joseph S. Myers <joseph@codesourcery.com>
|
||||
|
||||
* sv.po: Update.
|
||||
|
|
|
@ -43,6 +43,12 @@ xgettext=$1
|
|||
package=$2
|
||||
srcdir=$3
|
||||
|
||||
case `$xgettext --version | sed -e 1q | sed -e 's/^\([^0-9]*\)//'` in
|
||||
0.14.[5-9]* | 0.14.[1-9][0-9]* | 0.1[5-9]* | 0.[2-9][0-9]* | [1-9].*) : ;;
|
||||
*) echo "$xgettext is too old. GNU xgettext 0.14.5 is required"
|
||||
exit 1 ;;
|
||||
esac
|
||||
|
||||
nl='
|
||||
'
|
||||
|
||||
|
@ -55,8 +61,12 @@ trap "rm -r $T" 0
|
|||
|
||||
pwd=`${PWDCMD-pwd}`
|
||||
kopt=$pwd/$T/keyword-options
|
||||
kopt2=$pwd/$T/keyword2-options
|
||||
emsg=$pwd/$T/emsgids.c
|
||||
posr=$pwd/$T/po-sources
|
||||
pottmp1=$pwd/$T/tmp1.pot
|
||||
pottmp2=$pwd/$T/tmp2.pot
|
||||
pottmp=$pwd/$T/tmp.pot
|
||||
|
||||
# Locate files to scan, and generate the list. All .c, .h, and .def files
|
||||
# in $srcdir are examined, likewise $srcdir/config and $srcdir/config/*
|
||||
|
@ -81,7 +91,7 @@ echo "scanning for keywords and %e strings..." >&2
|
|||
done
|
||||
done;
|
||||
} | tr ' ' "$nl" | grep -v '\*' |
|
||||
$AWK -v excl=po/EXCLUDES -v posr=$posr -v kopt=$kopt -v emsg=$emsg '
|
||||
$AWK -v excl=po/EXCLUDES -v posr=$posr -v kopt=$kopt -v kopt2=$kopt2 -v emsg=$emsg '
|
||||
function keyword_option(line) {
|
||||
paren_index = index(line, "(")
|
||||
name = substr(line, 1, paren_index - 1)
|
||||
|
@ -95,12 +105,28 @@ function keyword_option(line) {
|
|||
for (n = 1; sub(/^[^,]*,/, "", args); n++) {
|
||||
continue
|
||||
}
|
||||
format=""
|
||||
if (args ~ /g$/)
|
||||
format="gcc-internal-format"
|
||||
else if (args ~ /c$/)
|
||||
format="c-format"
|
||||
|
||||
if (n == 1) { keyword = name }
|
||||
else { keyword = name ":" n }
|
||||
if (n == 1) { keyword = "--keyword=" name }
|
||||
else { keyword = "--keyword=" name ":" n }
|
||||
if (format) {
|
||||
keyword=keyword "\n--flag=" name ":" n ":" format
|
||||
}
|
||||
|
||||
if (! keyword_seen[keyword]++) {
|
||||
print "--keyword=" keyword > kopt
|
||||
if (! keyword_seen[name]) {
|
||||
if (format == "gcc-internal-format")
|
||||
print keyword > kopt2
|
||||
else
|
||||
print keyword > kopt
|
||||
keyword_seen[name] = keyword
|
||||
} else if (keyword_seen[name] != keyword) {
|
||||
printf("%s used incompatibly as both %s and %s\n",
|
||||
name, keyword_seen[name], keyword)
|
||||
exit (1)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -155,7 +181,7 @@ END {
|
|||
}
|
||||
print emsg > posr
|
||||
}'
|
||||
)
|
||||
) || exit
|
||||
|
||||
echo "scanning option files..." >&2
|
||||
|
||||
|
@ -186,7 +212,16 @@ $xgettext --default-domain=$package --directory=$srcdir \
|
|||
--add-comments `cat $kopt` --files-from=$posr \
|
||||
--copyright-holder="Free Software Foundation, Inc." \
|
||||
--msgid-bugs-address="http://gcc.gnu.org/bugs.html" \
|
||||
--language=c -o po/$package.pot.tmp
|
||||
--language=c -o $pottmp1
|
||||
$xgettext --default-domain=$package --directory=$srcdir \
|
||||
--add-comments --keyword= `cat $kopt2` --files-from=$posr \
|
||||
--copyright-holder="Free Software Foundation, Inc." \
|
||||
--msgid-bugs-address="http://gcc.gnu.org/bugs.html" \
|
||||
--language=GCC-source -o $pottmp2
|
||||
$xgettext --default-domain=$package \
|
||||
--add-comments $pottmp1 $pottmp2 \
|
||||
--copyright-holder="Free Software Foundation, Inc." \
|
||||
--msgid-bugs-address="http://gcc.gnu.org/bugs.html" \
|
||||
--language=PO -o $pottmp
|
||||
# Remove local paths from .pot file.
|
||||
sed "s:$srcdir/::g;s:$pwd/::g;" <po/$package.pot.tmp >po/$package.pot
|
||||
rm po/$package.pot.tmp
|
||||
sed "s:$srcdir/::g;s:$pwd/::g;" <$pottmp >po/$package.pot
|
||||
|
|
|
@ -505,12 +505,12 @@ static char * saved_repl_write_ptr;
|
|||
|
||||
/* Translate and output an error message. */
|
||||
static void
|
||||
notice (const char *msgid, ...)
|
||||
notice (const char *cmsgid, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
vfprintf (stderr, _(msgid), ap);
|
||||
va_start (ap, cmsgid);
|
||||
vfprintf (stderr, _(cmsgid), ap);
|
||||
va_end (ap);
|
||||
}
|
||||
|
||||
|
|
|
@ -87,22 +87,22 @@ diagnostic_for_asm (rtx insn, const char *msg, va_list *args_ptr,
|
|||
}
|
||||
|
||||
void
|
||||
error_for_asm (rtx insn, const char *msgid, ...)
|
||||
error_for_asm (rtx insn, const char *gmsgid, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
diagnostic_for_asm (insn, msgid, &ap, DK_ERROR);
|
||||
va_start (ap, gmsgid);
|
||||
diagnostic_for_asm (insn, gmsgid, &ap, DK_ERROR);
|
||||
va_end (ap);
|
||||
}
|
||||
|
||||
void
|
||||
warning_for_asm (rtx insn, const char *msgid, ...)
|
||||
warning_for_asm (rtx insn, const char *gmsgid, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, msgid);
|
||||
diagnostic_for_asm (insn, msgid, &ap, DK_WARNING);
|
||||
va_start (ap, gmsgid);
|
||||
diagnostic_for_asm (insn, gmsgid, &ap, DK_WARNING);
|
||||
va_end (ap);
|
||||
}
|
||||
|
||||
|
|
|
@ -1299,7 +1299,7 @@ inline_forbidden_p_1 (tree *nodep, int *walk_subtrees ATTRIBUTE_UNUSED,
|
|||
&& !lookup_attribute ("always_inline", DECL_ATTRIBUTES (fn)))
|
||||
{
|
||||
inline_forbidden_reason
|
||||
= N_("%Jfunction %qF can never be inlined because it uses "
|
||||
= G_("%Jfunction %qF can never be inlined because it uses "
|
||||
"alloca (override using the always_inline attribute)");
|
||||
return node;
|
||||
}
|
||||
|
@ -1311,7 +1311,7 @@ inline_forbidden_p_1 (tree *nodep, int *walk_subtrees ATTRIBUTE_UNUSED,
|
|||
if (setjmp_call_p (t))
|
||||
{
|
||||
inline_forbidden_reason
|
||||
= N_("%Jfunction %qF can never be inlined because it uses setjmp");
|
||||
= G_("%Jfunction %qF can never be inlined because it uses setjmp");
|
||||
return node;
|
||||
}
|
||||
|
||||
|
@ -1325,7 +1325,7 @@ inline_forbidden_p_1 (tree *nodep, int *walk_subtrees ATTRIBUTE_UNUSED,
|
|||
case BUILT_IN_NEXT_ARG:
|
||||
case BUILT_IN_VA_END:
|
||||
inline_forbidden_reason
|
||||
= N_("%Jfunction %qF can never be inlined because it "
|
||||
= G_("%Jfunction %qF can never be inlined because it "
|
||||
"uses variable argument lists");
|
||||
return node;
|
||||
|
||||
|
@ -1336,14 +1336,14 @@ inline_forbidden_p_1 (tree *nodep, int *walk_subtrees ATTRIBUTE_UNUSED,
|
|||
function calling __builtin_longjmp to be inlined into the
|
||||
function calling __builtin_setjmp, Things will Go Awry. */
|
||||
inline_forbidden_reason
|
||||
= N_("%Jfunction %qF can never be inlined because "
|
||||
= G_("%Jfunction %qF can never be inlined because "
|
||||
"it uses setjmp-longjmp exception handling");
|
||||
return node;
|
||||
|
||||
case BUILT_IN_NONLOCAL_GOTO:
|
||||
/* Similarly. */
|
||||
inline_forbidden_reason
|
||||
= N_("%Jfunction %qF can never be inlined because "
|
||||
= G_("%Jfunction %qF can never be inlined because "
|
||||
"it uses non-local goto");
|
||||
return node;
|
||||
|
||||
|
@ -1354,7 +1354,7 @@ inline_forbidden_p_1 (tree *nodep, int *walk_subtrees ATTRIBUTE_UNUSED,
|
|||
been inlined into. Similarly __builtin_return would
|
||||
return from the function the inline has been inlined into. */
|
||||
inline_forbidden_reason
|
||||
= N_("%Jfunction %qF can never be inlined because "
|
||||
= G_("%Jfunction %qF can never be inlined because "
|
||||
"it uses __builtin_return or __builtin_apply_args");
|
||||
return node;
|
||||
|
||||
|
@ -1373,7 +1373,7 @@ inline_forbidden_p_1 (tree *nodep, int *walk_subtrees ATTRIBUTE_UNUSED,
|
|||
if (TREE_CODE (t) != LABEL_DECL)
|
||||
{
|
||||
inline_forbidden_reason
|
||||
= N_("%Jfunction %qF can never be inlined "
|
||||
= G_("%Jfunction %qF can never be inlined "
|
||||
"because it contains a computed goto");
|
||||
return node;
|
||||
}
|
||||
|
@ -1387,7 +1387,7 @@ inline_forbidden_p_1 (tree *nodep, int *walk_subtrees ATTRIBUTE_UNUSED,
|
|||
because we cannot remap the destination label used in the
|
||||
function that is performing the non-local goto. */
|
||||
inline_forbidden_reason
|
||||
= N_("%Jfunction %qF can never be inlined "
|
||||
= G_("%Jfunction %qF can never be inlined "
|
||||
"because it receives a non-local goto");
|
||||
return node;
|
||||
}
|
||||
|
@ -1412,7 +1412,7 @@ inline_forbidden_p_1 (tree *nodep, int *walk_subtrees ATTRIBUTE_UNUSED,
|
|||
if (variably_modified_type_p (TREE_TYPE (t), NULL))
|
||||
{
|
||||
inline_forbidden_reason
|
||||
= N_("%Jfunction %qF can never be inlined "
|
||||
= G_("%Jfunction %qF can never be inlined "
|
||||
"because it uses variable sized variables");
|
||||
return node;
|
||||
}
|
||||
|
|
|
@ -1079,7 +1079,7 @@ walk_use_def_chains (tree var, walk_use_def_chains_fn fn, void *data,
|
|||
warning text is in MSGID and LOCUS may contain a location or be null. */
|
||||
|
||||
static void
|
||||
warn_uninit (tree t, const char *msgid, void *data)
|
||||
warn_uninit (tree t, const char *gmsgid, void *data)
|
||||
{
|
||||
tree var = SSA_NAME_VAR (t);
|
||||
tree def = SSA_NAME_DEF_STMT (t);
|
||||
|
@ -1107,7 +1107,7 @@ warn_uninit (tree t, const char *msgid, void *data)
|
|||
locus = (context != NULL && EXPR_HAS_LOCATION (context)
|
||||
? EXPR_LOCUS (context)
|
||||
: &DECL_SOURCE_LOCATION (var));
|
||||
warning (0, msgid, locus, var);
|
||||
warning (0, gmsgid, locus, var);
|
||||
TREE_NO_WARNING (var) = 1;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue