diff options
author | kevlo <kevlo@FreeBSD.org> | 2011-11-18 03:05:20 +0000 |
---|---|---|
committer | kevlo <kevlo@FreeBSD.org> | 2011-11-18 03:05:20 +0000 |
commit | 1a26b28a9b13239c0dcae74ac1f94a5969fd2b3c (patch) | |
tree | 91e05f3019c9e61d84d991446d61ad595184fef3 /lib | |
parent | 3985e4e2af3096b00750b1a32f61f92d109f9372 (diff) | |
download | FreeBSD-src-1a26b28a9b13239c0dcae74ac1f94a5969fd2b3c.zip FreeBSD-src-1a26b28a9b13239c0dcae74ac1f94a5969fd2b3c.tar.gz |
Add unicode support to msdosfs and smbfs; original pathes from imura,
bug fixes by Kuan-Chung Chiu <buganini at gmail dot com>.
Tested by me in production for several days at work.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libkiconv/xlat16_iconv.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/libkiconv/xlat16_iconv.c b/lib/libkiconv/xlat16_iconv.c index ce06324..dc9dc86 100644 --- a/lib/libkiconv/xlat16_iconv.c +++ b/lib/libkiconv/xlat16_iconv.c @@ -74,6 +74,18 @@ kiconv_add_xlat16_cspair(const char *tocode, const char *fromcode, int flag) struct xlat16_table xt; void *data; char *p; + const char unicode[] = ENCODING_UNICODE; + + if ((flag & KICONV_WCTYPE) == 0 && + strcmp(unicode, tocode) != 0 && + strcmp(unicode, fromcode) != 0 && + kiconv_lookupconv(unicode) == 0) { + error = kiconv_add_xlat16_cspair(unicode, fromcode, flag); + if (error) + return (-1); + error = kiconv_add_xlat16_cspair(tocode, unicode, flag); + return (error); + } if (kiconv_lookupcs(tocode, fromcode) == 0) return (0); |