This is an automated email from the git hooks/post-receive script.

git pushed a commit to branch master
in repository efm2.

View the commit online.

commit 7b525a9b2a2927a8747053c06e0162d759c07716
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
AuthorDate: Tue Jun 18 09:41:07 2024 +0100

    meta - track changed flags and deleted meta keys
---
 src/backends/default/meta.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/src/backends/default/meta.c b/src/backends/default/meta.c
index dcaebeb..de92471 100644
--- a/src/backends/default/meta.c
+++ b/src/backends/default/meta.c
@@ -43,6 +43,7 @@ typedef struct _Meta
 {
   const char *meta; // meta key
   const char *data; // data in meta
+  Eina_Bool   changed : 1;
 } Meta;
 
 static const char  *_config_dir       = NULL;
@@ -148,7 +149,8 @@ _meta_file_write(Meta_File *mf)
       fprintf(f, "[Efm Meta]\n");
       EINA_LIST_FOREACH(mf->list, l, m)
       {
-        fprintf(f, "%s=%s\n", m->meta, m->data);
+        if (m->data) fprintf(f, "%s=%s\n", m->meta, m->data);
+        m->changed = EINA_FALSE;
       }
       fclose(f);
     }
@@ -332,13 +334,9 @@ meta_set(const char *path, const char *meta, const char *data)
     if (!strcmp(m->meta, meta))
       { // found matching meta key -> modify or del it
         if (!strcmp(m->data, data)) return;
-        if (data) // modify it if data != NULL
-          eina_stringshare_replace(&m->data, data);
-        else
-          { // NULL data - delete it
-            mf->list = eina_list_remove_list(mf->list, l);
-            _meta_free(m);
-          }
+        // replaces data - if data is NULL it's deleted so keep entry
+        eina_stringshare_replace(&m->data, data);
+        m->changed = EINA_TRUE;
         _meta_file_write_queue(mf); // queue writes for later
         return;
       }
@@ -348,6 +346,7 @@ meta_set(const char *path, const char *meta, const char *data)
   if (!m) return;
   m->meta  = eina_stringshare_add(meta);
   m->data  = ""
+  m->changed = EINA_TRUE;
   mf->list = eina_list_append(mf->list, m);
   _meta_file_write_queue(mf); // queue writes for later
 }

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to