Loading lib/idn_win32.c +14 −10 Original line number Diff line number Diff line Loading @@ -65,12 +65,13 @@ WINBASEAPI int WINAPI IdnToUnicode(DWORD dwFlags, #define IDN_MAX_LENGTH 255 int curl_win32_idn_to_ascii(const char *in, char **out); int curl_win32_ascii_to_idn(const char *in, char **out); bool curl_win32_idn_to_ascii(const char *in, char **out); bool curl_win32_ascii_to_idn(const char *in, char **out); int curl_win32_idn_to_ascii(const char *in, char **out) bool curl_win32_idn_to_ascii(const char *in, char **out) { int ret = 0; bool success = FALSE; wchar_t *in_w = Curl_convert_UTF8_to_wchar(in); if(in_w) { wchar_t punycode[IDN_MAX_LENGTH]; Loading @@ -79,15 +80,17 @@ int curl_win32_idn_to_ascii(const char *in, char **out) if(chars) { *out = Curl_convert_wchar_to_UTF8(punycode); if(*out) ret = 1; /* success */ success = TRUE; } } return ret; return success; } int curl_win32_ascii_to_idn(const char *in, char **out) bool curl_win32_ascii_to_idn(const char *in, char **out) { int ret = 0; bool success = FALSE; wchar_t *in_w = Curl_convert_UTF8_to_wchar(in); if(in_w) { size_t in_len = wcslen(in_w) + 1; Loading @@ -98,10 +101,11 @@ int curl_win32_ascii_to_idn(const char *in, char **out) if(chars) { *out = Curl_convert_wchar_to_UTF8(unicode); if(*out) ret = 1; /* success */ success = TRUE; } } return ret; return success; } #endif /* USE_WIN32_IDN */ lib/url.c +5 −6 Original line number Diff line number Diff line Loading @@ -75,7 +75,7 @@ void idn_free (void *ptr); #endif #elif defined(USE_WIN32_IDN) /* prototype for curl_win32_idn_to_ascii() */ int curl_win32_idn_to_ascii(const char *in, char **out); bool curl_win32_idn_to_ascii(const char *in, char **out); #endif /* USE_LIBIDN */ #include "urldata.h" Loading Loading @@ -3803,15 +3803,14 @@ static void fix_hostname(struct SessionHandle *data, * Check name for non-ASCII and convert hostname to ACE form. *************************************************************/ char *ace_hostname = NULL; int rc = curl_win32_idn_to_ascii(host->name, &ace_hostname); if(rc == 0) infof(data, "Failed to convert %s to ACE;\n", host->name); else { if(curl_win32_idn_to_ascii(host->name, &ace_hostname)) { host->encalloc = ace_hostname; /* change the name pointer to point to the encoded hostname */ host->name = host->encalloc; } else infof(data, "Failed to convert %s to ACE;\n", host->name); #else infof(data, "IDN support not present, can't parse Unicode domains\n"); #endif Loading Loading
lib/idn_win32.c +14 −10 Original line number Diff line number Diff line Loading @@ -65,12 +65,13 @@ WINBASEAPI int WINAPI IdnToUnicode(DWORD dwFlags, #define IDN_MAX_LENGTH 255 int curl_win32_idn_to_ascii(const char *in, char **out); int curl_win32_ascii_to_idn(const char *in, char **out); bool curl_win32_idn_to_ascii(const char *in, char **out); bool curl_win32_ascii_to_idn(const char *in, char **out); int curl_win32_idn_to_ascii(const char *in, char **out) bool curl_win32_idn_to_ascii(const char *in, char **out) { int ret = 0; bool success = FALSE; wchar_t *in_w = Curl_convert_UTF8_to_wchar(in); if(in_w) { wchar_t punycode[IDN_MAX_LENGTH]; Loading @@ -79,15 +80,17 @@ int curl_win32_idn_to_ascii(const char *in, char **out) if(chars) { *out = Curl_convert_wchar_to_UTF8(punycode); if(*out) ret = 1; /* success */ success = TRUE; } } return ret; return success; } int curl_win32_ascii_to_idn(const char *in, char **out) bool curl_win32_ascii_to_idn(const char *in, char **out) { int ret = 0; bool success = FALSE; wchar_t *in_w = Curl_convert_UTF8_to_wchar(in); if(in_w) { size_t in_len = wcslen(in_w) + 1; Loading @@ -98,10 +101,11 @@ int curl_win32_ascii_to_idn(const char *in, char **out) if(chars) { *out = Curl_convert_wchar_to_UTF8(unicode); if(*out) ret = 1; /* success */ success = TRUE; } } return ret; return success; } #endif /* USE_WIN32_IDN */
lib/url.c +5 −6 Original line number Diff line number Diff line Loading @@ -75,7 +75,7 @@ void idn_free (void *ptr); #endif #elif defined(USE_WIN32_IDN) /* prototype for curl_win32_idn_to_ascii() */ int curl_win32_idn_to_ascii(const char *in, char **out); bool curl_win32_idn_to_ascii(const char *in, char **out); #endif /* USE_LIBIDN */ #include "urldata.h" Loading Loading @@ -3803,15 +3803,14 @@ static void fix_hostname(struct SessionHandle *data, * Check name for non-ASCII and convert hostname to ACE form. *************************************************************/ char *ace_hostname = NULL; int rc = curl_win32_idn_to_ascii(host->name, &ace_hostname); if(rc == 0) infof(data, "Failed to convert %s to ACE;\n", host->name); else { if(curl_win32_idn_to_ascii(host->name, &ace_hostname)) { host->encalloc = ace_hostname; /* change the name pointer to point to the encoded hostname */ host->name = host->encalloc; } else infof(data, "Failed to convert %s to ACE;\n", host->name); #else infof(data, "IDN support not present, can't parse Unicode domains\n"); #endif Loading