[Libreoffice-commits] .: sal/osl

Noel Power noelp at kemper.freedesktop.org
Tue May 31 03:29:52 PDT 2011


 sal/osl/unx/security.c |   23 +++++++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

New commits:
commit a6f56f70a4930d3f71bd9c9b90fdd0ba20e4da5f
Author: Takeshi Abe <tabe at fixedpoint.jp>
Date:   Mon May 30 00:01:59 2011 +0900

    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".

diff --git a/sal/osl/unx/security.c b/sal/osl/unx/security.c
index 8cda087..f0f82ec 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
 
 /*


More information about the Libreoffice-commits mailing list