Files
fastfetch/src/util/windows/unicode.c
T

37 lines
1.0 KiB
C
Raw Normal View History

#include "unicode.h"
2023-03-24 23:21:39 +08:00
#include <windows.h>
2022-11-26 12:52:04 +08:00
void ffStrbufSetNWS(FFstrbuf* result, uint32_t length, const wchar_t* source)
{
2022-11-26 12:52:04 +08:00
if(!length)
{
ffStrbufClear(result);
return;
}
2022-11-26 12:52:04 +08:00
int size_needed = WideCharToMultiByte(CP_UTF8, 0, source, (int)length, NULL, 0, NULL, NULL);
ffStrbufEnsureFree(result, (uint32_t)size_needed);
2022-11-26 12:52:04 +08:00
WideCharToMultiByte(CP_UTF8, 0, source, (int)length, result->chars, size_needed, NULL, NULL);
result->length = (uint32_t)size_needed;
result->chars[size_needed] = '\0';
}
2022-11-26 12:52:04 +08:00
FFstrbuf ffStrbufCreateNWS(uint32_t length, const wchar_t* source)
{
FFstrbuf result;
2022-11-26 12:52:04 +08:00
if(length == 0)
ffStrbufInit(&result);
else
{
2022-11-26 12:52:04 +08:00
int size_needed = WideCharToMultiByte(CP_UTF8, 0, source, (int)length, NULL, 0, NULL, NULL);
ffStrbufInitA(&result, (uint32_t)size_needed);
2022-11-26 12:52:04 +08:00
WideCharToMultiByte(CP_UTF8, 0, source, (int)length, result.chars, size_needed, NULL, NULL);
result.length = (uint32_t)size_needed;
result.chars[size_needed] = '\0';
}
return result;
}