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

Reply via email to