Additional documentation for developers
[geeqie.git] / src / metadata.cc
index da7e98f..388a49e 100644 (file)
@@ -19,7 +19,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-#include <locale.h>
+#include <clocale>
 
 #include "main.h"
 #include "metadata.h"
@@ -100,7 +100,7 @@ static void metadata_cache_update(FileData *fd, const gchar *key, const GList *v
                        GList *old_values = entry->next;
                        entry->next = nullptr;
                        old_values->prev = nullptr;
-                       string_list_free(old_values);
+                       g_list_free_full(old_values, g_free);
                        work->data = g_list_append(entry, string_list_copy(values));
                        DEBUG_1("updated %s %s\n", key, fd->path);
                        return;
@@ -150,7 +150,7 @@ static void metadata_cache_remove(FileData *fd, const gchar *key)
                if (strcmp(entry_key, key) == 0)
                        {
                        /* key found */
-                       string_list_free(entry);
+                       g_list_free_full(entry, g_free);
                        fd->cached_metadata = g_list_delete_link(fd->cached_metadata, work);
                        DEBUG_1("removed %s %s\n", key, fd->path);
                        return;
@@ -162,18 +162,13 @@ static void metadata_cache_remove(FileData *fd, const gchar *key)
 
 void metadata_cache_free(FileData *fd)
 {
-       GList *work;
        if (fd->cached_metadata) DEBUG_1("freed %s\n", fd->path);
 
-       work = fd->cached_metadata;
-       while (work)
+       g_list_free_full(fd->cached_metadata, [](gpointer data)
                {
-               auto entry = static_cast<GList *>(work->data);
-               string_list_free(entry);
-
-               work = work->next;
-               }
-       g_list_free(fd->cached_metadata);
+               auto entry = static_cast<GList *>(data);
+               g_list_free_full(entry, g_free);
+               });
        fd->cached_metadata = nullptr;
 }
 
@@ -230,22 +225,25 @@ gboolean metadata_write_queue_remove(FileData *fd)
        return TRUE;
 }
 
-//gboolean metadata_write_queue_remove_list(GList *list)
-//{
-       //GList *work;
-       //gboolean ret = TRUE;
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-function"
+gboolean metadata_write_queue_remove_list_unused(GList *list)
+{
+       GList *work;
+       gboolean ret = TRUE;
 
-       //work = list;
-       //while (work)
-               //{
-               //FileData *fd = static_cast<//FileData *>(work->data);
-               //work = work->next;
-               //ret = ret && metadata_write_queue_remove(fd);
-               //}
-       //return ret;
-//}
+       work = list;
+       while (work)
+               {
+               FileData *fd = static_cast<FileData *>(work->data);
+               work = work->next;
+               ret = ret && metadata_write_queue_remove(fd);
+               }
+       return ret;
+}
+#pragma GCC diagnostic pop
 
-void metadata_notify_cb(FileData *fd, NotifyType type, gpointer UNUSED(data))
+void metadata_notify_cb(FileData *fd, NotifyType type, gpointer)
 {
        if (type & (NOTIFY_REREAD | NOTIFY_CHANGE))
                {
@@ -291,7 +289,7 @@ gboolean metadata_write_queue_confirm(gboolean force_dialog, FileUtilDoneFunc do
        return (metadata_write_queue != nullptr);
 }
 
-static gboolean metadata_write_queue_idle_cb(gpointer UNUSED(data))
+static gboolean metadata_write_queue_idle_cb(gpointer)
 {
        metadata_write_queue_confirm(FALSE, nullptr, nullptr);
        metadata_write_idle_id = 0;
@@ -417,7 +415,7 @@ gboolean metadata_write_string(FileData *fd, const gchar *key, const char *value
 {
        GList *list = g_list_append(nullptr, g_strdup(value));
        gboolean ret = metadata_write_list(fd, key, list);
-       string_list_free(list);
+       g_list_free_full(list, g_free);
        return ret;
 }
 
@@ -494,7 +492,7 @@ static gboolean metadata_legacy_write(FileData *fd)
 
        g_free(metadata_pathl);
        g_free(orig_comment);
-       string_list_free(orig_keywords);
+       g_list_free_full(orig_keywords, g_free);
 
        return success;
 }
@@ -564,7 +562,7 @@ static gboolean metadata_file_read(gchar *path, GList **keywords, gchar **commen
                }
        else
                {
-               string_list_free(list);
+               g_list_free_full(list, g_free);
                }
 
        if (comment_build)
@@ -742,7 +740,7 @@ gchar *metadata_read_string(FileData *fd, const gchar *key, MetadataFormat forma
                {
                auto str = static_cast<gchar *>(string_list->data);
                string_list->data = nullptr;
-               string_list_free(string_list);
+               g_list_free_full(string_list, g_free);
                return str;
                }
        return nullptr;
@@ -925,7 +923,7 @@ gboolean metadata_append_list(FileData *fd, const gchar *key, const GList *value
                list = remove_duplicate_strings_from_list(list);
 
                ret = metadata_write_list(fd, key, list);
-               string_list_free(list);
+               g_list_free_full(list, g_free);
                return ret;
                }
 }
@@ -1047,7 +1045,7 @@ GList *string_to_keywords_list(const gchar *text)
  */
 
 
-gboolean meta_data_get_keyword_mark(FileData *fd, gint UNUSED(n), gpointer data)
+gboolean meta_data_get_keyword_mark(FileData *fd, gint, gpointer data)
 {
        /** @FIXME do not use global keyword_tree */
        auto path = static_cast<GList *>(data);
@@ -1065,7 +1063,7 @@ gboolean meta_data_get_keyword_mark(FileData *fd, gint UNUSED(n), gpointer data)
        return found;
 }
 
-gboolean meta_data_set_keyword_mark(FileData *fd, gint UNUSED(n), gboolean value, gpointer data)
+gboolean meta_data_set_keyword_mark(FileData *fd, gint, gboolean value, gpointer data)
 {
        auto path = static_cast<GList *>(data);
        GList *keywords = nullptr;
@@ -1088,7 +1086,7 @@ gboolean meta_data_set_keyword_mark(FileData *fd, gint UNUSED(n), gboolean value
                metadata_write_list(fd, KEYWORD_KEY, keywords);
                }
 
-       string_list_free(keywords);
+       g_list_free_full(keywords, g_free);
        return TRUE;
 }
 
@@ -1241,7 +1239,7 @@ gboolean keyword_exists(GtkTreeModel *keyword_tree, GtkTreeIter *parent_ptr, Gtk
 
        while (TRUE)
                {
-               if (!(exclude_sibling && sibling && keyword_compare(keyword_tree, &iter, sibling) == 0))
+               if (!exclude_sibling || !sibling || keyword_compare(keyword_tree, &iter, sibling) != 0)
                        {
                        if (options->metadata.keywords_case_sensitive)
                                {
@@ -1473,7 +1471,7 @@ gboolean keyword_tree_is_set(GtkTreeModel *keyword_tree, GtkTreeIter *iter, GLis
 
                ret = keyword_tree_is_set_casefold(keyword_tree, *iter, casefold_list);
 
-               string_list_free(casefold_list);
+               g_list_free_full(casefold_list, g_free);
                }
 
        return ret;
@@ -1631,7 +1629,7 @@ gboolean keyword_is_hidden_in(GtkTreeModel *keyword_tree, GtkTreeIter *iter, gpo
        return !!g_list_find(list, id);
 }
 
-static gboolean keyword_show_all_in_cb(GtkTreeModel *model, GtkTreePath *UNUSED(path), GtkTreeIter *iter, gpointer data)
+static gboolean keyword_show_all_in_cb(GtkTreeModel *model, GtkTreePath *, GtkTreeIter *iter, gpointer data)
 {
        keyword_show_in(GTK_TREE_STORE(model), iter, data);
        return FALSE;
@@ -1642,7 +1640,7 @@ void keyword_show_all_in(GtkTreeStore *keyword_tree, gpointer id)
        gtk_tree_model_foreach(GTK_TREE_MODEL(keyword_tree), keyword_show_all_in_cb, id);
 }
 
-static gboolean keyword_revert_hidden_in_cb(GtkTreeModel *model, GtkTreePath *UNUSED(path), GtkTreeIter *iter, gpointer data)
+static gboolean keyword_revert_hidden_in_cb(GtkTreeModel *model, GtkTreePath *, GtkTreeIter *iter, gpointer data)
 {
        if (keyword_is_hidden_in(GTK_TREE_MODEL(keyword_tree), iter, data))
                {
@@ -1685,7 +1683,7 @@ void keyword_hide_unset_in(GtkTreeStore *keyword_tree, gpointer id, GList *keywo
        keyword_hide_unset_in_recursive(keyword_tree, &iter, id, keywords);
 }
 
-static gboolean keyword_show_set_in_cb(GtkTreeModel *model, GtkTreePath *UNUSED(path), GtkTreeIter *iter_ptr, gpointer data)
+static gboolean keyword_show_set_in_cb(GtkTreeModel *model, GtkTreePath *, GtkTreeIter *iter_ptr, gpointer data)
 {
        GtkTreeIter iter = *iter_ptr;
        auto keywords = static_cast<GList *>(data);