1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-10-28 05:00:59 +01:00

20862: attempt to fix configure scripts to detect iconv properly

This commit is contained in:
Oliver Kiddle 2005-02-24 16:53:07 +00:00
parent 691dd7e529
commit ebe071866d
4 changed files with 51 additions and 13 deletions

View file

@ -3456,6 +3456,7 @@ dquotedzputs(char const *s, FILE *stream)
# if defined(HAVE_NL_LANGINFO) && defined(CODESET) && !defined(__STDC_ISO_10646__)
/* Convert a character from UCS4 encoding to UTF-8 */
/**/
size_t
ucs4toutf8(char *dest, unsigned int wval)
{
@ -3480,7 +3481,7 @@ ucs4toutf8(char *dest, unsigned int wval)
case 4: dest[3] = (wval & 0x3f) | 0x80; wval >>= 6;
case 3: dest[2] = (wval & 0x3f) | 0x80; wval >>= 6;
case 2: dest[1] = (wval & 0x3f) | 0x80; wval >>= 6;
*dest = wval | (0xfc << (6 - len)) & 0xfc;
*dest = wval | ((0xfc << (6 - len)) & 0xfc);
break;
case 1: *dest = wval;
}
@ -3522,11 +3523,10 @@ getkeystring(char *s, int *len, int fromwhere, int *misc)
size_t count;
#else
unsigned int wval;
# if defined(HAVE_NL_LANGINFO) && defined(CODESET) && (defined(HAVE_ICONV_H) || defined(HAVE_ICONV) || defined(HAVE_LIBICONV))
# if defined(HAVE_NL_LANGINFO) && defined(CODESET) && defined(HAVE_ICONV)
iconv_t cd;
char inbuf[4];
size_t inbytes, outbytes;
char *inptr;
size_t count;
# endif
#endif
@ -3643,10 +3643,10 @@ getkeystring(char *s, int *len, int fromwhere, int *misc)
t += ucs4toutf8(t, wval);
continue;
} else {
# if defined(HAVE_ICONV_H) || defined(HAVE_ICONV) || defined(HAVE_LIBICONV)
# ifdef HAVE_ICONV
ICONV_CONST char *inptr = inbuf;
inbytes = 4;
outbytes = 6;
inptr = inbuf;
/* assume big endian convention for UCS-4 */
for (i=3;i>=0;i--) {
inbuf[i] = wval & 0xff;
@ -3664,7 +3664,7 @@ getkeystring(char *s, int *len, int fromwhere, int *misc)
*len = t - buf;
return buf;
}
count = iconv(cd, (char **)&inptr, &inbytes, &t, &outbytes);
count = iconv(cd, &inptr, &inbytes, &t, &outbytes);
iconv_close(cd);
if (count == (size_t)-1) {
zerr("cannot do charset conversion", NULL, 0);