draw: use only one iconv for all
Signed-off-by: Julien Danjou <julien@danjou.info>
This commit is contained in:
parent
58eac8af1c
commit
9c495c0dee
|
@ -56,6 +56,8 @@ void draw_parser_data_wipe(draw_parser_data_t *pdata)
|
||||||
draw_image_delete(&pdata->bg_image);
|
draw_image_delete(&pdata->bg_image);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static iconv_t iso2utf8 = (iconv_t) -1;
|
||||||
|
|
||||||
/** Convert text from any charset to UTF-8 using iconv.
|
/** Convert text from any charset to UTF-8 using iconv.
|
||||||
* \param iso The ISO string to convert.
|
* \param iso The ISO string to convert.
|
||||||
* \param len The string size.
|
* \param len The string size.
|
||||||
|
@ -64,7 +66,6 @@ void draw_parser_data_wipe(draw_parser_data_t *pdata)
|
||||||
char *
|
char *
|
||||||
draw_iso2utf8(const char *iso, size_t len)
|
draw_iso2utf8(const char *iso, size_t len)
|
||||||
{
|
{
|
||||||
iconv_t iso2utf8;
|
|
||||||
size_t utf8len;
|
size_t utf8len;
|
||||||
char *utf8, *utf8p;
|
char *utf8, *utf8p;
|
||||||
|
|
||||||
|
@ -74,16 +75,19 @@ draw_iso2utf8(const char *iso, size_t len)
|
||||||
if(!a_strcmp(nl_langinfo(CODESET), "UTF-8"))
|
if(!a_strcmp(nl_langinfo(CODESET), "UTF-8"))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
iso2utf8 = iconv_open("UTF-8", nl_langinfo(CODESET));
|
|
||||||
if(iso2utf8 == (iconv_t) -1)
|
if(iso2utf8 == (iconv_t) -1)
|
||||||
{
|
{
|
||||||
if(errno == EINVAL)
|
iso2utf8 = iconv_open("UTF-8", nl_langinfo(CODESET));
|
||||||
warn("unable to convert text from %s to UTF-8, not available",
|
if(iso2utf8 == (iconv_t) -1)
|
||||||
nl_langinfo(CODESET));
|
{
|
||||||
else
|
if(errno == EINVAL)
|
||||||
warn("unable to convert text: %s", strerror(errno));
|
warn("unable to convert text from %s to UTF-8, not available",
|
||||||
|
nl_langinfo(CODESET));
|
||||||
|
else
|
||||||
|
warn("unable to convert text: %s", strerror(errno));
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
utf8len = 2 * len + 1;
|
utf8len = 2 * len + 1;
|
||||||
|
@ -95,9 +99,6 @@ draw_iso2utf8(const char *iso, size_t len)
|
||||||
p_delete(&utf8p);
|
p_delete(&utf8p);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(iconv_close(iso2utf8))
|
|
||||||
warn("error closing iconv");
|
|
||||||
|
|
||||||
return utf8p;
|
return utf8p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue