mirror of
https://github.com/WinampDesktop/winamp.git
synced 2024-09-24 15:54:12 +00:00
74 lines
2 KiB
C++
74 lines
2 KiB
C++
|
#include "main.h"
|
||
|
#include "./config.h"
|
||
|
#include "./wasabi.h"
|
||
|
|
||
|
#include <shlwapi.h>
|
||
|
#include <strsafe.h>
|
||
|
|
||
|
#define CONFIG_SUFFIX L"Plugins\\webDev"
|
||
|
|
||
|
static LPCSTR Config_GetPath()
|
||
|
{
|
||
|
static LPSTR configPath = NULL;
|
||
|
if (NULL == configPath)
|
||
|
{
|
||
|
LPCWSTR p = (NULL != WASABI_API_APP) ? WASABI_API_APP->path_getUserSettingsPath() : NULL;
|
||
|
if (NULL != p)
|
||
|
{
|
||
|
WCHAR szBuffer[MAX_PATH * 2] = {0};
|
||
|
if (0 != PathCombine(szBuffer, p, CONFIG_SUFFIX))
|
||
|
{
|
||
|
OMUTILITY->EnsurePathExist(szBuffer);
|
||
|
PathAppend(szBuffer, L"config.ini");
|
||
|
configPath = Plugin_WideCharToMultiByte(CP_UTF8, 0, szBuffer, -1, NULL, NULL);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return configPath;
|
||
|
}
|
||
|
|
||
|
DWORD Config_ReadStr(LPCSTR lpSectionName, LPCSTR lpKeyName, LPCSTR lpDefault, LPSTR lpReturnedString, DWORD nSize)
|
||
|
{
|
||
|
return GetPrivateProfileStringA(lpSectionName, lpKeyName, lpDefault, lpReturnedString, nSize, Config_GetPath());
|
||
|
}
|
||
|
|
||
|
UINT Config_ReadInt(LPCSTR lpSectionName, LPCSTR lpKeyName, INT nDefault)
|
||
|
{
|
||
|
return GetPrivateProfileIntA(lpSectionName, lpKeyName, nDefault, Config_GetPath());
|
||
|
}
|
||
|
|
||
|
HRESULT Config_WriteStr(LPCSTR lpSectionName, LPCSTR lpKeyName, LPCSTR lpString)
|
||
|
{
|
||
|
LPCSTR configPath = Config_GetPath();
|
||
|
if (NULL == configPath || '\0' == *configPath)
|
||
|
return E_UNEXPECTED;
|
||
|
|
||
|
if (0 != WritePrivateProfileStringA(lpSectionName, lpKeyName, lpString, configPath))
|
||
|
return S_OK;
|
||
|
|
||
|
DWORD errorCode = GetLastError();
|
||
|
return HRESULT_FROM_WIN32(errorCode);
|
||
|
}
|
||
|
|
||
|
HRESULT Config_WriteInt(LPCSTR lpSectionName, LPCSTR lpKeyName, INT nValue)
|
||
|
{
|
||
|
char szBuffer[32];
|
||
|
HRESULT hr = StringCchPrintfA(szBuffer, ARRAYSIZE(szBuffer), "%d", nValue);
|
||
|
if (FAILED(hr)) return hr;
|
||
|
|
||
|
return Config_WriteStr(lpSectionName, lpKeyName, szBuffer);
|
||
|
}
|
||
|
|
||
|
HRESULT Config_WriteSection(LPCSTR lpSectionName, LPCSTR lpData)
|
||
|
{
|
||
|
LPCSTR configPath = Config_GetPath();
|
||
|
if (NULL == configPath || '\0' == *configPath)
|
||
|
return E_UNEXPECTED;
|
||
|
|
||
|
if (0 == WritePrivateProfileSectionA(lpSectionName, lpData, configPath))
|
||
|
return S_OK;
|
||
|
|
||
|
DWORD errorCode = GetLastError();
|
||
|
return HRESULT_FROM_WIN32(errorCode);
|
||
|
}
|