X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=lib%2Ffilenames.c;h=f1ea243012095d19eccf334e54e02ade3b59c089;hp=cff9e8302d21c17bc59874a5c229567df33910ca;hb=75a05526334b721d719d6c8a8098ff64573e6c1e;hpb=d87db8843266caf6b11c1f2f1874328830b23878 diff --git a/lib/filenames.c b/lib/filenames.c index cff9e830..f1ea2430 100644 --- a/lib/filenames.c +++ b/lib/filenames.c @@ -20,24 +20,15 @@ #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,32 +36,12 @@ _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) { @@ -86,13 +57,7 @@ notmuch_filenames_get (notmuch_filenames_t *filenames) if (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