diff options
author | jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-05-04 12:23:50 +0000 |
---|---|---|
committer | jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-05-04 12:23:50 +0000 |
commit | 27746e01e73b4caa0b4c6237ce6f21c8c5c1eb6c (patch) | |
tree | f7e08408fe3883d28eb96bdfd6745551e07b82a0 /gcc/intl.c | |
parent | 97d4c6a6f9fc5abb5e0751c9aec6e939b849bdbe (diff) | |
download | gcc-27746e01e73b4caa0b4c6237ce6f21c8c5c1eb6c.tar.gz |
* intl.c (locale_encoding, locale_utf8): New.
(gcc_init_libintl): Initialize locale_encoding and locale_utf8.
* intl.h (locale_encoding, locale_utf8): Declare.
* pretty-print.c: Include ggc.h. Include iconv.h if HAVE_ICONV.
(pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
New.
* pretty-print.h (pp_identifier): Call identifier_to_locale on ID
argument.
(pp_tree_identifier): Define to call pp_base_tree_identifier.
(pp_base_tree_identifier): Declare as function.
(identifier_to_locale): Declare.
* Makefile.in (pretty-print.o): Update dependencies.
* varasm.c (finish_aliases_1): Use %qE for identifiers in
diagnostics.
testsuite:
* gcc.dg/attr-alias-5.c, gcc.dg/ucnid-7.c: New tests.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147096 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/intl.c')
-rw-r--r-- | gcc/intl.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/gcc/intl.c b/gcc/intl.c index 4c8943a43a4..5b486151dcd 100644 --- a/gcc/intl.c +++ b/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 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"; |