It seems I somehow repeated the function prototypes for tags.c and filenames.c twice at the bottom of notmuch-private.h (probably through some rebase mishap).  Obviously those should be deduplicated.<br><br><div class="gmail_quote">
On Thu, Dec 9, 2010 at 3:59 PM, Austin Clements <span dir="ltr"><<a href="mailto:amdragon@mit.edu">amdragon@mit.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
diff --git a/lib/notmuch-private.h b/lib/notmuch-private.h<br>
index 303aeb3..b6f1095 100644<br>
--- a/lib/notmuch-private.h<br>
+++ b/lib/notmuch-private.h<br>
@@ -453,48 +453,60 @@ notmuch_sha1_of_string (const char *str);<br>
 char *<br>
 notmuch_sha1_of_file (const char *filename);<br>
<br>
-/* tags.c */<br>
+/* strings.c */<br>
<br>
-notmuch_tags_t *<br>
-_notmuch_tags_create (void *ctx);<br>
+typedef struct _notmuch_string_node {<br>
+    char *string;<br>
+    struct _notmuch_string_node *next;<br>
+} notmuch_string_node_t;<br>
+<br>
+typedef struct _notmuch_string_list {<br>
+    int length;<br>
+    notmuch_string_node_t *head;<br>
+    notmuch_string_node_t **tail;<br>
+} notmuch_string_list_t;<br>
<br>
+notmuch_string_list_t *<br>
+_notmuch_string_list_create (const void *ctx);<br>
+<br>
+/* Add 'string' to 'list'.<br>
+ *<br>
+ * The list will create its own talloced copy of 'string'.<br>
+ */<br>
 void<br>
-_notmuch_tags_add_tag (notmuch_tags_t *tags, const char *tag);<br>
+_notmuch_string_list_append (notmuch_string_list_t *list,<br>
+                            const char *string);<br>
<br>
 void<br>
-_notmuch_tags_prepare_iterator (notmuch_tags_t *tags);<br>
+_notmuch_string_list_sort (notmuch_string_list_t *list);<br>
<br>
-/* filenames.c */<br>
+/* tags.c */<br>
+<br>
+notmuch_tags_t *<br>
+_notmuch_tags_create (const void *ctx, notmuch_string_list_t *list,<br>
+                     notmuch_bool_t steal);<br>
<br>
-typedef struct _notmuch_filename_node {<br>
-    char *filename;<br>
-    struct _notmuch_filename_node *next;<br>
-} notmuch_filename_node_t;<br>
+/* filenames.c */<br>
<br>
-typedef struct _notmuch_filename_list {<br>
-    notmuch_filename_node_t *head;<br>
-    notmuch_filename_node_t **tail;<br>
-} notmuch_filename_list_t;<br>
+/* The notmuch_filenames_t iterates over a notmuch_string_list_t of<br>
+ * file names */<br>
+notmuch_filenames_t *<br>
+_notmuch_filenames_create (const void *ctx,<br>
+                          notmuch_string_list_t *list);<br>
<br>
-notmuch_filename_list_t *<br>
-_notmuch_filename_list_create (const void *ctx);<br>
+/* tags.c */<br>
<br>
-/* Add 'filename' to 'list'.<br>
- *<br>
- * The list will create its own talloced copy of 'filename'.<br>
- */<br>
-void<br>
-_notmuch_filename_list_add_filename (notmuch_filename_list_t *list,<br>
-                                    const char *filename);<br>
+notmuch_tags_t *<br>
+_notmuch_tags_create (const void *ctx, notmuch_string_list_t *list,<br>
+                     notmuch_bool_t steal);<br>
<br>
-void<br>
-_notmuch_filename_list_destroy (notmuch_filename_list_t *list);<br>
+/* filenames.c */<br>
<br>
-/* The notmuch_filenames_t is an iterator object for a<br>
- * notmuch_filename_list_t */<br>
+/* The notmuch_filenames_t iterates over a notmuch_string_list_t of<br>
+ * file names */<br>
 notmuch_filenames_t *<br>
 _notmuch_filenames_create (const void *ctx,<br>
-                          notmuch_filename_list_t *list);<br>
+                          notmuch_string_list_t *list);<br>
<br>
 #pragma GCC visibility pop<br></blockquote></div>