From 4cf1d5bf946c175934cc36030785e867a6c99186 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Sat, 26 Nov 2022 12:52:04 +0800 Subject: [PATCH] util: rename unicode helper function names --- src/detection/battery/battery_windows.c | 4 ++-- src/detection/font/font_windows.c | 2 +- src/detection/gpu/gpu_windows.cpp | 2 +- src/detection/os/os_windows.cpp | 2 +- src/detection/users/users_windows.c | 4 ++-- src/util/windows/register.c | 10 +++++----- src/util/windows/unicode.c | 18 ++++++++---------- src/util/windows/unicode.h | 14 ++++++++++++-- 8 files changed, 32 insertions(+), 24 deletions(-) diff --git a/src/detection/battery/battery_windows.c b/src/detection/battery/battery_windows.c index ed4a1a813..37822fe5e 100644 --- a/src/detection/battery/battery_windows.c +++ b/src/detection/battery/battery_windows.c @@ -86,7 +86,7 @@ const char* ffDetectBatteryImpl(FFinstance* instance, FFlist* results) bqi.InformationLevel = BatteryDeviceName; wchar_t name[64]; if(DeviceIoControl(hBattery, IOCTL_BATTERY_QUERY_INFORMATION, &bqi, sizeof(bqi), name, sizeof(name), &dwOut, NULL)) - ffWcharToUtf8(name, &battery->modelName); + ffStrbufSetWS(&battery->modelName, name); } { @@ -94,7 +94,7 @@ const char* ffDetectBatteryImpl(FFinstance* instance, FFlist* results) bqi.InformationLevel = BatteryManufactureName; wchar_t name[64]; if(DeviceIoControl(hBattery, IOCTL_BATTERY_QUERY_INFORMATION, &bqi, sizeof(bqi), name, sizeof(name), &dwOut, NULL)) - ffWcharToUtf8(name, &battery->manufacturer); + ffStrbufSetWS(&battery->manufacturer, name); } battery->temperature = 0.0/0.0; diff --git a/src/detection/font/font_windows.c b/src/detection/font/font_windows.c index b2595d04d..d858b8b42 100644 --- a/src/detection/font/font_windows.c +++ b/src/detection/font/font_windows.c @@ -15,7 +15,7 @@ void ffDetectFontImpl(const FFinstance* instance, FFFontResult* result) for(uint32_t i = 0; i < sizeof(fonts) / sizeof(fonts[0]); ++i) { - ffWcharToUtf8(fonts[i]->lfFaceName, &result->fonts[i]); + ffStrbufSetWS(&result->fonts[i], fonts[i]->lfFaceName); if(fonts[i]->lfHeight < 0) ffStrbufAppendF(&result->fonts[i], " (%dpt)", (int)-fonts[i]->lfHeight); } diff --git a/src/detection/gpu/gpu_windows.cpp b/src/detection/gpu/gpu_windows.cpp index 7254bc2b4..f5d0f4946 100644 --- a/src/detection/gpu/gpu_windows.cpp +++ b/src/detection/gpu/gpu_windows.cpp @@ -36,7 +36,7 @@ static const char* detectWithDxgi(FFlist* gpus) ffStrbufInit(&gpu->vendor); ffStrbufInit(&gpu->name); - ffWcharToUtf8(desc.Description, &gpu->name); + ffStrbufSetWS(&gpu->name, desc.Description); ffStrbufInit(&gpu->driver); diff --git a/src/detection/os/os_windows.cpp b/src/detection/os/os_windows.cpp index 287063449..fdda72c89 100644 --- a/src/detection/os/os_windows.cpp +++ b/src/detection/os/os_windows.cpp @@ -36,7 +36,7 @@ static const char* getOsNameByWinbrand(FFstrbuf* osName) return "GetProcAddress(BrandingFormatString) failed"; const wchar_t* rawName = BrandingFormatString(L"%WINDOWS_LONG%"); - ffWcharToUtf8(rawName, osName); + ffStrbufSetWS(osName, rawName); GlobalFree((HGLOBAL)rawName); return NULL; } diff --git a/src/detection/users/users_windows.c b/src/detection/users/users_windows.c index 46e5b4add..0b4316c10 100644 --- a/src/detection/users/users_windows.c +++ b/src/detection/users/users_windows.c @@ -42,8 +42,8 @@ void ffDetectUsers(FFlist* users, FFstrbuf* error) if(session->State != WTSActive) continue; - FF_STRBUF_AUTO_DESTROY domainName = ffStrbufFromWchar(session->pDomainName); - FF_STRBUF_AUTO_DESTROY userName = ffStrbufFromWchar(session->pUserName); + FF_STRBUF_AUTO_DESTROY domainName = ffStrbufCreateWS(session->pDomainName); + FF_STRBUF_AUTO_DESTROY userName = ffStrbufCreateWS(session->pUserName); ffStrbufInitF((FFstrbuf*)ffListAdd(users), "%s\\%s", domainName.chars, userName.chars); } diff --git a/src/util/windows/register.c b/src/util/windows/register.c index 9b0e916b0..9f02137c3 100644 --- a/src/util/windows/register.c +++ b/src/util/windows/register.c @@ -26,7 +26,7 @@ bool ffRegOpenKeyForRead(HKEY hKey, const wchar_t* subKeyW, HKEY* result, FFstrb { if(error) { - FF_STRBUF_AUTO_DESTROY subKeyA = ffStrbufFromWchar(subKeyW); + FF_STRBUF_AUTO_DESTROY subKeyA = ffStrbufCreateWS(subKeyW); ffStrbufAppendF(error, "RegOpenKeyExW(%s\\%s) failed", hKey2Str(hKey), subKeyA.chars); } return false; @@ -43,7 +43,7 @@ bool ffRegReadStrbuf(HKEY hKey, const wchar_t* valueNameW, FFstrbuf* result, FFs { if(!valueNameW) valueNameW = L"(default)"; - FF_STRBUF_AUTO_DESTROY valueNameA = ffStrbufFromWchar(valueNameW); + FF_STRBUF_AUTO_DESTROY valueNameA = ffStrbufCreateWS(valueNameW); ffStrbufAppendF(error, "RegGetValueA(%s, NULL, RRF_RT_REG_SZ) failed", valueNameA.chars); } return false; @@ -55,12 +55,12 @@ bool ffRegReadStrbuf(HKEY hKey, const wchar_t* valueNameW, FFstrbuf* result, FFs { if(!valueNameW) valueNameW = L"(default)"; - FF_STRBUF_AUTO_DESTROY valueNameA = ffStrbufFromWchar(valueNameW); + FF_STRBUF_AUTO_DESTROY valueNameA = ffStrbufCreateWS(valueNameW); ffStrbufAppendF(error, "RegGetValueA(%s, result, RRF_RT_REG_SZ) failed", valueNameA.chars); } return false; } - ffWcharToUtf8(resultW, result); + ffStrbufSetWS(result, resultW); return true; } @@ -73,7 +73,7 @@ bool ffRegReadUint(HKEY hKey, const wchar_t* valueNameW, uint32_t* result, FFstr { if(!valueNameW) valueNameW = L"(default)"; - FF_STRBUF_AUTO_DESTROY valueNameA = ffStrbufFromWchar(valueNameW); + FF_STRBUF_AUTO_DESTROY valueNameA = ffStrbufCreateWS(valueNameW); ffStrbufAppendF(error, "RegGetValueA(%s, result, RRF_RT_DWORD) failed", valueNameA.chars); } return false; diff --git a/src/util/windows/unicode.c b/src/util/windows/unicode.c index f2ffa28cc..b25cdcdd9 100644 --- a/src/util/windows/unicode.c +++ b/src/util/windows/unicode.c @@ -1,33 +1,31 @@ #include "unicode.h" -void ffWcharToUtf8(const wchar_t* input, FFstrbuf* result) +void ffStrbufSetNWS(FFstrbuf* result, uint32_t length, const wchar_t* source) { - int len = (int)wcslen(input); - if(len <= 0) + if(!length) { ffStrbufClear(result); return; } - int size_needed = WideCharToMultiByte(CP_UTF8, 0, input, len, NULL, 0, NULL, NULL); + int size_needed = WideCharToMultiByte(CP_UTF8, 0, source, (int)length, NULL, 0, NULL, NULL); ffStrbufEnsureFree(result, (uint32_t)size_needed); - WideCharToMultiByte(CP_UTF8, 0, input, len, result->chars, size_needed, NULL, NULL); + WideCharToMultiByte(CP_UTF8, 0, source, (int)length, result->chars, size_needed, NULL, NULL); result->length = (uint32_t)size_needed; result->chars[size_needed] = '\0'; } -FFstrbuf ffStrbufFromWchar(const wchar_t* input) +FFstrbuf ffStrbufCreateNWS(uint32_t length, const wchar_t* source) { FFstrbuf result; - int len = input ? (int)wcslen(input) : 0; - if(len <= 0) + if(length == 0) ffStrbufInit(&result); else { - int size_needed = WideCharToMultiByte(CP_UTF8, 0, input, len, NULL, 0, NULL, NULL); + int size_needed = WideCharToMultiByte(CP_UTF8, 0, source, (int)length, NULL, 0, NULL, NULL); ffStrbufInitA(&result, (uint32_t)size_needed); - WideCharToMultiByte(CP_UTF8, 0, input, len, result.chars, size_needed, NULL, NULL); + WideCharToMultiByte(CP_UTF8, 0, source, (int)length, result.chars, size_needed, NULL, NULL); result.length = (uint32_t)size_needed; result.chars[size_needed] = '\0'; } diff --git a/src/util/windows/unicode.h b/src/util/windows/unicode.h index d3926ff06..d70fbb22e 100644 --- a/src/util/windows/unicode.h +++ b/src/util/windows/unicode.h @@ -4,8 +4,18 @@ #define FASTFETCH_INCLUDED_UNICODE_H #include "fastfetch.h" +#include -void ffWcharToUtf8(const wchar_t* input, FFstrbuf* result); -FFstrbuf ffStrbufFromWchar(const wchar_t* input); +void ffStrbufSetNWS(FFstrbuf* result, uint32_t length, const wchar_t* source); +static inline void ffStrbufSetWS(FFstrbuf* result, const wchar_t* source) +{ + return ffStrbufSetNWS(result, (uint32_t)wcslen(source), source); +} + +FFstrbuf ffStrbufCreateNWS(uint32_t length, const wchar_t* source); +static inline FFstrbuf ffStrbufCreateWS(const wchar_t* source) +{ + return ffStrbufCreateNWS((uint32_t)wcslen(source), source); +} #endif