idn_win32: Use boolean based success codes

Rather than use 0 and 1 integer base result codes use a FALSE / TRUE
based success code.
This commit is contained in:
Steve Holme 2016-03-11 07:24:39 +00:00
parent b084173989
commit 58e4a06743
2 changed files with 19 additions and 16 deletions

View File

@ -65,12 +65,13 @@ WINBASEAPI int WINAPI IdnToUnicode(DWORD dwFlags,
#define IDN_MAX_LENGTH 255 #define IDN_MAX_LENGTH 255
int curl_win32_idn_to_ascii(const char *in, char **out); bool curl_win32_idn_to_ascii(const char *in, char **out);
int curl_win32_ascii_to_idn(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); wchar_t *in_w = Curl_convert_UTF8_to_wchar(in);
if(in_w) { if(in_w) {
wchar_t punycode[IDN_MAX_LENGTH]; wchar_t punycode[IDN_MAX_LENGTH];
@ -79,15 +80,17 @@ int curl_win32_idn_to_ascii(const char *in, char **out)
if(chars) { if(chars) {
*out = Curl_convert_wchar_to_UTF8(punycode); *out = Curl_convert_wchar_to_UTF8(punycode);
if(*out) 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); wchar_t *in_w = Curl_convert_UTF8_to_wchar(in);
if(in_w) { if(in_w) {
size_t in_len = wcslen(in_w) + 1; size_t in_len = wcslen(in_w) + 1;
@ -98,10 +101,11 @@ int curl_win32_ascii_to_idn(const char *in, char **out)
if(chars) { if(chars) {
*out = Curl_convert_wchar_to_UTF8(unicode); *out = Curl_convert_wchar_to_UTF8(unicode);
if(*out) if(*out)
ret = 1; /* success */ success = TRUE;
} }
} }
return ret;
return success;
} }
#endif /* USE_WIN32_IDN */ #endif /* USE_WIN32_IDN */

View File

@ -75,7 +75,7 @@ void idn_free (void *ptr);
#endif #endif
#elif defined(USE_WIN32_IDN) #elif defined(USE_WIN32_IDN)
/* prototype for curl_win32_idn_to_ascii() */ /* 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 */ #endif /* USE_LIBIDN */
#include "urldata.h" #include "urldata.h"
@ -3803,15 +3803,14 @@ static void fix_hostname(struct SessionHandle *data,
* Check name for non-ASCII and convert hostname to ACE form. * Check name for non-ASCII and convert hostname to ACE form.
*************************************************************/ *************************************************************/
char *ace_hostname = NULL; char *ace_hostname = NULL;
int rc = curl_win32_idn_to_ascii(host->name, &ace_hostname);
if(rc == 0) if(curl_win32_idn_to_ascii(host->name, &ace_hostname)) {
infof(data, "Failed to convert %s to ACE;\n",
host->name);
else {
host->encalloc = ace_hostname; host->encalloc = ace_hostname;
/* change the name pointer to point to the encoded hostname */ /* change the name pointer to point to the encoded hostname */
host->name = host->encalloc; host->name = host->encalloc;
} }
else
infof(data, "Failed to convert %s to ACE;\n", host->name);
#else #else
infof(data, "IDN support not present, can't parse Unicode domains\n"); infof(data, "IDN support not present, can't parse Unicode domains\n");
#endif #endif