Annotation of embedaddon/curl/lib/curl_multibyte.c, revision 1.1
1.1 ! misho 1: /***************************************************************************
! 2: * _ _ ____ _
! 3: * Project ___| | | | _ \| |
! 4: * / __| | | | |_) | |
! 5: * | (__| |_| | _ <| |___
! 6: * \___|\___/|_| \_\_____|
! 7: *
! 8: * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
! 9: *
! 10: * This software is licensed as described in the file COPYING, which
! 11: * you should have received as part of this distribution. The terms
! 12: * are also available at https://curl.haxx.se/docs/copyright.html.
! 13: *
! 14: * You may opt to use, copy, modify, merge, publish, distribute and/or sell
! 15: * copies of the Software, and permit persons to whom the Software is
! 16: * furnished to do so, under the terms of the COPYING file.
! 17: *
! 18: * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
! 19: * KIND, either express or implied.
! 20: *
! 21: ***************************************************************************/
! 22:
! 23: #include "curl_setup.h"
! 24:
! 25: #include <curl/curl.h>
! 26:
! 27: #if defined(USE_WIN32_IDN) || ((defined(USE_WINDOWS_SSPI) || \
! 28: defined(USE_WIN32_LDAP)) && defined(UNICODE))
! 29:
! 30: /*
! 31: * MultiByte conversions using Windows kernel32 library.
! 32: */
! 33:
! 34: #include "curl_multibyte.h"
! 35: #include "curl_memory.h"
! 36:
! 37: /* The last #include file should be: */
! 38: #include "memdebug.h"
! 39:
! 40: wchar_t *Curl_convert_UTF8_to_wchar(const char *str_utf8)
! 41: {
! 42: wchar_t *str_w = NULL;
! 43:
! 44: if(str_utf8) {
! 45: int str_w_len = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS,
! 46: str_utf8, -1, NULL, 0);
! 47: if(str_w_len > 0) {
! 48: str_w = malloc(str_w_len * sizeof(wchar_t));
! 49: if(str_w) {
! 50: if(MultiByteToWideChar(CP_UTF8, 0, str_utf8, -1, str_w,
! 51: str_w_len) == 0) {
! 52: free(str_w);
! 53: return NULL;
! 54: }
! 55: }
! 56: }
! 57: }
! 58:
! 59: return str_w;
! 60: }
! 61:
! 62: char *Curl_convert_wchar_to_UTF8(const wchar_t *str_w)
! 63: {
! 64: char *str_utf8 = NULL;
! 65:
! 66: if(str_w) {
! 67: int bytes = WideCharToMultiByte(CP_UTF8, 0, str_w, -1,
! 68: NULL, 0, NULL, NULL);
! 69: if(bytes > 0) {
! 70: str_utf8 = malloc(bytes);
! 71: if(str_utf8) {
! 72: if(WideCharToMultiByte(CP_UTF8, 0, str_w, -1, str_utf8, bytes,
! 73: NULL, NULL) == 0) {
! 74: free(str_utf8);
! 75: return NULL;
! 76: }
! 77: }
! 78: }
! 79: }
! 80:
! 81: return str_utf8;
! 82: }
! 83:
! 84: #endif /* USE_WIN32_IDN || ((USE_WINDOWS_SSPI || USE_WIN32_LDAP) && UNICODE) */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>