}
}
+/**
+ * \see find_string_in_list
+ */
gchar *find_string_in_list_utf8nocase(GList *list, const gchar *string)
{
gchar *string_casefold = g_utf8_casefold(string, -1);
while (list)
{
gchar *haystack = list->data;
-
+
if (haystack)
{
gboolean equal;
return haystack;
}
}
-
+
list = list->next;
}
-
+
g_free(string_casefold);
return NULL;
}
+/**
+ * \see find_string_in_list
+ */
+gchar *find_string_in_list_utf8case(GList *list, const gchar *string)
+{
+ while (list)
+ {
+ gchar *haystack = list->data;
+
+ if (haystack && strcmp(haystack, string) == 0)
+ return haystack;
+
+ list = list->next;
+ } // while (list)
+
+ return NULL;
+} // gchar *find_string_in_list_utf...
+
+/**
+ * \brief Find a existent string in a list.
+ *
+ * This is a switch between find_string_in_list_utf8case and
+ * find_string_in_list_utf8nocase to search with or without case for the
+ * existence of a string.
+ *
+ * \param list The list to search in
+ * \param string The string to search for
+ * \return The string or NULL
+ *
+ * \see find_string_in_list_utf8case
+ * \see find_string_in_list_utf8nocase
+ */
+gchar *find_string_in_list(GList *list, const gchar *string)
+{
+ if (options->metadata.keywords_case_sensitive)
+ return find_string_in_list_utf8case(list, string);
+ else
+ return find_string_in_list_utf8nocase(list, string);
+}
#define KEYWORDS_SEPARATOR(c) ((c) == ',' || (c) == ';' || (c) == '\n' || (c) == '\r' || (c) == '\b')
gchar *keyword = g_strndup(begin, l);
/* only add if not already in the list */
- if (!find_string_in_list_utf8nocase(list, keyword))
+ if (!find_string_in_list(list, keyword))
list = g_list_append(list, keyword);
else
g_free(keyword);
if (keyword_get_is_keyword(keyword_tree, &iter))
{
gchar *name = keyword_get_name(keyword_tree, &iter);
- if (!find_string_in_list_utf8nocase(*kw_list, name))
+ if (!find_string_in_list(*kw_list, name))
{
*kw_list = g_list_append(*kw_list, name);
}
if (!keyword_get_is_keyword(keyword_tree, iter)) return;
name = keyword_get_name(keyword_tree, iter);
- found = find_string_in_list_utf8nocase(*kw_list, name);
+ found = find_string_in_list(*kw_list, name);
if (found)
{
gboolean metadata_append_list(FileData *fd, const gchar *key, const GList *values);
GList *string_to_keywords_list(const gchar *text);
-gchar *find_string_in_list_utf8nocase(GList *list, const gchar *string);
gboolean meta_data_get_keyword_mark(FileData *fd, gint n, gpointer data);
gboolean meta_data_set_keyword_mark(FileData *fd, gint n, gboolean value, gpointer data);