1
mirror of https://github.com/rapid7/metasploit-payloads synced 2025-03-18 15:14:10 +01:00
2015-04-05 18:41:01 -05:00

61 lines
893 B
C

/*!
* @file unicode.c
* @brief Unicode conversion functions
*/
#include "common.h"
wchar_t *utf8_to_wchar(const char *in)
{
wchar_t *out;
int len;
if (in == NULL) {
return NULL;
}
len = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, in, -1, NULL, 0);
if (len <= 0) {
return NULL;
}
out = calloc(len, sizeof(wchar_t));
if (out == NULL) {
return NULL;
}
if (MultiByteToWideChar(CP_UTF8, 0, in, -1, out, len) == 0) {
free(out);
out = NULL;
}
return out;
}
char *wchar_to_utf8(const wchar_t *in)
{
char *out;
int len;
if (in == NULL) {
return NULL;
}
len = WideCharToMultiByte(CP_UTF8, 0, in, -1, NULL, 0, NULL, NULL);
if (len <= 0) {
return NULL;
}
out = calloc(len, sizeof(char));
if (out == NULL) {
return NULL;
}
if (WideCharToMultiByte(CP_UTF8, 0, in, -1, out, len, NULL, FALSE) == 0) {
free(out);
out = NULL;
}
return out;
}