X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=lib%2Fadd-message.cc;h=bce10a0f614c3abe487cd055e7db50013936c013;hb=bcd6229d26c26e694b185fb8bf762bad606916c8;hp=2922eaa9e9b2f8088d0b454a841d85bb1668862d;hpb=4fdabd636e1b0417bb40c71bdce64e18f0f347e2;p=notmuch diff --git a/lib/add-message.cc b/lib/add-message.cc index 2922eaa9..bce10a0f 100644 --- a/lib/add-message.cc +++ b/lib/add-message.cc @@ -220,7 +220,7 @@ _my_talloc_free_for_g_hash (void *ptr) talloc_free (ptr); } -static notmuch_status_t +notmuch_status_t _notmuch_database_link_message_to_parents (notmuch_database_t *notmuch, notmuch_message_t *message, notmuch_message_file_t *message_file, @@ -404,7 +404,7 @@ static notmuch_status_t _notmuch_database_link_message (notmuch_database_t *notmuch, notmuch_message_t *message, notmuch_message_file_t *message_file, - notmuch_bool_t is_ghost) + bool is_ghost) { void *local = talloc_new (NULL); notmuch_status_t status; @@ -458,15 +458,16 @@ _notmuch_database_link_message (notmuch_database_t *notmuch, } notmuch_status_t -notmuch_database_add_message (notmuch_database_t *notmuch, - const char *filename, - notmuch_message_t **message_ret) +notmuch_database_index_file (notmuch_database_t *notmuch, + const char *filename, + notmuch_indexopts_t unused (*indexopts), + notmuch_message_t **message_ret) { notmuch_message_file_t *message_file; notmuch_message_t *message = NULL; notmuch_status_t ret = NOTMUCH_STATUS_SUCCESS, ret2; notmuch_private_status_t private_status; - notmuch_bool_t is_ghost = FALSE, is_new = FALSE; + bool is_ghost = false, is_new = false; const char *date; const char *from, *to, *subject; @@ -509,12 +510,12 @@ notmuch_database_add_message (notmuch_database_t *notmuch, /* We cannot call notmuch_message_get_flag for a new message */ switch (private_status) { case NOTMUCH_PRIVATE_STATUS_NO_DOCUMENT_FOUND: - is_ghost = FALSE; - is_new = TRUE; + is_ghost = false; + is_new = true; break; case NOTMUCH_PRIVATE_STATUS_SUCCESS: is_ghost = notmuch_message_get_flag (message, NOTMUCH_MESSAGE_FLAG_GHOST); - is_new = FALSE; + is_new = false; break; default: ret = COERCE_STATUS (private_status, @@ -529,25 +530,28 @@ notmuch_database_add_message (notmuch_database_t *notmuch, if (is_ghost) /* Convert ghost message to a regular message */ _notmuch_message_remove_term (message, "type", "ghost"); - ret = _notmuch_database_link_message (notmuch, message, + } + + ret = _notmuch_database_link_message (notmuch, message, message_file, is_ghost); - if (ret) - goto DONE; + if (ret) + goto DONE; + if (is_new || is_ghost) _notmuch_message_set_header_values (message, date, from, subject); - ret = _notmuch_message_index_file (message, message_file); - if (ret) - goto DONE; - } else { + ret = _notmuch_message_index_file (message, message_file); + if (ret) + goto DONE; + + if (! is_new && !is_ghost) ret = NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID; - } _notmuch_message_sync (message); } catch (const Xapian::Error &error) { _notmuch_database_log (notmuch, "A Xapian exception occurred adding message: %s.\n", error.get_msg().c_str()); - notmuch->exception_reported = TRUE; + notmuch->exception_reported = true; ret = NOTMUCH_STATUS_XAPIAN_EXCEPTION; goto DONE; } @@ -572,3 +576,14 @@ notmuch_database_add_message (notmuch_database_t *notmuch, return ret; } + +notmuch_status_t +notmuch_database_add_message (notmuch_database_t *notmuch, + const char *filename, + notmuch_message_t **message_ret) +{ + return notmuch_database_index_file (notmuch, filename, + NULL, + message_ret); + +}