mirror of
https://github.com/chibicitiberiu/rainmeter-studio.git
synced 2024-02-24 04:33:31 +00:00
Fixed some stability issues when the location of the settings file is defined by a commend line argument.
This commit is contained in:
parent
e5cf9c5ceb
commit
afd7de5a8c
@ -1236,25 +1236,38 @@ int CRainmeter::Initialize(HWND Parent, HINSTANCE Instance, LPCSTR szPath)
|
|||||||
{
|
{
|
||||||
// The command line defines the location of Rainmeter.ini (or whatever it calls it).
|
// The command line defines the location of Rainmeter.ini (or whatever it calls it).
|
||||||
std::wstring iniFile = c_CmdLine;
|
std::wstring iniFile = c_CmdLine;
|
||||||
if (iniFile[0] == L'\"' && iniFile[iniFile.length() - 1] == L'\"')
|
if (iniFile[0] == L'\"')
|
||||||
{
|
{
|
||||||
iniFile = iniFile.substr(1, iniFile.length() - 2);
|
if (iniFile.length() == 1)
|
||||||
|
{
|
||||||
|
iniFile.clear();
|
||||||
|
}
|
||||||
|
else if (iniFile[iniFile.length() - 1] == L'\"')
|
||||||
|
{
|
||||||
|
iniFile = iniFile.substr(1, iniFile.length() - 2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ExpandEnvironmentVariables(iniFile);
|
ExpandEnvironmentVariables(iniFile);
|
||||||
|
|
||||||
if (iniFile[iniFile.length() - 1] == L'\\')
|
if (iniFile.empty() || iniFile[iniFile.length() - 1] == L'\\')
|
||||||
{
|
{
|
||||||
iniFile += L"Rainmeter.ini";
|
iniFile += L"Rainmeter.ini";
|
||||||
}
|
}
|
||||||
else if (iniFile.length() <= 4 || iniFile.substr(iniFile.length() - 4) != L".ini")
|
else if (iniFile.length() <= 4 || wcsicmp(iniFile.substr(iniFile.length() - 4).c_str(), L".ini") != 0)
|
||||||
{
|
{
|
||||||
iniFile += L"\\Rainmeter.ini";
|
iniFile += L"\\Rainmeter.ini";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (iniFile[0] != L'\\' && iniFile[0] != L'/' && iniFile.find_first_of(L':') == std::wstring::npos)
|
||||||
|
{
|
||||||
|
// Make absolute path
|
||||||
|
iniFile.insert(0, m_Path);
|
||||||
|
}
|
||||||
|
|
||||||
m_IniFile = iniFile;
|
m_IniFile = iniFile;
|
||||||
|
|
||||||
// If the ini file doesn't exist in the %APPDATA% either, create a default rainmeter.ini file.
|
// If the ini file doesn't exist, create a default rainmeter.ini file.
|
||||||
if (_waccess(m_IniFile.c_str(), 0) == -1)
|
if (_waccess(m_IniFile.c_str(), 0) == -1)
|
||||||
{
|
{
|
||||||
CreateDefaultConfigFile(m_IniFile);
|
CreateDefaultConfigFile(m_IniFile);
|
||||||
@ -1264,10 +1277,10 @@ int CRainmeter::Initialize(HWND Parent, HINSTANCE Instance, LPCSTR szPath)
|
|||||||
|
|
||||||
// Set the log file location
|
// Set the log file location
|
||||||
m_LogFile = m_IniFile;
|
m_LogFile = m_IniFile;
|
||||||
size_t posExt = m_LogFile.find(L".ini");
|
size_t logFileLen = m_LogFile.length();
|
||||||
if (posExt != std::wstring::npos)
|
if (logFileLen > 4 && wcsicmp(m_LogFile.substr(logFileLen - 4).c_str(), L".ini") == 0)
|
||||||
{
|
{
|
||||||
m_LogFile.replace(posExt, 4, L".log");
|
m_LogFile.replace(logFileLen - 4, 4, L".log");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user