unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
From: David Bremner <david@tethera.net>
To: notmuch@notmuchmail.org, notmuch@freelists.org
Subject: [Patch v4 02/12] lib/n_d_add_message: refactor test for new/ghost messages
Date: Fri, 21 Jul 2017 07:58:30 -0300	[thread overview]
Message-ID: <20170721105840.4737-3-david@tethera.net> (raw)
In-Reply-To: <20170721105840.4737-1-david@tethera.net>

The switch is easier to understand than the side effects in the if
test. It also potentially allows us more flexibility in breaking up
this function into smaller pieces, since passing private_status around
is icky.
---
 lib/add-message.cc | 23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/lib/add-message.cc b/lib/add-message.cc
index 5fe2c45b..0f09415e 100644
--- a/lib/add-message.cc
+++ b/lib/add-message.cc
@@ -570,7 +570,7 @@ notmuch_database_add_message (notmuch_database_t *notmuch,
     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;
+    notmuch_bool_t is_ghost = FALSE, is_new = FALSE;
 
     const char *date, *header;
     const char *from, *to, *subject;
@@ -655,7 +655,17 @@ notmuch_database_add_message (notmuch_database_t *notmuch,
 
 	talloc_free (message_id);
 
-	if (message == NULL) {
+	/* 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;
+	    break;
+	case NOTMUCH_PRIVATE_STATUS_SUCCESS:
+	    is_ghost = notmuch_message_get_flag (message, NOTMUCH_MESSAGE_FLAG_GHOST);
+	    is_new = FALSE;
+	    break;
+	default:
 	    ret = COERCE_STATUS (private_status,
 				 "Unexpected status value from _notmuch_message_create_for_message_id");
 	    goto DONE;
@@ -663,18 +673,11 @@ notmuch_database_add_message (notmuch_database_t *notmuch,
 
 	_notmuch_message_add_filename (message, filename);
 
-	/* Is this a newly created message object or a ghost
-	 * message?  We have to be slightly careful: if this is a
-	 * blank message, it's not safe to call
-	 * notmuch_message_get_flag yet. */
-	if (private_status == NOTMUCH_PRIVATE_STATUS_NO_DOCUMENT_FOUND ||
-	    (is_ghost = notmuch_message_get_flag (
-		message, NOTMUCH_MESSAGE_FLAG_GHOST))) {
+	if (is_new || is_ghost) {
 	    _notmuch_message_add_term (message, "type", "mail");
 	    if (is_ghost)
 		/* Convert ghost message to a regular message */
 		_notmuch_message_remove_term (message, "type", "ghost");
-
 	    ret = _notmuch_database_link_message (notmuch, message,
 						  message_file, is_ghost);
 	    if (ret)
-- 
2.13.2

  parent reply	other threads:[~2017-07-21 10:59 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-21 10:58 v4 of index multiple files per msg-id, add reindex command David Bremner
2017-07-21 10:58 ` [Patch v4 01/12] lib: isolate n_d_add_message and helper functions into own file David Bremner
2017-07-21 10:58 ` David Bremner [this message]
2017-07-21 10:58 ` [Patch v4 03/12] lib: factor out message-id parsing to separate file David Bremner
2017-07-21 10:58 ` [Patch v4 04/12] lib: refactor notmuch_database_add_message header parsing David Bremner
2017-07-21 10:58 ` [Patch v4 05/12] test: add known broken tests for duplicate message id David Bremner
2017-07-21 10:58 ` [Patch v4 06/12] lib: index message files with duplicate message-ids David Bremner
2017-07-21 10:58 ` [Patch v4 07/12] lib: add notmuch_message_count_files David Bremner
2017-07-21 10:58 ` [Patch v4 08/12] lib: add notmuch_thread_get_total_files David Bremner
2017-07-21 10:58 ` [Patch v4 09/12] cli/search: print total number of files matched in summary output David Bremner
2017-07-21 10:58 ` [Patch v4 10/12] lib: add _notmuch_message_remove_indexed_terms David Bremner
2017-07-21 10:58 ` [Patch v4 11/12] lib: add notmuch_message_reindex David Bremner
2017-07-21 10:58 ` [Patch v4 12/12] add "notmuch reindex" subcommand David Bremner
2017-08-02  2:53 ` v4 of index multiple files per msg-id, add reindex command David Bremner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://notmuchmail.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170721105840.4737-3-david@tethera.net \
    --to=david@tethera.net \
    --cc=notmuch@freelists.org \
    --cc=notmuch@notmuchmail.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).