diff options
-rw-r--r-- | lib/idn_win32.c | 30 | ||||
-rw-r--r-- | lib/idn_win32.h | 32 | ||||
-rw-r--r-- | lib/url.c | 4 |
3 files changed, 34 insertions, 32 deletions
diff --git a/lib/idn_win32.c b/lib/idn_win32.c index 4ebb6b773..b3088be6a 100644 --- a/lib/idn_win32.c +++ b/lib/idn_win32.c @@ -29,7 +29,7 @@ #include "curl_setup.h" #ifdef USE_WIN32_IDN - +#include "idn_win32.h" #include "curl_multibyte.h" #include "curl_memory.h" #include "warnless.h" @@ -52,9 +52,6 @@ WINBASEAPI int WINAPI IdnToUnicode(DWORD dwFlags, #define IDN_MAX_LENGTH 255 -bool Curl_win32_idn_to_ascii(const char *in, char **out); -bool Curl_win32_ascii_to_idn(const char *in, char **out); - bool Curl_win32_idn_to_ascii(const char *in, char **out) { bool success = FALSE; @@ -78,29 +75,4 @@ bool Curl_win32_idn_to_ascii(const char *in, char **out) return success; } -bool Curl_win32_ascii_to_idn(const char *in, char **out) -{ - bool success = FALSE; - - wchar_t *in_w = curlx_convert_UTF8_to_wchar(in); - if(in_w) { - size_t in_len = wcslen(in_w) + 1; - wchar_t unicode[IDN_MAX_LENGTH]; - int chars = IdnToUnicode(0, in_w, curlx_uztosi(in_len), - unicode, IDN_MAX_LENGTH); - curlx_unicodefree(in_w); - if(chars) { - char *mstr = curlx_convert_wchar_to_UTF8(unicode); - if(mstr) { - *out = strdup(mstr); - curlx_unicodefree(mstr); - if(*out) - success = TRUE; - } - } - } - - return success; -} - #endif /* USE_WIN32_IDN */ diff --git a/lib/idn_win32.h b/lib/idn_win32.h new file mode 100644 index 000000000..8a7640336 --- /dev/null +++ b/lib/idn_win32.h @@ -0,0 +1,32 @@ +#ifndef HEADER_CURL_IDN_WIN32_H +#define HEADER_CURL_IDN_WIN32_H +/*************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al. + * + * This software is licensed as described in the file COPYING, which + * you should have received as part of this distribution. The terms + * are also available at https://curl.se/docs/copyright.html. + * + * You may opt to use, copy, modify, merge, publish, distribute and/or sell + * copies of the Software, and permit persons to whom the Software is + * furnished to do so, under the terms of the COPYING file. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + * SPDX-License-Identifier: curl + * + ***************************************************************************/ + +#ifdef USE_WIN32_IDN + +bool Curl_win32_idn_to_ascii(const char *in, char **out); + +#endif /* USE_WIN32_IDN */ +#endif /* HEADER_CURL_IDN_WIN32_H */ @@ -71,10 +71,8 @@ #define IDN2_LOOKUP(name, host, flags) \ idn2_lookup_ul((const char *)name, (char **)host, flags) #endif - #elif defined(USE_WIN32_IDN) -/* prototype for Curl_win32_idn_to_ascii() */ -bool Curl_win32_idn_to_ascii(const char *in, char **out); +#include "idn.h" #endif /* USE_LIBIDN2 */ #include "doh.h" |