#include <stdlib.h>
#include <string.h>
#include <errno.h>
+#include <ctype.h>
struct lms_charset_conv {
iconv_t check;
return 0;
}
+static void
+_fix_non_ascii(char *s, int len)
+{
+ for (; len > 0; len--, s++)
+ if (!isprint(*s))
+ *s = '?';
+}
+
/**
* If required, do charset conversion to UTF-8.
*
*p_len, *p_str);
i = _conv(lcc->fallback, p_str, p_len, outstr, outlen);
if (i < 0) {
- memset(*p_str, '?', *p_len);
+ _fix_non_ascii(*p_str, *p_len);
free(outstr);
}
return i;
*p_len, *p_str);
i = _conv(lcc->fallback, p_str, p_len, outstr, outlen);
if (i < 0) {
- memset(*p_str, '?', *p_len);
+ _fix_non_ascii(*p_str, *p_len);
free(outstr);
}
return i;