diff options
author | Jakub Jelinek <jakub@redhat.com> | 2005-06-06 21:31:40 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2005-06-06 21:31:40 +0200 |
commit | 4b794eaf73ef8df7689d1e9de146e00398f2d1fd (patch) | |
tree | c8a8fb885e6d7542f092ff09cfbce8b498ccf63e /gcc | |
parent | 6be74c4f5c988270ef3e4d4664a15b2b2e205f9a (diff) | |
download | gcc-4b794eaf73ef8df7689d1e9de146e00398f2d1fd.zip gcc-4b794eaf73ef8df7689d1e9de146e00398f2d1fd.tar.gz gcc-4b794eaf73ef8df7689d1e9de146e00398f2d1fd.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ABOUT-GCC-NLS | 11 | ||||
-rw-r--r-- | gcc/ChangeLog | 31 | ||||
-rw-r--r-- | gcc/c-common.c | 20 | ||||
-rw-r--r-- | gcc/c-decl.c | 8 | ||||
-rw-r--r-- | gcc/c-errors.c | 12 | ||||
-rw-r--r-- | gcc/c-parser.c | 6 | ||||
-rw-r--r-- | gcc/c-pragma.c | 5 | ||||
-rw-r--r-- | gcc/c-typeck.c | 90 | ||||
-rw-r--r-- | gcc/collect2.c | 24 | ||||
-rw-r--r-- | gcc/config/c4x/c4x-c.c | 2 | ||||
-rw-r--r-- | gcc/config/darwin-c.c | 2 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000-c.c | 4 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/error.c | 36 | ||||
-rw-r--r-- | gcc/diagnostic.c | 64 | ||||
-rw-r--r-- | gcc/doc/install.texi | 2 | ||||
-rw-r--r-- | gcc/final.c | 6 | ||||
-rw-r--r-- | gcc/gcc.c | 24 | ||||
-rw-r--r-- | gcc/gcov.c | 6 | ||||
-rw-r--r-- | gcc/intl.h | 4 | ||||
-rw-r--r-- | gcc/java/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/java/gjavah.c | 13 | ||||
-rw-r--r-- | gcc/java/java-tree.h | 2 | ||||
-rw-r--r-- | gcc/java/jv-scan.c | 28 | ||||
-rw-r--r-- | gcc/java/parse.y | 26 | ||||
-rw-r--r-- | gcc/po/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/po/exgettext | 55 | ||||
-rw-r--r-- | gcc/protoize.c | 6 | ||||
-rw-r--r-- | gcc/rtl-error.c | 12 | ||||
-rw-r--r-- | gcc/tree-inline.c | 18 | ||||
-rw-r--r-- | gcc/tree-ssa.c | 4 |
31 files changed, 328 insertions, 216 deletions
diff --git a/gcc/ABOUT-GCC-NLS b/gcc/ABOUT-GCC-NLS index b0919d1..8107d58 100644 --- a/gcc/ABOUT-GCC-NLS +++ b/gcc/ABOUT-GCC-NLS @@ -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. diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0bbc3a6..a087a3d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. diff --git a/gcc/c-common.c b/gcc/c-common.c index 66fe3f2..237f7d3 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -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) { diff --git a/gcc/c-decl.c b/gcc/c-decl.c index ec94f95..27d03eb 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -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); } diff --git a/gcc/c-errors.c b/gcc/c-errors.c index fa71b8c..ccdbf7e 100644 --- a/gcc/c-errors.c +++ b/gcc/c-errors.c @@ -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); diff --git a/gcc/c-parser.c b/gcc/c-parser.c index 1207e66..abb8b229 100644 --- a/gcc/c-parser.c +++ b/gcc/c-parser.c @@ -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. */ diff --git a/gcc/c-pragma.c b/gcc/c-pragma.c index bf1c458..408ecdd 100644 --- a/gcc/c-pragma.c +++ b/gcc/c-pragma.c @@ -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(()) { diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 9d41433..25a280a 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -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); } diff --git a/gcc/collect2.c b/gcc/collect2.c index cc1ac32..f89a925 100644 --- a/gcc/collect2.c +++ b/gcc/collect2.c @@ -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); } diff --git a/gcc/config/c4x/c4x-c.c b/gcc/config/c4x/c4x-c.c index fa30b43..5118871 100644 --- a/gcc/config/c4x/c4x-c.c +++ b/gcc/config/c4x/c4x-c.c @@ -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) diff --git a/gcc/config/darwin-c.c b/gcc/config/darwin-c.c index db0036a..6eb8d2b 100644 --- a/gcc/config/darwin-c.c +++ b/gcc/config/darwin-c.c @@ -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; diff --git a/gcc/config/rs6000/rs6000-c.c b/gcc/config/rs6000/rs6000-c.c index 4fa46b4..7482691 100644 --- a/gcc/config/rs6000/rs6000-c.c +++ b/gcc/config/rs6000/rs6000-c.c @@ -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) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e493e10..cbfe764 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -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 diff --git a/gcc/cp/error.c b/gcc/cp/error.c index 8eab229..71b7173 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -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); diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c index e481332..35bce25 100644 --- a/gcc/diagnostic.c +++ b/gcc/diagnostic.c @@ -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); } diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index 8d816be..d4c9a02 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -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}. diff --git a/gcc/final.c b/gcc/final.c index 2e8a7a8..5b7ac3c 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -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) @@ -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; diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 117cea9..aaca59d 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -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: diff --git a/gcc/java/gjavah.c b/gcc/java/gjavah.c index d25dab8..5b36dae 100644 --- a/gcc/java/gjavah.c +++ b/gcc/java/gjavah.c @@ -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; diff --git a/gcc/java/java-tree.h b/gcc/java/java-tree.h index 3799563..53e9cfd 100644 --- a/gcc/java/java-tree.h +++ b/gcc/java/java-tree.h @@ -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); diff --git a/gcc/java/jv-scan.c b/gcc/java/jv-scan.c index a283328..0f09e91 100644 --- a/gcc/java/jv-scan.c +++ b/gcc/java/jv-scan.c @@ -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); } diff --git a/gcc/java/parse.y b/gcc/java/parse.y index 9067dfc1..632b7ec 100644 --- a/gcc/java/parse.y +++ b/gcc/java/parse.y @@ -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); diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog index dac737f..1a0df14 100644 --- a/gcc/po/ChangeLog +++ b/gcc/po/ChangeLog @@ -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. diff --git a/gcc/po/exgettext b/gcc/po/exgettext index 3408cb7..40c6463 100644 --- a/gcc/po/exgettext +++ b/gcc/po/exgettext @@ -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 = "--keyword=" name } + else { keyword = "--keyword=" name ":" n } + if (format) { + keyword=keyword "\n--flag=" name ":" n ":" format + } - if (n == 1) { keyword = name } - else { keyword = name ":" n } - - 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 diff --git a/gcc/protoize.c b/gcc/protoize.c index b7c2ec6..e9f177e 100644 --- a/gcc/protoize.c +++ b/gcc/protoize.c @@ -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); } diff --git a/gcc/rtl-error.c b/gcc/rtl-error.c index db79592..3521c1d 100644 --- a/gcc/rtl-error.c +++ b/gcc/rtl-error.c @@ -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); } diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 28bdf6c..6d2ef06 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -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; } diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index 4a4da1c..03e39a5 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -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; } |