diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2005-02-26 07:31:20 +0000 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2005-02-26 07:31:20 +0000 |
commit | f93ba587561d0fc84d779e86039427828956c77c (patch) | |
tree | 6b7a194d7bed0aee63dc86bdcd911785dd0ba41b /lib | |
parent | 641ef33fac78f3200c38c830bc6513062f3d3324 (diff) | |
download | coreutils-f93ba587561d0fc84d779e86039427828956c77c.tar.xz |
Sync from gnulib.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ChangeLog | 4 | ||||
-rwxr-xr-x | lib/config.charset | 42 | ||||
-rw-r--r-- | lib/gettext.h | 10 | ||||
-rw-r--r-- | lib/localcharset.c | 8 |
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); |