billiob pushed a commit to branch master.

http://git.enlightenment.org/apps/terminology.git/commit/?id=2669cc578049a155988b3c776ed3859aba12caa4

commit 2669cc578049a155988b3c776ed3859aba12caa4
Author: Boris Faure <[email protected]>
Date:   Sun Nov 22 19:31:53 2020 +0100

    colors: list user-stored color schemes
---
 src/bin/colors.c | 51 ++++++++++++++++++++++++++++++++++++++-------------
 1 file changed, 38 insertions(+), 13 deletions(-)

diff --git a/src/bin/colors.c b/src/bin/colors.c
index 03312cd..79004a1 100644
--- a/src/bin/colors.c
+++ b/src/bin/colors.c
@@ -761,7 +761,39 @@ color_scheme_list(void)
         ERR("failed to open '%s'", path_app);
         goto end;
      }
+
    ef_user = eet_open(path_user, EET_FILE_MODE_READ);
+   if (ef_user)
+     {
+        it = eet_list_entries(ef_user);
+        if (!it)
+          {
+             ERR("failed to list entries in '%s'", path_user);
+             goto end;
+          }
+        EINA_ITERATOR_FOREACH(it, entry)
+          {
+             cs_user = eet_data_read(ef_user, edd_cs, entry->name);
+             if (!cs_user)
+               {
+                  ERR("failed to load color scheme '%s' from '%s'",
+                      entry->name, path_user);
+                  continue;
+               }
+             cs_app = eet_data_read(ef_app, edd_cs, entry->name);
+             if (cs_app)
+               {
+                  /* Prefer user file */
+                  if (cs_user->md.version >= cs_app->md.version)
+                    l = eina_list_sorted_insert(l, color_scheme_cmp, cs_user);
+                  else
+                    free(cs_user);
+                  free(cs_app);
+               }
+             else
+                  l = eina_list_sorted_insert(l, color_scheme_cmp, cs_user);
+          }
+     }
 
    it = eet_list_entries(ef_app);
    if (!it)
@@ -781,22 +813,15 @@ color_scheme_list(void)
         cs_user = eet_data_read(ef_user, edd_cs, entry->name);
         if (cs_user)
           {
-             /* Prefer user file */
-             if (cs_user->md.version >= cs_app->md.version)
-               {
-                  l = eina_list_sorted_insert(l, color_scheme_cmp, cs_user);
-                  free(cs_app);
-               }
+             /* Prefer user file if higher version */
+             if (cs_user->md.version < cs_app->md.version)
+               l = eina_list_sorted_insert(l, color_scheme_cmp, cs_app);
              else
-               {
-                  l = eina_list_sorted_insert(l, color_scheme_cmp, cs_app);
-                  free(cs_user);
-               }
+               free(cs_app);
+             free(cs_user);
           }
         else
-          {
-             l = eina_list_sorted_insert(l, color_scheme_cmp, cs_app);
-          }
+          l = eina_list_sorted_insert(l, color_scheme_cmp, cs_app);
      }
 end:
    eina_iterator_free(it);

-- 


Reply via email to