]> git.notmuchmail.org Git - notmuch/blobdiff - database.cc
Implement 'notmuch dump'.
[notmuch] / database.cc
index 59e837360018a72aeff4195f21b0b3b724e75334..041cffdc9afe49b01a2c54e86a87b88610d25b0d 100644 (file)
@@ -18,7 +18,7 @@
  * Author: Carl Worth <cworth@cworth.org>
  */
 
-#include "notmuch-private.h"
+#include "database-private.h"
 
 #include <iostream>
 
 
 using namespace std;
 
-struct _notmuch_database {
-    char *path;
-    Xapian::WritableDatabase *xapian_db;
-    Xapian::TermGenerator *term_gen;
-};
-
 #define ARRAY_SIZE(arr) (sizeof (arr) / sizeof (arr[0]))
 
 /* Xapian complains if we provide a term longer than this. */
@@ -463,6 +457,7 @@ notmuch_database_open (const char *path)
     notmuch->path = xstrdup (path);
 
     try {
+       Xapian::PostingIterator i;
        notmuch->xapian_db = new Xapian::WritableDatabase (xapian_path,
                                                           Xapian::DB_CREATE_OR_OPEN);
     } catch (const Xapian::Error &error) {
@@ -501,7 +496,7 @@ notmuch_database_add_message (notmuch_database_t *notmuch,
 {
     Xapian::WritableDatabase *db = notmuch->xapian_db;
     Xapian::Document doc;
-    notmuch_message_t *message;
+    notmuch_message_file_t *message;
 
     GPtrArray *parents, *thread_ids;
 
@@ -512,16 +507,16 @@ notmuch_database_add_message (notmuch_database_t *notmuch,
     time_t time_value;
     unsigned int i;
 
-    message = notmuch_message_open (filename);
+    message = notmuch_message_file_open (filename);
 
-    notmuch_message_restrict_headers (message,
-                                     "date",
-                                     "from",
-                                     "in-reply-to",
-                                     "message-id",
-                                     "references",
-                                     "subject",
-                                     (char *) NULL);
+    notmuch_message_file_restrict_headers (message,
+                                          "date",
+                                          "from",
+                                          "in-reply-to",
+                                          "message-id",
+                                          "references",
+                                          "subject",
+                                          (char *) NULL);
 
     try {
        doc = Xapian::Document ();
@@ -530,16 +525,16 @@ notmuch_database_add_message (notmuch_database_t *notmuch,
 
        parents = g_ptr_array_new ();
 
-       refs = notmuch_message_get_header (message, "references");
+       refs = notmuch_message_file_get_header (message, "references");
        parse_references (parents, refs);
 
-       in_reply_to = notmuch_message_get_header (message, "in-reply-to");
+       in_reply_to = notmuch_message_file_get_header (message, "in-reply-to");
        parse_references (parents, in_reply_to);
 
        for (i = 0; i < parents->len; i++)
            add_term (doc, "ref", (char *) g_ptr_array_index (parents, i));
 
-       header = notmuch_message_get_header (message, "message-id");
+       header = notmuch_message_file_get_header (message, "message-id");
        if (header) {
            message_id = parse_message_id (header, NULL);
            /* So the header value isn't RFC-compliant, but it's
@@ -592,21 +587,21 @@ notmuch_database_add_message (notmuch_database_t *notmuch,
 
        free (message_id);
 
-       date = notmuch_message_get_header (message, "date");
+       date = notmuch_message_file_get_header (message, "date");
        time_value = notmuch_parse_date (date, NULL);
 
        doc.add_value (NOTMUCH_VALUE_DATE,
                       Xapian::sortable_serialise (time_value));
 
-       from = notmuch_message_get_header (message, "from");
-       subject = notmuch_message_get_header (message, "subject");
-       to = notmuch_message_get_header (message, "to");
+       from = notmuch_message_file_get_header (message, "from");
+       subject = notmuch_message_file_get_header (message, "subject");
+       to = notmuch_message_file_get_header (message, "to");
 
        if (from == NULL &&
            subject == NULL &&
            to == NULL)
        {
-           notmuch_message_close (message);
+           notmuch_message_file_close (message);
            return NOTMUCH_STATUS_FILE_NOT_EMAIL;
        } else {
            db->add_document (doc);
@@ -617,7 +612,7 @@ notmuch_database_add_message (notmuch_database_t *notmuch,
        return NOTMUCH_STATUS_XAPIAN_EXCEPTION;
     }
 
-    notmuch_message_close (message);
+    notmuch_message_file_close (message);
 
     return NOTMUCH_STATUS_SUCCESS;
 }