]> git.notmuchmail.org Git - notmuch/blobdiff - lib/filenames.c
emacs: Add new option notmuch-search-hide-excluded
[notmuch] / lib / filenames.c
index cff9e8302d21c17bc59874a5c229567df33910ca..37d631d6ff311ba34c8a60124e30c564622e6072 100644 (file)
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see http://www.gnu.org/licenses/ .
+ * along with this program.  If not, see https://www.gnu.org/licenses/ .
  *
  * Author: Carl Worth <cworth@cworth.org>
  */
 
 #include "notmuch-private.h"
 
-typedef struct _notmuch_filenames_node {
-    char *filename;
-    struct _notmuch_filenames_node *next;
-} notmuch_filenames_node_t;
-
 struct _notmuch_filenames {
-    notmuch_filenames_node_t *head;
-    notmuch_filenames_node_t **tail;
-    notmuch_filenames_node_t *iterator;
+    notmuch_string_node_t *iterator;
 };
 
-/* Create a new notmuch_filenames_t object, with 'ctx' as its
- * talloc owner.
- *
- * This function can return NULL in case of out-of-memory.
- */
+/* The notmuch_filenames_t iterates over a notmuch_string_list_t of
+ * file names */
 notmuch_filenames_t *
-_notmuch_filenames_create (const void *ctx)
+_notmuch_filenames_create (const void *ctx,
+                          notmuch_string_list_t *list)
 {
     notmuch_filenames_t *filenames;
 
@@ -45,37 +36,17 @@ _notmuch_filenames_create (const void *ctx)
     if (unlikely (filenames == NULL))
        return NULL;
 
-    filenames->head = NULL;
-    filenames->tail = &filenames->head;
-
-    filenames->iterator = NULL;
+    filenames->iterator = list->head;
+    (void) talloc_reference (filenames, list);
 
     return filenames;
 }
 
-/* Append a single 'node' to the end of 'filenames'.
- */
-void
-_notmuch_filenames_add_filename (notmuch_filenames_t *filenames,
-                                const char *filename)
-{
-    /* Create and initialize new node. */
-    notmuch_filenames_node_t *node = talloc (filenames,
-                                            notmuch_filenames_node_t);
-
-    node->filename = talloc_strdup (node, filename);
-    node->next = NULL;
-
-    /* Append the node to the list. */
-    *(filenames->tail) = node;
-    filenames->tail = &node->next;
-}
-
 notmuch_bool_t
 notmuch_filenames_valid (notmuch_filenames_t *filenames)
 {
     if (filenames == NULL)
-       return FALSE;
+       return false;
 
     return (filenames->iterator != NULL);
 }
@@ -83,22 +54,16 @@ notmuch_filenames_valid (notmuch_filenames_t *filenames)
 const char *
 notmuch_filenames_get (notmuch_filenames_t *filenames)
 {
-    if (filenames->iterator == NULL)
+    if ((filenames == NULL) || (filenames->iterator == NULL))
        return NULL;
 
-    return filenames->iterator->filename;
-}
-
-void
-_notmuch_filenames_move_to_first (notmuch_filenames_t *filenames)
-{
-    filenames->iterator = filenames->head;
+    return filenames->iterator->string;
 }
 
 void
 notmuch_filenames_move_to_next (notmuch_filenames_t *filenames)
 {
-    if (filenames->iterator == NULL)
+    if ((filenames == NULL) || (filenames->iterator == NULL))
        return;
 
     filenames->iterator = filenames->iterator->next;