diff options
author | Andrew Tridgell <tridge@samba.org> | 2004-08-30 12:03:01 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:58:25 -0500 |
commit | 2de9ce9499803bac73ae9f49ce1fa7b57762c389 (patch) | |
tree | 73db3aa5ce4b57787c3146ea30794d7f9fbf6b65 /source4 | |
parent | f891ff694b84304ba34ec3b6367e52b30d77be59 (diff) | |
download | samba-2de9ce9499803bac73ae9f49ce1fa7b57762c389.tar.gz samba-2de9ce9499803bac73ae9f49ce1fa7b57762c389.tar.bz2 samba-2de9ce9499803bac73ae9f49ce1fa7b57762c389.zip |
r2106: try to cope with a wider range of UTF-16 characters when we are using
an external libiconv library.
(This used to be commit 168be7fbd7ae876ded39f73a7835e91b35e67244)
Diffstat (limited to 'source4')
-rw-r--r-- | source4/lib/charcnv.c | 8 | ||||
-rw-r--r-- | source4/lib/iconv.c | 5 |
2 files changed, 10 insertions, 3 deletions
diff --git a/source4/lib/charcnv.c b/source4/lib/charcnv.c index b84814b41c..8204a3bcdd 100644 --- a/source4/lib/charcnv.c +++ b/source4/lib/charcnv.c @@ -47,7 +47,7 @@ static const char *charset_name(charset_t ch) { const char *ret = NULL; - if (ch == CH_UCS2) ret = "UCS-2LE"; + if (ch == CH_UCS2) ret = "UTF-16LE"; else if (ch == CH_UNIX) ret = lp_unix_charset(); else if (ch == CH_DOS) ret = lp_dos_charset(); else if (ch == CH_DISPLAY) ret = lp_display_charset(); @@ -82,10 +82,12 @@ void init_iconv(void) /* so that charset_name() works we need to get the UNIX<->UCS2 going first */ if (!conv_handles[CH_UNIX][CH_UCS2]) - conv_handles[CH_UNIX][CH_UCS2] = smb_iconv_open("UCS-2LE", "ASCII"); + conv_handles[CH_UNIX][CH_UCS2] = smb_iconv_open(charset_name(CH_UCS2), + "ASCII"); if (!conv_handles[CH_UCS2][CH_UNIX]) - conv_handles[CH_UCS2][CH_UNIX] = smb_iconv_open("ASCII", "UCS-2LE"); + conv_handles[CH_UCS2][CH_UNIX] = smb_iconv_open("ASCII", + charset_name(CH_UCS2)); for (c1=0;c1<NUM_CHARSETS;c1++) { for (c2=0;c2<NUM_CHARSETS;c2++) { diff --git a/source4/lib/iconv.c b/source4/lib/iconv.c index 4cca6d56d2..c869c253cf 100644 --- a/source4/lib/iconv.c +++ b/source4/lib/iconv.c @@ -55,9 +55,14 @@ static size_t iconv_copy (void *,const char **, size_t *, char **, size_t *); static size_t iconv_swab (void *,const char **, size_t *, char **, size_t *); static const struct charset_functions const builtin_functions[] = { + /* windows is really neither UCS-2 not UTF-16 */ {"UCS-2LE", iconv_copy, iconv_copy}, + {"UTF-16LE", iconv_copy, iconv_copy}, {"UCS-2BE", iconv_swab, iconv_swab}, + + /* we include the UTF-8 alias to cope with differing locale settings */ {"UTF8", utf8_pull, utf8_push}, + {"UTF-8", utf8_pull, utf8_push}, {"ASCII", ascii_pull, ascii_push}, {"UCS2-HEX", ucs2hex_pull, ucs2hex_push}, {NULL, NULL, NULL} |