diff options
author | Takeshi Abe <tabe@fixedpoint.jp> | 2011-05-30 00:01:59 +0900 |
---|---|---|
committer | Noel Power <noel.power@novell.com> | 2011-05-31 11:27:39 +0100 |
commit | 9276f7d5740a28b342db2a9bcd8644ff2f4f5742 (patch) | |
tree | 1808f9fce9c4fb55c76d6ead8d1d19e9624eca13 /sal | |
parent | 84c83035918d1f495b638e874118611c41f7c04d (diff) |
fdo#32263
use $HOME/.config unless XDG_CONFIG_HOME is set with respect to
http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
moreover, lose dot so as "$HOME/.config/libreoffice".
Diffstat (limited to 'sal')
-rw-r--r-- | sal/osl/unx/security.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/sal/osl/unx/security.c b/sal/osl/unx/security.c index 1dc1b519d191..3c957f476fb4 100644 --- a/sal/osl/unx/security.c +++ b/sal/osl/unx/security.c @@ -360,18 +360,37 @@ sal_Bool SAL_CALL osl_getConfigDir(oslSecurity Security, rtl_uString **pustrDire #ifndef MACOSX +#define DOT_CONFIG "/.config" + static sal_Bool SAL_CALL osl_psz_getConfigDir(oslSecurity Security, sal_Char* pszDirectory, sal_uInt32 nMax) { sal_Char *pStr = getenv("XDG_CONFIG_HOME"); if ((pStr == NULL) || (strlen(pStr) == 0) || (access(pStr, 0) != 0)) - return (osl_psz_getHomeDir(Security, pszDirectory, nMax)); + { + // a default equal to $HOME/.config should be used. + if (!osl_psz_getHomeDir(Security, pszDirectory, nMax)) + return sal_False; + size_t n = strlen(pszDirectory); + if (n + sizeof(DOT_CONFIG) < nMax) + { + strncpy(pszDirectory+n, DOT_CONFIG, sizeof(DOT_CONFIG)); + if (access(pszDirectory, 0) != 0) + { + // resort to HOME + pszDirectory[n] = '\0'; + } + } + } + else + strncpy(pszDirectory, pStr, nMax); - strncpy(pszDirectory, pStr, nMax); return sal_True; } +#undef DOT_CONFIG + #else /* |