| Index: gcc/gcc/intl.c
|
| diff --git a/gcc/gcc/intl.c b/gcc/gcc/intl.c
|
| index 4c8943a43a42c8c81c9e0098256111d357dcf09b..f75be1f2144f7674d7001417ecf08a5ef2198647 100644
|
| --- a/gcc/gcc/intl.c
|
| +++ b/gcc/gcc/intl.c
|
| @@ -1,5 +1,5 @@
|
| /* Message translation utilities.
|
| - Copyright (C) 2001, 2003, 2004, 2005, 2007, 2008
|
| + Copyright (C) 2001, 2003, 2004, 2005, 2007, 2008, 2009, 2010
|
| Free Software Foundation, Inc.
|
|
|
| This file is part of GCC.
|
| @@ -34,6 +34,12 @@ const char *open_quote = "'";
|
| /* Closing quotation mark for diagnostics. */
|
| const char *close_quote = "'";
|
|
|
| +/* The name of the locale encoding. */
|
| +const char *locale_encoding = NULL;
|
| +
|
| +/* Whether the locale is using UTF-8. */
|
| +bool locale_utf8 = false;
|
| +
|
| #ifdef ENABLE_NLS
|
|
|
| /* Initialize the translation library for GCC. This performs the
|
| @@ -60,20 +66,22 @@ gcc_init_libintl (void)
|
| /* Closing quotation mark. */
|
| close_quote = _("'");
|
|
|
| - if (!strcmp (open_quote, "`") && !strcmp (close_quote, "'"))
|
| - {
|
| #if defined HAVE_LANGINFO_CODESET
|
| - const char *encoding;
|
| + locale_encoding = nl_langinfo (CODESET);
|
| + if (locale_encoding != NULL
|
| + && (!strcasecmp (locale_encoding, "utf-8")
|
| + || !strcasecmp (locale_encoding, "utf8")))
|
| + locale_utf8 = true;
|
| #endif
|
| +
|
| + if (!strcmp (open_quote, "`") && !strcmp (close_quote, "'"))
|
| + {
|
| /* Untranslated quotes that it may be possible to replace with
|
| U+2018 and U+2019; but otherwise use "'" instead of "`" as
|
| opening quote. */
|
| open_quote = "'";
|
| #if defined HAVE_LANGINFO_CODESET
|
| - encoding = nl_langinfo (CODESET);
|
| - if (encoding != NULL
|
| - && (!strcasecmp (encoding, "utf-8")
|
| - || !strcasecmp (encoding, "utf8")))
|
| + if (locale_utf8)
|
| {
|
| open_quote = "\xe2\x80\x98";
|
| close_quote = "\xe2\x80\x99";
|
| @@ -112,3 +120,33 @@ gcc_gettext_width (const char *msgstr)
|
| #endif
|
|
|
| #endif /* ENABLE_NLS */
|
| +
|
| +#ifndef ENABLE_NLS
|
| +
|
| +const char *
|
| +fake_ngettext (const char *singular, const char *plural, unsigned long n)
|
| +{
|
| + if (n == 1UL)
|
| + return singular;
|
| +
|
| + return plural;
|
| +}
|
| +
|
| +#endif
|
| +
|
| +/* Return the indent for successive lines, using the width of
|
| + the STR. STR must have been translated already. The string
|
| + must be freed by the caller. */
|
| +
|
| +char *
|
| +get_spaces (const char *str)
|
| +{
|
| + size_t len = gcc_gettext_width (str);
|
| + char *spaces = XNEWVEC(char, len + 1);
|
| + memset (spaces, ' ', len);
|
| + spaces[len] = '\0';
|
| + return spaces;
|
| +}
|
| +
|
| +
|
| +
|
|
|