Also support AppData/Local to allow a non-roaming config
This commit is contained in:
parent
1ed19d8677
commit
b171323b91
2 changed files with 17 additions and 7 deletions
|
@ -230,7 +230,7 @@ public:
|
||||||
/** Get application directory.
|
/** Get application directory.
|
||||||
* \return directory where applications should write files.
|
* \return directory where applications should write files.
|
||||||
*/
|
*/
|
||||||
std::string getApplicationDirectory(const std::string &appName = "");
|
std::string getApplicationDirectory(const std::string &appName = "", bool local = false);
|
||||||
|
|
||||||
/** Get a temporary directory.
|
/** Get a temporary directory.
|
||||||
* \return temporary directory where applications should write files.
|
* \return temporary directory where applications should write files.
|
||||||
|
@ -540,7 +540,7 @@ public:
|
||||||
/** Get application directory.
|
/** Get application directory.
|
||||||
* \return directory where applications should write files.
|
* \return directory where applications should write files.
|
||||||
*/
|
*/
|
||||||
static std::string getApplicationDirectory(const std::string &appName = "");
|
static std::string getApplicationDirectory(const std::string &appName = "", bool local = false);
|
||||||
|
|
||||||
/** Get a temporary directory.
|
/** Get a temporary directory.
|
||||||
* \return temporary directory where applications should write files.
|
* \return temporary directory where applications should write files.
|
||||||
|
|
|
@ -1777,19 +1777,29 @@ std::string CFileContainer::getWindowsDirectory()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string CPath::getApplicationDirectory(const std::string &appName)
|
std::string CPath::getApplicationDirectory(const std::string &appName, bool local)
|
||||||
{
|
{
|
||||||
return getInstance()->_FileContainer.getApplicationDirectory(appName);
|
return getInstance()->_FileContainer.getApplicationDirectory(appName, local);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string CFileContainer::getApplicationDirectory(const std::string &appName)
|
std::string CFileContainer::getApplicationDirectory(const std::string &appName, bool local)
|
||||||
{
|
{
|
||||||
static std::string appPath;
|
static std::string appPaths[2];
|
||||||
|
std::string &appPath = appPaths[local ? 1 : 0];
|
||||||
if (appPath.empty())
|
if (appPath.empty())
|
||||||
{
|
{
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
wchar_t buffer[MAX_PATH];
|
wchar_t buffer[MAX_PATH];
|
||||||
SHGetSpecialFolderPathW(NULL, buffer, CSIDL_APPDATA, TRUE);
|
#ifdef CSIDL_LOCAL_APPDATA
|
||||||
|
if (local)
|
||||||
|
{
|
||||||
|
SHGetSpecialFolderPathW(NULL, buffer, CSIDL_LOCAL_APPDATA, TRUE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
SHGetSpecialFolderPathW(NULL, buffer, CSIDL_APPDATA, TRUE);
|
||||||
|
}
|
||||||
appPath = CPath::standardizePath(ucstring((ucchar*)buffer).toUtf8());
|
appPath = CPath::standardizePath(ucstring((ucchar*)buffer).toUtf8());
|
||||||
#elif defined(NL_OS_MAC)
|
#elif defined(NL_OS_MAC)
|
||||||
appPath = CPath::standardizePath(getenv("HOME"));
|
appPath = CPath::standardizePath(getenv("HOME"));
|
||||||
|
|
Loading…
Reference in a new issue