mirror of
https://github.com/pocoproject/poco.git
synced 2025-01-23 18:42:17 +01:00
Merge pull request #1609 from rudolfwalter/develop
Improve XDG Base Directory Specification implementation
This commit is contained in:
commit
7e4c84e1e2
@ -304,11 +304,6 @@ public:
|
||||
/// On Unix systems, this is the '~/.local/share/'. On Windows systems,
|
||||
/// this is '%APPDATA%'.
|
||||
|
||||
static std::string tempHome();
|
||||
/// Returns the user's temp directory.
|
||||
///
|
||||
/// On Unix systems, this is the '~/.local/temp/'.
|
||||
|
||||
static std::string cacheHome();
|
||||
/// Returns the user's cache directory.
|
||||
///
|
||||
|
@ -34,7 +34,6 @@ public:
|
||||
static std::string homeImpl();
|
||||
static std::string configHomeImpl();
|
||||
static std::string dataHomeImpl();
|
||||
static std::string tempHomeImpl();
|
||||
static std::string cacheHomeImpl();
|
||||
static std::string tempImpl();
|
||||
static std::string configImpl();
|
||||
|
@ -35,7 +35,6 @@ public:
|
||||
static std::string configHomeImpl();
|
||||
static std::string dataHomeImpl();
|
||||
static std::string cacheHomeImpl();
|
||||
static std::string tempHomeImpl();
|
||||
static std::string tempImpl();
|
||||
static std::string configImpl();
|
||||
static std::string nullImpl();
|
||||
|
@ -35,7 +35,6 @@ public:
|
||||
static std::string configHomeImpl();
|
||||
static std::string dataHomeImpl();
|
||||
static std::string cacheHomeImpl();
|
||||
static std::string tempHomeImpl();
|
||||
static std::string tempImpl();
|
||||
static std::string configImpl();
|
||||
static std::string nullImpl();
|
||||
|
@ -35,7 +35,6 @@ public:
|
||||
static std::string configHomeImpl();
|
||||
static std::string dataHomeImpl();
|
||||
static std::string cacheHomeImpl();
|
||||
static std::string tempHomeImpl();
|
||||
static std::string tempImpl();
|
||||
static std::string configImpl();
|
||||
static std::string nullImpl();
|
||||
|
@ -615,16 +615,6 @@ std::string Path::dataHome()
|
||||
}
|
||||
|
||||
|
||||
std::string Path::tempHome()
|
||||
{
|
||||
#if defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_FAMILY_WINDOWS)
|
||||
return PathImpl::tempHomeImpl();
|
||||
#else
|
||||
return PathImpl::tempImpl();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
std::string Path::cacheHome()
|
||||
{
|
||||
#if defined(POCO_OS_FAMILY_UNIX) || defined(POCO_OS_FAMILY_WINDOWS)
|
||||
|
@ -81,15 +81,23 @@ std::string PathImpl::configHomeImpl()
|
||||
{
|
||||
#if defined(POCO_VXWORKS)
|
||||
return PathImpl::homeImpl();
|
||||
#else
|
||||
#elif POCO_OS == POCO_OS_MAC_OS_X
|
||||
std::string path = PathImpl::homeImpl();
|
||||
std::string::size_type n = path.size();
|
||||
if (n > 0 && path[n - 1] == '/')
|
||||
#if POCO_OS == POCO_OS_MAC_OS_X
|
||||
path.append("Library/Preferences/");
|
||||
path.append("Library/Preferences/");
|
||||
return path;
|
||||
#else
|
||||
path.append(".config/");
|
||||
#endif
|
||||
std::string path;
|
||||
if (EnvironmentImpl::hasImpl("XDG_CONFIG_HOME"))
|
||||
path = EnvironmentImpl::getImpl("XDG_CONFIG_HOME");
|
||||
if (!path.empty())
|
||||
return path;
|
||||
|
||||
path = PathImpl::homeImpl();
|
||||
std::string::size_type n = path.size();
|
||||
if (n > 0 && path[n - 1] == '/')
|
||||
path.append(".config/");
|
||||
|
||||
return path;
|
||||
#endif
|
||||
@ -100,15 +108,23 @@ std::string PathImpl::dataHomeImpl()
|
||||
{
|
||||
#if defined(POCO_VXWORKS)
|
||||
return PathImpl::homeImpl();
|
||||
#else
|
||||
#elif POCO_OS == POCO_OS_MAC_OS_X
|
||||
std::string path = PathImpl::homeImpl();
|
||||
std::string::size_type n = path.size();
|
||||
if (n > 0 && path[n - 1] == '/')
|
||||
#if POCO_OS == POCO_OS_MAC_OS_X
|
||||
path.append("Library/Application Support/");
|
||||
path.append("Library/Application Support/");
|
||||
return path;
|
||||
#else
|
||||
path.append(".local/share/");
|
||||
#endif
|
||||
std::string path;
|
||||
if (EnvironmentImpl::hasImpl("XDG_DATA_HOME"))
|
||||
path = EnvironmentImpl::getImpl("XDG_DATA_HOME");
|
||||
if (!path.empty())
|
||||
return path;
|
||||
|
||||
path = PathImpl::homeImpl();
|
||||
std::string::size_type n = path.size();
|
||||
if (n > 0 && path[n - 1] == '/')
|
||||
path.append(".local/share/");
|
||||
|
||||
return path;
|
||||
#endif
|
||||
@ -119,34 +135,23 @@ std::string PathImpl::cacheHomeImpl()
|
||||
{
|
||||
#if defined(POCO_VXWORKS)
|
||||
return PathImpl::tempImpl();
|
||||
#else
|
||||
#elif POCO_OS == POCO_OS_MAC_OS_X
|
||||
std::string path = PathImpl::homeImpl();
|
||||
std::string::size_type n = path.size();
|
||||
if (n > 0 && path[n - 1] == '/')
|
||||
#if POCO_OS == POCO_OS_MAC_OS_X
|
||||
path.append("Library/Caches/");
|
||||
#else
|
||||
path.append(".cache/");
|
||||
#endif
|
||||
|
||||
path.append("Library/Caches/");
|
||||
return path;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
std::string PathImpl::tempHomeImpl()
|
||||
{
|
||||
#if defined(POCO_VXWORKS)
|
||||
return PathImpl::tempImpl();
|
||||
#else
|
||||
std::string path = PathImpl::homeImpl();
|
||||
std::string path;
|
||||
if (EnvironmentImpl::hasImpl("XDG_CACHE_HOME"))
|
||||
path = EnvironmentImpl::getImpl("XDG_CACHE_HOME");
|
||||
if (!path.empty())
|
||||
return path;
|
||||
|
||||
path = PathImpl::homeImpl();
|
||||
std::string::size_type n = path.size();
|
||||
if (n > 0 && path[n - 1] == '/')
|
||||
#if POCO_OS == POCO_OS_MAC_OS_X
|
||||
path.append("Library/Caches/");
|
||||
#else
|
||||
path.append(".local/tmp/");
|
||||
#endif
|
||||
if (n > 0 && path[n - 1] == '/')
|
||||
path.append(".cache/");
|
||||
|
||||
return path;
|
||||
#endif
|
||||
|
@ -124,12 +124,6 @@ std::string PathImpl::cacheHomeImpl()
|
||||
}
|
||||
|
||||
|
||||
std::string PathImpl::tempHomeImpl()
|
||||
{
|
||||
return tempImpl();
|
||||
}
|
||||
|
||||
|
||||
std::string PathImpl::tempImpl()
|
||||
{
|
||||
char buffer[MAX_PATH];
|
||||
|
@ -134,12 +134,6 @@ std::string PathImpl::cacheHomeImpl()
|
||||
}
|
||||
|
||||
|
||||
std::string PathImpl::tempHomeImpl()
|
||||
{
|
||||
return tempImpl();
|
||||
}
|
||||
|
||||
|
||||
std::string PathImpl::tempImpl()
|
||||
{
|
||||
Buffer<wchar_t> buffer(MAX_PATH_LEN);
|
||||
|
@ -56,12 +56,6 @@ std::string PathImpl::cacheHomeImpl()
|
||||
}
|
||||
|
||||
|
||||
std::string PathImpl::tempHomeImpl()
|
||||
{
|
||||
return tempImpl();
|
||||
}
|
||||
|
||||
|
||||
std::string PathImpl::configImpl()
|
||||
{
|
||||
return("\\");
|
||||
|
@ -44,7 +44,6 @@ class Util_API SystemConfiguration: public AbstractConfiguration
|
||||
/// - system.configHomeDir: the base directory relative to which user specific configuration files should be stored
|
||||
/// - system.cacheHomeDir: the base directory relative to which user specific non-essential data files should be stored
|
||||
/// - system.dataHomeDir: the base directory relative to which user specific data files should be stored
|
||||
/// - system.tempHomeDir: the base directory relative to which user-specific temporary files and other file objects should be placed
|
||||
/// - system.tempDir: the system's temporary directory
|
||||
/// - system.configDir: the system's configuration directory
|
||||
/// - system.dateTime: the current UTC date and time, formatted in ISO 8601 format.
|
||||
@ -84,7 +83,6 @@ private:
|
||||
static const std::string CONFIGHOMEDIR;
|
||||
static const std::string CACHEHOMEDIR;
|
||||
static const std::string DATAHOMEDIR;
|
||||
static const std::string TEMPHOMEDIR;
|
||||
static const std::string TEMPDIR;
|
||||
static const std::string CONFIGDIR;
|
||||
static const std::string DATETIME;
|
||||
|
@ -170,7 +170,6 @@ void Application::init()
|
||||
_pConfig->setString("application.dir", appPath.parent().toString());
|
||||
_pConfig->setString("application.configDir", Path::configHome() + appPath.getBaseName() + Path::separator());
|
||||
_pConfig->setString("application.cacheDir", Path::cacheHome() + appPath.getBaseName() + Path::separator());
|
||||
_pConfig->setString("application.tempDir", Path::tempHome() + appPath.getBaseName() + Path::separator());
|
||||
_pConfig->setString("application.dataDir", Path::dataHome() + appPath.getBaseName() + Path::separator());
|
||||
processOptions();
|
||||
}
|
||||
|
@ -46,7 +46,6 @@ const std::string SystemConfiguration::HOMEDIR = "system.homeDir";
|
||||
const std::string SystemConfiguration::CONFIGHOMEDIR = "system.configHomeDir";
|
||||
const std::string SystemConfiguration::CACHEHOMEDIR = "system.cacheHomeDir";
|
||||
const std::string SystemConfiguration::DATAHOMEDIR = "system.dataHomeDir";
|
||||
const std::string SystemConfiguration::TEMPHOMEDIR = "system.tempHomeDir";
|
||||
const std::string SystemConfiguration::TEMPDIR = "system.tempDir";
|
||||
const std::string SystemConfiguration::CONFIGDIR = "system.configDir";
|
||||
const std::string SystemConfiguration::DATETIME = "system.dateTime";
|
||||
@ -125,10 +124,6 @@ bool SystemConfiguration::getRaw(const std::string& key, std::string& value) con
|
||||
{
|
||||
value = Path::dataHome();
|
||||
}
|
||||
else if (key == TEMPHOMEDIR)
|
||||
{
|
||||
value = Path::tempHome();
|
||||
}
|
||||
else if (key == TEMPDIR)
|
||||
{
|
||||
value = Path::temp();
|
||||
@ -181,7 +176,6 @@ void SystemConfiguration::enumerate(const std::string& key, Keys& range) const
|
||||
range.push_back("configHomeDir");
|
||||
range.push_back("cacheHomeDir");
|
||||
range.push_back("dataHomeDir");
|
||||
range.push_back("tempHomeDir");
|
||||
range.push_back("tempDir");
|
||||
range.push_back("configDir");
|
||||
range.push_back("dateTime");
|
||||
|
@ -99,7 +99,6 @@ void SystemConfigurationTest::testKeys()
|
||||
assert (std::find(keys.begin(), keys.end(), "configHomeDir") != keys.end());
|
||||
assert (std::find(keys.begin(), keys.end(), "cacheHomeDir") != keys.end());
|
||||
assert (std::find(keys.begin(), keys.end(), "dataHomeDir") != keys.end());
|
||||
assert (std::find(keys.begin(), keys.end(), "tempHomeDir") != keys.end());
|
||||
assert (std::find(keys.begin(), keys.end(), "tempDir") != keys.end());
|
||||
assert (std::find(keys.begin(), keys.end(), "configDir") != keys.end());
|
||||
assert (std::find(keys.begin(), keys.end(), "dateTime") != keys.end());
|
||||
|
Loading…
x
Reference in New Issue
Block a user