* Allow some tests to pass on Windows. Just for the fun
authorcaro <caro@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 20 Jun 2009 16:18:17 +0000 (16:18 +0000)
committercaro <caro@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 20 Jun 2009 16:18:17 +0000 (16:18 +0000)
 * More important, allow to manage correctly the icons with
   efreet on Windows. It works with Tango (and ewl, now)

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/efreet@41130 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/bin/ef_data_dirs.c
src/bin/ef_icon_theme.c
src/lib/efreet_base.c

index 02e3ae3..8270531 100644 (file)
@@ -39,6 +39,9 @@ ef_cb_efreet_data_home(void)
     efreet_shutdown();
     unsetenv("XDG_DATA_HOME");
     unsetenv("HOME");
+#ifdef _WIN32
+    unsetenv("USERPROFILE");
+#endif
     efreet_init();
 
     tmp = efreet_data_home_get();
@@ -88,6 +91,9 @@ ef_cb_efreet_config_home(void)
     efreet_shutdown();
     unsetenv("XDG_CONFIG_HOME");
     unsetenv("HOME");
+#ifdef _WIN32
+    unsetenv("USERPROFILE");
+#endif
     efreet_init();
 
     tmp = efreet_config_home_get();
@@ -137,6 +143,9 @@ ef_cb_efreet_cache_home(void)
     efreet_shutdown();
     unsetenv("XDG_CACHE_HOME");
     unsetenv("HOME");
+#ifdef _WIN32
+    unsetenv("USERPROFILE");
+#endif
     efreet_init();
 
     tmp = efreet_cache_home_get();
index 398692c..4d8f870 100644 (file)
@@ -45,6 +45,9 @@ ef_cb_efreet_icon_theme(void)
 
     efreet_shutdown();
     unsetenv("HOME");
+#ifdef _WIN32
+    unsetenv("USERPROFILE");
+#endif
     efreet_init();
 
     tmp = efreet_icon_user_dir_get();
index d0e6630..ca89bb3 100644 (file)
 #include "Efreet.h"
 #include "efreet_private.h"
 
+#ifdef _WIN32
+# define EFREET_PATH_SEP ';'
+#else
+# define EFREET_PATH_SEP ':'
+#endif
+
 static const char *efreet_home_dir = NULL;
 static const char *xdg_data_home = NULL;
 static const char *xdg_config_home = NULL;
@@ -70,6 +76,10 @@ efreet_home_dir_get(void)
     if (efreet_home_dir) return efreet_home_dir;
 
     efreet_home_dir = getenv("HOME");
+#ifdef _WIN32
+    if (!efreet_home_dir || efreet_home_dir[0] == '\0')
+        efreet_home_dir = getenv("USERPROFILE");
+#endif
     if (!efreet_home_dir || efreet_home_dir[0] == '\0')
         efreet_home_dir = "/tmp";
 
@@ -102,9 +112,19 @@ efreet_data_home_get(void)
 EAPI Eina_List *
 efreet_data_dirs_get(void)
 {
+#ifdef _WIN32
+    char buf[4096];
+#endif
+
     if (xdg_data_dirs) return xdg_data_dirs;
+
+#ifdef _WIN32
+    snprintf(buf, 4096, "%s\\Efl;" PACKAGE_DATA_DIR ";/usr/share", getenv("APPDATA"));
+    xdg_data_dirs = efreet_dirs_get("XDG_DATA_DIRS", buf);
+#else
     xdg_data_dirs = efreet_dirs_get("XDG_DATA_DIRS",
                             PACKAGE_DATA_DIR ":/usr/share");
+#endif
     return xdg_data_dirs;
 }
 
@@ -205,7 +225,7 @@ efreet_dirs_get(const char *key, const char *fallback)
 
     tmp = strdup(path);
     s = tmp;
-    p = strchr(s, ':');
+    p = strchr(s, EFREET_PATH_SEP);
     while (p)
     {
         *p = '\0';
@@ -213,7 +233,7 @@ efreet_dirs_get(const char *key, const char *fallback)
             dirs = eina_list_append(dirs, (void *)eina_stringshare_add(s));
 
         s = ++p;
-        p = strchr(s, ':');
+        p = strchr(s, EFREET_PATH_SEP);
     }
     if (!eina_list_search_unsorted(dirs, EINA_COMPARE_CB(strcmp), s))
       dirs = eina_list_append(dirs, (void *)eina_stringshare_add(s));