which will then be replaced by question marks
#include <langinfo.h>
#include <string.h>
#include <iconv.h>
+#include <errno.h>
char *charset = NULL;
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)