Commit 58e4a067 authored by Steve Holme's avatar Steve Holme
Browse files

idn_win32: Use boolean based success codes

Rather than use 0 and 1 integer base result codes use a FALSE / TRUE
based success code.
parent b0841739
Loading
Loading
Loading
Loading
+14 −10
Original line number Original line Diff line number Diff line
@@ -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 */
+5 −6
Original line number Original line Diff line number Diff line
@@ -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