From ceee152fca2be5cec9dd5873748539ff2642c91b Mon Sep 17 00:00:00 2001
From: Bart Trojanowski <bart@jukie.net>
Date: Sun, 22 Nov 2009 11:19:31 -0500
Subject: [PATCH] fix notmuch-new bug when database path ends with a trailing /

I configured my database.path with a trailing /, and after running notmuch
new every notmuch search would fail with error messages like this:

  Error opening /inbox/cur/1258565257.000211.mbox:2,S: No such file or directory

The actual bug was in the filename normalization for storage in the
database.  The database.path was removed from the full filename, but if
the database.path from the config file contained a trailing /, the
relative file name would retain an extra leading /... which made it look
like an absolute path after it was read out from the DB.

Signed-off-by: Bart Trojanowski <bart@jukie.net>
---
 lib/message.cc | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/lib/message.cc b/lib/message.cc
index 017c47b2..1e325e23 100644
--- a/lib/message.cc
+++ b/lib/message.cc
@@ -411,10 +411,14 @@ _notmuch_message_set_filename (notmuch_message_t *message,
     db_path = notmuch_database_get_path (message->notmuch);
     db_path_len = strlen (db_path);
 
-    if (*s == '/' && strncmp (s, db_path, db_path_len) == 0
-	&& strlen (s) > db_path_len)
+    if (*s == '/' && strlen (s) > db_path_len
+	&& strncmp (s, db_path, db_path_len) == 0)
     {
-	s += db_path_len + 1;
+	s += db_path_len;
+	while (*s == '/') s++;
+
+	if (!*s)
+		INTERNAL_ERROR ("Message filename was same as db prefix.");
     }
 
     message->doc.set_data (s);
-- 
2.45.2