notmuch/test/corpus/cur/10:2,
Carl Worth f6ec7ca78f test: Move corpus emails into maildir directory structure
Now that we have maildir synchronization turned on by default, it's
advantageous to make all of the tests exercise it as much as possible.
2010-11-11 04:17:29 -08:00

54 lines
1.8 KiB
Text

From: "Mikhail Gusarov" <dottedmag@dottedmag.net>
To: notmuch@notmuchmail.org
Date: Wed, 18 Nov 2009 02:51:18 +0600
Subject: [notmuch] [PATCH] Handle rename of message file
Message-ID: <1258491078-29658-1-git-send-email-dottedmag@dottedmag.net>
If message file has been renamed, just update filename in the DB.
Signed-off-by: Mikhail Gusarov <dottedmag at dottedmag.net>
---
lib/database.cc | 21 ++++++++++++---------
1 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/lib/database.cc b/lib/database.cc
index 3c8d626..c4eb8b6 100644
--- a/lib/database.cc
+++ b/lib/database.cc
@@ -925,20 +925,23 @@ notmuch_database_add_message (notmuch_database_t *notmuch,
if (private_status == NOTMUCH_PRIVATE_STATUS_NO_DOCUMENT_FOUND) {
_notmuch_message_set_filename (message, filename);
_notmuch_message_add_term (message, "type", "mail");
+
+ ret = _notmuch_database_link_message (notmuch, message, message_file);
+ if (ret)
+ goto DONE;
+
+ date = notmuch_message_file_get_header (message_file, "date");
+ _notmuch_message_set_date (message, date);
+
+ _notmuch_message_index_file (message, filename);
+ } else if (strcmp(notmuch_message_get_filename(message), filename)) {
+ /* Message file has been moved/renamed */
+ _notmuch_message_set_filename (message, filename);
} else {
ret = NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID;
goto DONE;
}
- ret = _notmuch_database_link_message (notmuch, message, message_file);
- if (ret)
- goto DONE;
-
- date = notmuch_message_file_get_header (message_file, "date");
- _notmuch_message_set_date (message, date);
-
- _notmuch_message_index_file (message, filename);
-
_notmuch_message_sync (message);
} catch (const Xapian::Error &error) {
fprintf (stderr, "A Xapian exception occurred: %s.\n",
--
1.6.3.3