* evas: better fix for path init.
authorcedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 14 Dec 2010 14:17:07 +0000 (14:17 +0000)
committercedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 14 Dec 2010 14:17:07 +0000 (14:17 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@55553 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/file/evas_module.c

index 6f55ff8..088a503 100644 (file)
@@ -51,10 +51,7 @@ _evas_module_append(Eina_List *list, char *path)
 void
 evas_module_paths_init(void)
 {
-   char *path, *path2;
-#ifndef _MSC_VER
-   const char *path3;
-#endif
+   char *path;
 
    /* 1. ~/.evas/modules/ */
    path = eina_module_environment_path_get("HOME", "/.evas/modules");
@@ -62,26 +59,24 @@ evas_module_paths_init(void)
 
    /* 2. $(EVAS_MODULE_DIR)/evas/modules/ */
    path = eina_module_environment_path_get("EVAS_MODULES_DIR", "/evas/modules");
-   evas_module_paths = _evas_module_append(evas_module_paths, path);
+   if (eina_list_search_unsorted(evas_module_paths, (Eina_Compare_Cb) strcmp, path))
+     free(path);
+   else
+     evas_module_paths = _evas_module_append(evas_module_paths, path);
 
    /* 3. libevas.so/../evas/modules/ */
-   path2 = eina_module_symbol_path_get(evas_module_paths_init, "/evas/modules");
-   if (path2 && path && (strcmp(path, path2) == 0))
-     {
-        free(path2);
-        path2 = NULL;
-     }
+   path = eina_module_symbol_path_get(evas_module_paths_init, "/evas/modules");
+   if (eina_list_search_unsorted(evas_module_paths, (Eina_Compare_Cb) strcmp, path))
+     free(path);
    else
-     evas_module_paths = _evas_module_append(evas_module_paths, path2);
+     evas_module_paths = _evas_module_append(evas_module_paths, path);
 
    /* 4. PREFIX/evas/modules/ */
 #ifndef _MSC_VER
-   path3 = PACKAGE_LIB_DIR "/evas/modules";
-   if ((path && (strcmp(path, path3) != 0)) ||
-       (path2 && (strcmp(path2, path3) != 0)) ||
-       (!path && !path2))
+   path = PACKAGE_LIB_DIR "/evas/modules";
+   if (!eina_list_search_unsorted(evas_module_paths, (Eina_Compare_Cb) strcmp, path))
      {
-       path = strdup(path3);
+       path = strdup(path);
        if (path)
          evas_module_paths = _evas_module_append(evas_module_paths, path);
      }