[notmuch] [PATCH] Prevent data loss caused by SIGINT during notmuch new

Michal Sojka sojkam1 at fel.cvut.cz
Sat Mar 27 21:28:03 PDT 2010


On Sun, 28 Mar 2010, Sebastian Spaeth wrote:
> On Sun, 28 Mar 2010 00:37:00 +0100, "Sebastian Spaeth" <Sebastian at SSpaeth.de> wrote:
> > On Fri, 26 Mar 2010 22:18:13 +0100, Michal Sojka <sojkam1 at fel.cvut.cz> wrote:
> > > When Ctrl-C is pressed in a wrong time during notmuch new, it can lead
> > > to removal of messages from the database even if the files were not
> > > removed.
> 
> CC -O2	notmuch-new.o
> notmuch-new.c: In function 'add_files_recursive':
> notmuch-new.c:519: error: 'add_files_state_t' has no member named 'interrupted'
> make: *** [notmuch-new.o] Error 1
> 
> I have not checked the code yet, but simply applying this patch make the
> compile fail.

Oh, sorry. I thought it is so trivial, that I didn't even compile it for
master. The right version is here:

--8<---------------cut here---------------start------------->8---
>From 117de1fcc316a4792244a36b68e38215ff2a5bdc Mon Sep 17 00:00:00 2001
From: Michal Sojka <sojkam1 at fel.cvut.cz>
Date: Fri, 26 Mar 2010 22:16:26 +0100
Subject: [PATCH v2] Prevent data loss caused by SIGINT during notmuch new

When Ctrl-C is pressed in a wrong time during notmuch new, it can lead
to removal of messages from the database even if the files were not
removed.

It happened at least once to me.

Signed-off-by: Michal Sojka <sojkam1 at fel.cvut.cz>
---
 notmuch-new.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/notmuch-new.c b/notmuch-new.c
index 44b50aa..109bef2 100644
--- a/notmuch-new.c
+++ b/notmuch-new.c
@@ -454,6 +454,9 @@ add_files_recursive (notmuch_database_t *notmuch,
 	next = NULL;
     }
 
+    if (! interrupted)
+	goto DONE;
+    
     /* Now that we've walked the whole filesystem list, anything left
      * over in the database lists has been deleted. */
     while (notmuch_filenames_valid (db_files))
-- 
1.7.0.2


More information about the notmuch mailing list