X-Git-Url: http://git.archive.openwrt.org/?a=blobdiff_plain;f=package%2Flibs%2Flibiconv%2Fsrc%2Ficonv.c;h=c3cfefa3cc9a6ad78f93a14ba60ff6c66bb31383;hb=bbd7ca5aeb25d3f698b7bc5b6f4ef60cdd80a792;hp=cb4e947758c1c4ee2e18934bb0c4fda0cd563573;hpb=e5b1a6e57b70b493e8caa1591cf6d429caa81716;p=openwrt.git diff --git a/package/libs/libiconv/src/iconv.c b/package/libs/libiconv/src/iconv.c index cb4e947758..c3cfefa3cc 100644 --- a/package/libs/libiconv/src/iconv.c +++ b/package/libs/libiconv/src/iconv.c @@ -44,6 +44,15 @@ static const unsigned char charsets[] = "\003" "UTF-32LE" "\0" "\006" "ASCII" "\0" "\006" "US-ASCII" "\0" + "\006" "ISO646-US" "\0" + "\006" "ISO_646.IRV:1991" "\0" + "\006" "ISO-IR-6" "\0" + "\006" "ANSI_X3.4-1968" "\0" + "\006" "ANSI_X3.4-1986" "\0" + "\006" "CP367" "\0" + "\006" "IBM367" "\0" + "\006" "US" "\0" + "\006" "CSASCII" "\0" "\007" "ISO-8859-1" "\0" "\007" "LATIN1" "\0" "\010" "ISO-8859-15""\0" @@ -244,7 +253,7 @@ static inline int utf8dec_wchar(wchar_t *c, unsigned char *in, size_t inb) return -1; } -static inline char latin9_translit(wchar_t c) +static inline wchar_t latin9_translit(wchar_t c) { /* a number of trivial iso-8859-15 <> utf-8 transliterations */ switch (c) { @@ -256,7 +265,7 @@ static inline char latin9_translit(wchar_t c) case 0x0152: return 0xBC; /* OE */ case 0x0153: return 0xBD; /* oe */ case 0x0178: return 0xBE; /* Y diaeresis */ - default: return '?'; + default: return 0xFFFD; /* cannot translate */ } } @@ -394,9 +403,9 @@ charok: c = latin9_translit(c); /* fall through */ case LATIN_1: + if (c > 0xff) goto ilseq; if (!*outb) goto toobig; - if (c < 0x100) **out = c; - else x++, **out = '*'; //FIXME: translit? + **out = c; ++*out; --*outb; break;