allow xdg dir usage if you add -DDOXDG to CFLAGS.
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>
Tue, 28 May 2013 03:31:59 +0000 (12:31 +0900)
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>
Tue, 28 May 2013 03:31:59 +0000 (12:31 +0900)
src/lib/elm_config.c

index dedb293..3ac06fb 100644 (file)
@@ -522,18 +522,38 @@ _elm_user_dir_snprintf(char       *dst,
 
 #ifdef _WIN32
    home = evil_homedir_get();
+   user_dir_len = eina_str_join_len
+     (dst, size, '/', home, strlen(home),
+         ELEMENTARY_BASE_DIR, sizeof(ELEMENTARY_BASE_DIR) - 1);
 #else
-   home = getenv("HOME");
+#ifdef DOXDG   
+   home = getenv("XDG_CONFIG_HOME");
+   if (home)
+     {
+        user_dir_len = eina_str_join_len
+          (dst, size, '/', home, strlen(home),
+              "elementary", sizeof("elementary") - 1);
+     }
+   else
+#endif     
+     {
+        if (!home) home = getenv("HOME");
+        if (!home) home = "/";
+#ifdef DOXDG
+        user_dir_len = eina_str_join_len
+          (dst, size, '/', home, strlen(home),
+              ".config", sizeof(".config") - 1,
+              "elementary", sizeof("elementary") - 1);
+#else
+        user_dir_len = eina_str_join_len
+          (dst, size, '/', home, strlen(home),
+              ELEMENTARY_BASE_DIR, sizeof(ELEMENTARY_BASE_DIR) - 1);
+#endif        
+     }
 #endif
-   if (!home)
-     home = "/";
-
-   user_dir_len = eina_str_join_len(dst, size, '/', home, strlen(home),
-                                    ELEMENTARY_BASE_DIR, sizeof(ELEMENTARY_BASE_DIR) - 1);
 
    off = user_dir_len + 1;
-   if (off >= size)
-     goto end;
+   if (off >= size) goto end;
 
    va_start(ap, fmt);
    dst[user_dir_len] = '/';