mirror of
https://github.com/rkd77/elinks.git
synced 2024-12-04 14:46:47 -05:00
[idn] convert_string instead of iconv
This commit is contained in:
parent
126803974a
commit
47a9356259
@ -544,33 +544,11 @@ add_uri_to_string(struct string *string, const struct uri *uri,
|
|||||||
char *host = NULL;
|
char *host = NULL;
|
||||||
#if defined(CONFIG_NLS) || defined(CONFIG_GETTEXT)
|
#if defined(CONFIG_NLS) || defined(CONFIG_GETTEXT)
|
||||||
if (current_charset != -1 && !is_cp_utf8(current_charset)) {
|
if (current_charset != -1 && !is_cp_utf8(current_charset)) {
|
||||||
size_t iconv_res;
|
int utf8_cp = get_cp_index("utf-8");
|
||||||
size_t ileft = uri->hostlen;
|
struct conv_table *ctable = get_translation_table(current_charset, utf8_cp);
|
||||||
size_t oleft = ileft * 8;
|
host = convert_string(ctable, uri->host, uri->hostlen, utf8_cp, CSM_NONE,
|
||||||
char *inbuf, *outbuf;
|
NULL, NULL, NULL);
|
||||||
char *utf8_data = (char *)mem_calloc(1, oleft);
|
|
||||||
iconv_t cd;
|
|
||||||
|
|
||||||
if (!utf8_data) {
|
|
||||||
goto error;
|
|
||||||
}
|
}
|
||||||
cd = iconv_open("utf-8", get_cp_mime_name(current_charset));
|
|
||||||
if (cd == (iconv_t)-1) {
|
|
||||||
mem_free(utf8_data);
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
inbuf = uri->host;
|
|
||||||
outbuf = utf8_data;
|
|
||||||
iconv_res = iconv(cd, &inbuf, &ileft, &outbuf, &oleft);
|
|
||||||
|
|
||||||
if (iconv_res == -1) {
|
|
||||||
mem_free(utf8_data);
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
iconv_close(cd);
|
|
||||||
host = utf8_data;
|
|
||||||
}
|
|
||||||
error:
|
|
||||||
#endif
|
#endif
|
||||||
if (!host) {
|
if (!host) {
|
||||||
host = memacpy(uri->host, uri->hostlen);
|
host = memacpy(uri->host, uri->hostlen);
|
||||||
|
Loading…
Reference in New Issue
Block a user