From 1b50dff802c0aa187c8947af9a017495e98c097a Mon Sep 17 00:00:00 2001 From: Oliver Kiddle Date: Thu, 3 Mar 2005 14:13:03 +0000 Subject: 20921: using UCS-4BE instead of ISO-10646 to identify character encoding is more portable, find more encodings in iconv completion on Solaris 20924: make error message more specific --- ChangeLog | 5 +++++ Completion/Unix/Command/_iconv | 4 +++- Src/utils.c | 6 +++--- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index c94e60fba..1cfb1edcd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2005-03-03 Oliver Kiddle + * 20921, 20924: Src/utils.c, Completion/Unix/Command/_iconv: + using UCS-4BE instead of ISO-10646 to identify character + encoding is more portable; make error message more specific; + find more encodings in iconv completion on Solaris + * Henryk Konsek: 20918 (modified): Completion/Unix/Command/_unace: new completion for unace diff --git a/Completion/Unix/Command/_iconv b/Completion/Unix/Command/_iconv index e1528aec5..92fa17e34 100644 --- a/Completion/Unix/Command/_iconv +++ b/Completion/Unix/Command/_iconv @@ -1,7 +1,8 @@ #compdef iconv -local expl curcontext="$curcontext" state line codeset ret=1 +local expl curcontext="$curcontext" state line ret=1 local LOCPATH="${LOCPATH:-/usr/lib/nls/loc}" +local -U codeset if _pick_variant gnu=GNU unix --version; then @@ -40,6 +41,7 @@ else if [[ $state = codeset ]]; then if [[ -f /usr/lib/iconv/iconv_data ]]; then # IRIX & Solaris codeset=( ${${(f)"$(=0;i--) { inbuf[i] = wval & 0xff; wval >>= 8; } - cd = iconv_open(nl_langinfo(CODESET), "ISO-10646"); + cd = iconv_open(nl_langinfo(CODESET), "UCS-4BE"); if (cd == (iconv_t)-1) { zerr("cannot do charset conversion", NULL, 0); if (fromwhere == 4) { @@ -3637,7 +3637,7 @@ getkeystring(char *s, int *len, int fromwhere, int *misc) count = iconv(cd, &inptr, &inbytes, &t, &outbytes); iconv_close(cd); if (count == (size_t)-1) { - zerr("cannot do charset conversion", NULL, 0); + zerr("character not in range", NULL, 0); *t = '\0'; *len = t - buf; return buf; -- cgit 1.4.1