42 lines
1.1 KiB
C++
42 lines
1.1 KiB
C++
#include "PRO_Main.h"
|
|
|
|
CProfile InternalProfileManager;
|
|
|
|
//str1k3r - GetSettings is basically snatched from smartCMD
|
|
void GetSettings(wchar_t *outPath, DWORD size)
|
|
{
|
|
GetModuleFileNameW(NULL, outPath, size); //str1k3r - unlike smartCMD we use wide so we can handle non english characters
|
|
wchar_t *lastSlash = wcsrchr(outPath, '\\');
|
|
if (lastSlash) *(lastSlash + 1) = '\0';
|
|
wcsncat_s(outPath, size, L"settings.dat", _TRUNCATE);
|
|
}
|
|
|
|
void CProfile::LoadSettings(void* gs, size_t gsSize)
|
|
{
|
|
if (!gs || gsSize == 0) return;
|
|
|
|
wchar_t settingsPath[MAX_PATH] = {};
|
|
GetSettings(settingsPath, MAX_PATH);
|
|
|
|
FILE *file = NULL;
|
|
if (_wfopen_s(&file, settingsPath, L"rb") == 0 && file) //str1k3r - fun fact theres a version of fopen_s but for wide :3
|
|
{
|
|
fread(gs, 1, gsSize, file);
|
|
fclose(file);
|
|
}
|
|
}
|
|
|
|
void CProfile::SaveSettings(void* gs, size_t gsSize)
|
|
{
|
|
if (!gs || gsSize == 0) return;
|
|
|
|
wchar_t settingsPath[MAX_PATH] = {};
|
|
GetSettings(settingsPath, MAX_PATH);
|
|
|
|
FILE *file = NULL;
|
|
if (_wfopen_s(&file, settingsPath, L"wb") == 0 && file)
|
|
{
|
|
fwrite(gs, 1, gsSize, file);
|
|
fclose(file);
|
|
}
|
|
} |