From 6f5379961d1004b389cdf22169326f3f906e5340 Mon Sep 17 00:00:00 2001 From: Joey Schulze Date: Wed, 8 Feb 2006 22:20:48 +0000 Subject: [PATCH] Added support for charsets that can't display certain characters, which will then be replaced by question marks --- charset.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/charset.c b/charset.c index 1585683..a608829 100644 --- a/charset.c +++ b/charset.c @@ -20,6 +20,7 @@ #include #include #include +#include char *charset = NULL; @@ -60,7 +61,23 @@ char *convert_word(const char *encoding, char *inbuf, char *outbuf, size_t outby inptr = inbuf; outptr = outbuf; - nconv = iconv (cd, &inptr, &inbytesleft, &outptr, &outbytesleft); + while (1) { + nconv = iconv (cd, &inptr, &inbytesleft, &outptr, &outbytesleft); + + if (nconv != -1) + break; + + if (errno == EILSEQ && outsize-outbytesleft >= 0 && outbytesleft > 1) { + outbuf[outsize-outbytesleft] = '?'; + outbuf[outsize-outbytesleft+1] = '\0'; + outbytesleft--; + inbytesleft--; + outptr++; + inptr++; + } else + break; + } + iconv_close(cd); if (nconv == -1 && outsize-outbytesleft >= 0) -- 2.20.1