summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2005-06-06 19:31:40 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2005-06-06 19:31:40 +0000
commit380c66974cee2bb4a5281c8c11f3632bb21118e5 (patch)
treec8a8fb885e6d7542f092ff09cfbce8b498ccf63e
parentb74b821630d81d06cd6f46c510e81a52f6869943 (diff)
downloadgcc-380c66974cee2bb4a5281c8c11f3632bb21118e5.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@100676 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ABOUT-GCC-NLS11
-rw-r--r--gcc/ChangeLog31
-rw-r--r--gcc/c-common.c20
-rw-r--r--gcc/c-decl.c8
-rw-r--r--gcc/c-errors.c12
-rw-r--r--gcc/c-parser.c6
-rw-r--r--gcc/c-pragma.c5
-rw-r--r--gcc/c-typeck.c90
-rw-r--r--gcc/collect2.c24
-rw-r--r--gcc/config/c4x/c4x-c.c2
-rw-r--r--gcc/config/darwin-c.c2
-rw-r--r--gcc/config/rs6000/rs6000-c.c4
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/error.c36
-rw-r--r--gcc/diagnostic.c64
-rw-r--r--gcc/doc/install.texi2
-rw-r--r--gcc/final.c6
-rw-r--r--gcc/gcc.c24
-rw-r--r--gcc/gcov.c6
-rw-r--r--gcc/intl.h4
-rw-r--r--gcc/java/ChangeLog9
-rw-r--r--gcc/java/gjavah.c13
-rw-r--r--gcc/java/java-tree.h2
-rw-r--r--gcc/java/jv-scan.c28
-rw-r--r--gcc/java/parse.y26
-rw-r--r--gcc/po/ChangeLog8
-rw-r--r--gcc/po/exgettext55
-rw-r--r--gcc/protoize.c6
-rw-r--r--gcc/rtl-error.c12
-rw-r--r--gcc/tree-inline.c18
-rw-r--r--gcc/tree-ssa.c4
31 files changed, 328 insertions, 216 deletions
diff --git a/gcc/ABOUT-GCC-NLS b/gcc/ABOUT-GCC-NLS
index b0919d1b2ac..8107d583e07 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 0bbc3a6afe2..a087a3d3616 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 66fe3f2f27e..237f7d3a3e2 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 ec94f95420c..27d03eb8c3b 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 fa71b8cfa97..ccdbf7ef7cc 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 1207e66135d..abb8b229132 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 bf1c4581a1d..408ecdd1e3c 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 9d41433b397..25a280a6d54 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 cc1ac32802d..f89a925124c 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 fa30b439f39..5118871ac2d 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 db0036a0bf5..6eb8d2ba405 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 4fa46b4eed0..74826918349 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 e493e10b0f7..cbfe7649936 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 8eab2292696..71b7173945e 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 e48133299af..35bce25d97f 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 = &ap;
- 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 8d816be3ef1..d4c9a027e73 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 2e8a7a8d6df..5b7ac3cb5bf 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)
diff --git a/gcc/gcc.c b/gcc/gcc.c
index 0820bd7cac0..9be4a293371 100644
--- a/gcc/gcc.c
+++ b/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);
}
diff --git a/gcc/gcov.c b/gcc/gcov.c
index 984721a058b..9803672dc41 100644
--- a/gcc/gcov.c
+++ b/gcc/gcov.c
@@ -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);
}
diff --git a/gcc/intl.h b/gcc/intl.h
index 1166794ed74..cca596d984d 100644
--- a/gcc/intl.h
+++ b/gcc/intl.h
@@ -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 117cea996d4..aaca59db0eb 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 d25dab8d0f7..5b36dae34bc 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 37995632f21..53e9cfd1a47 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 a283328847e..0f09e91d2ea 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 9067dfc1ba2..632b7ec43fc 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 dac737f8a93..1a0df14db12 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 3408cb79066..40c646390cf 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 b7c2ec6669c..e9f177ea73f 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 db795929e66..3521c1d361a 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 28bdf6cc478..6d2ef06eb27 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 4a4da1c90ed..03e39a5ee55 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;
}