summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2005-02-26 07:31:20 +0000
committerPaul Eggert <eggert@cs.ucla.edu>2005-02-26 07:31:20 +0000
commitf93ba587561d0fc84d779e86039427828956c77c (patch)
tree6b7a194d7bed0aee63dc86bdcd911785dd0ba41b /lib
parent641ef33fac78f3200c38c830bc6513062f3d3324 (diff)
downloadcoreutils-f93ba587561d0fc84d779e86039427828956c77c.tar.xz
Sync from gnulib.
Diffstat (limited to 'lib')
-rw-r--r--lib/ChangeLog4
-rwxr-xr-xlib/config.charset42
-rw-r--r--lib/gettext.h10
-rw-r--r--lib/localcharset.c8
4 files changed, 57 insertions, 7 deletions
diff --git a/lib/ChangeLog b/lib/ChangeLog
index 5f8790f95..baa83dcc8 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,7 @@
+2005-02-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * config.charset, gettext.h, localcharset.c: Sync from gnulib.
+
2005-02-23 Paul Eggert <eggert@cs.ucla.edu>
* strftime.c: Include <stdbool.h>. Use bool where appropriate,
diff --git a/lib/config.charset b/lib/config.charset
index c80608af8..b3ce2ba93 100755
--- a/lib/config.charset
+++ b/lib/config.charset
@@ -37,12 +37,12 @@
# ISO-8859-4 Y osf solaris freebsd darwin
# ISO-8859-5 Y glibc aix hpux irix osf solaris freebsd darwin
# ISO-8859-6 Y glibc aix hpux solaris
-# ISO-8859-7 Y glibc aix hpux irix osf solaris
+# ISO-8859-7 Y glibc aix hpux irix osf solaris darwin
# ISO-8859-8 Y glibc aix hpux osf solaris
-# ISO-8859-9 Y glibc aix hpux irix osf solaris
-# ISO-8859-13 glibc
+# ISO-8859-9 Y glibc aix hpux irix osf solaris darwin
+# ISO-8859-13 glibc darwin
# ISO-8859-14 glibc
-# ISO-8859-15 glibc aix osf solaris freebsd
+# ISO-8859-15 glibc aix osf solaris freebsd darwin
# KOI8-R Y glibc solaris freebsd darwin
# KOI8-U Y glibc freebsd darwin
# KOI8-T glibc
@@ -99,7 +99,7 @@
# HP-KANA8 hpux
# DEC-KANJI osf
# DEC-HANYU osf
-# UTF-8 Y glibc aix hpux osf solaris
+# UTF-8 Y glibc aix hpux osf solaris darwin
#
# Note: Names which are not marked as being a MIME name should not be used in
# Internet protocols for information interchange (mail, news, etc.).
@@ -395,7 +395,7 @@ case "$os" in
echo "BIG5 BIG5"
echo "SJIS SHIFT_JIS"
;;
- darwin*)
+ darwin[56]*)
# Darwin 6.8 doesn't have nl_langinfo(CODESET); therefore
# localcharset.c falls back to using the full locale name
# from the environment variables.
@@ -436,6 +436,36 @@ case "$os" in
echo "ja_JP.SJIS SHIFT_JIS"
echo "ko_KR.EUC EUC-KR"
;;
+ darwin*)
+ # Darwin 7.5 has nl_langinfo(CODESET), but it is useless:
+ # - It returns the empty string when LANG is set to a locale of the
+ # form ll_CC, although ll_CC/LC_CTYPE is a symlink to an UTF-8
+ # LC_CTYPE file.
+ # - The environment variables LANG, LC_CTYPE, LC_ALL are not set by
+ # the system; nl_langinfo(CODESET) returns "US-ASCII" in this case.
+ # - The documentation says:
+ # "... all code that calls BSD system routines should ensure
+ # that the const *char parameters of these routines are in UTF-8
+ # encoding. All BSD system functions expect their string
+ # parameters to be in UTF-8 encoding and nothing else."
+ # It also says
+ # "An additional caveat is that string parameters for files,
+ # paths, and other file-system entities must be in canonical
+ # UTF-8. In a canonical UTF-8 Unicode string, all decomposable
+ # characters are decomposed ..."
+ # but this is not true: You can pass non-decomposed UTF-8 strings
+ # to file system functions, and it is the OS which will convert
+ # them to decomposed UTF-8 before accessing the file system.
+ # - The Apple Terminal application displays UTF-8 by default.
+ # - However, other applications are free to use different encodings:
+ # - xterm uses ISO-8859-1 by default.
+ # - TextEdit uses MacRoman by default.
+ # We prefer UTF-8 over decomposed UTF-8-MAC because one should
+ # minimize the use of decomposed Unicode. Unfortunately, through the
+ # Darwin file system, decomposed UTF-8 strings are leaked into user
+ # space nevertheless.
+ echo "* UTF-8"
+ ;;
beos*)
# BeOS has a single locale, and it has UTF-8 encoding.
echo "* UTF-8"
diff --git a/lib/gettext.h b/lib/gettext.h
index 835732e01..a0606dde5 100644
--- a/lib/gettext.h
+++ b/lib/gettext.h
@@ -36,6 +36,16 @@
# include <locale.h>
#endif
+/* Many header files from the libstdc++ coming with g++ 3.3 or newer include
+ <libintl.h>, which chokes if dcgettext is defined as a macro. So include
+ it now, to make later inclusions of <libintl.h> a NOP. */
+#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3)
+# include <cstdlib>
+# if (__GLIBC__ >= 2) || _GLIBCXX_HAVE_LIBINTL_H
+# include <libintl.h>
+# endif
+#endif
+
/* Disabled NLS.
The casts to 'const char *' serve the purpose of producing warnings
for invalid uses of the value returned from these functions.
diff --git a/lib/localcharset.c b/lib/localcharset.c
index 66099d5e3..662f3ad33 100644
--- a/lib/localcharset.c
+++ b/lib/localcharset.c
@@ -115,10 +115,16 @@ get_charset_aliases ()
{
#if !(defined VMS || defined WIN32)
FILE *fp;
- const char *dir = relocate (LIBDIR);
+ const char *dir;
const char *base = "charset.alias";
char *file_name;
+ /* Make it possible to override the charset.alias location. This is
+ necessary for running the testsuite before "make install". */
+ dir = getenv ("CHARSETALIASDIR");
+ if (dir == NULL || dir[0] == '\0')
+ dir = relocate (LIBDIR);
+
/* Concatenate dir and base into freshly allocated file_name. */
{
size_t dir_len = strlen (dir);