summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakeshi Abe <tabe@fixedpoint.jp>2011-05-30 00:01:59 +0900
committerNoel Power <noel.power@novell.com>2011-05-31 11:27:39 +0100
commit9276f7d5740a28b342db2a9bcd8644ff2f4f5742 (patch)
tree1808f9fce9c4fb55c76d6ead8d1d19e9624eca13
parent84c83035918d1f495b638e874118611c41f7c04d (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".
-rw-r--r--sal/osl/unx/security.c23
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
/*