X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=utf8-locale.c;h=9946cc9c7e3ac38472e41820113c0b55fcca5a67;hb=4217fc0e76c6560a5ad43cffc314f0f28ad9deec;hp=c89aa5c80417d182c49a53016c74b7c8f13bb29f;hpb=5c40e570e3bd0f3d7139e4d1e429527400c50133;p=gedcom-parse.git diff --git a/utf8-locale.c b/utf8-locale.c index c89aa5c..9946cc9 100644 --- a/utf8-locale.c +++ b/utf8-locale.c @@ -60,7 +60,7 @@ int open_conversion_contexts() } } -char* convert_utf8_to_locale(char* input) +char* convert_utf8_to_locale(char* input, int *conv_fails) { size_t insize = strlen(input); size_t outsize; @@ -73,6 +73,7 @@ char* convert_utf8_to_locale(char* input) assert(utf8_to_locale != (iconv_t) -1); /* make sure we start from an empty state */ iconv(utf8_to_locale, NULL, NULL, NULL, NULL); + if (conv_fails != NULL) *conv_fails = 0; /* set up output buffer (empty it) */ outptr = outbuffer; outsize = outbufsize; @@ -92,6 +93,7 @@ char* convert_utf8_to_locale(char* input) else if (errno == EILSEQ) { /* skip over character */ const char* unkn_ptr = the_unknown; + if (conv_fails != NULL) (*conv_fails)++; if ((*inptr & 0x80) == 0) { /* an ASCII character, just skip one (this case is very improbable) */ inptr++; insize--;