test: rearrange the test corpus into subfolders, fix tests
authorJani Nikula <jani@nikula.org>
Sun, 9 Mar 2014 12:25:37 +0000 (14:25 +0200)
committerDavid Bremner <david@tethera.net>
Tue, 11 Mar 2014 22:50:12 +0000 (19:50 -0300)
We will need this for improved folder search tests, but having some
folders should exercise our code paths better anyway.

Modify the relevant test accordingly to make it pass.

This reorganization triggers a bug in the test suite, namely that it
expects the output of --output=files to be in a certain order. So we
add the fix for that into the same commit.

This mainly involves sorting, although the case --duplicate=$n
requires more subtlety.

57 files changed:
test/T090-search-output.sh
test/corpus/01:2, [new file with mode: 0644]
test/corpus/02:2, [new file with mode: 0644]
test/corpus/bar/17:2, [new file with mode: 0644]
test/corpus/bar/18:2, [new file with mode: 0644]
test/corpus/bar/baz/05:2, [new file with mode: 0644]
test/corpus/bar/baz/23:2, [new file with mode: 0644]
test/corpus/bar/baz/24:2, [new file with mode: 0644]
test/corpus/bar/baz/cur/25:2, [new file with mode: 0644]
test/corpus/bar/baz/cur/26:2, [new file with mode: 0644]
test/corpus/bar/baz/new/27:2, [new file with mode: 0644]
test/corpus/bar/baz/new/28:2, [new file with mode: 0644]
test/corpus/bar/cur/19:2, [new file with mode: 0644]
test/corpus/bar/cur/20:2, [new file with mode: 0644]
test/corpus/bar/new/21:2, [new file with mode: 0644]
test/corpus/bar/new/22:2, [new file with mode: 0644]
test/corpus/cur/01:2, [deleted file]
test/corpus/cur/02:2, [deleted file]
test/corpus/cur/03:2, [deleted file]
test/corpus/cur/04:2, [deleted file]
test/corpus/cur/05:2, [deleted file]
test/corpus/cur/06:2, [deleted file]
test/corpus/cur/07:2, [deleted file]
test/corpus/cur/08:2, [deleted file]
test/corpus/cur/09:2, [deleted file]
test/corpus/cur/10:2, [deleted file]
test/corpus/cur/11:2, [deleted file]
test/corpus/cur/12:2, [deleted file]
test/corpus/cur/13:2, [deleted file]
test/corpus/cur/14:2, [deleted file]
test/corpus/cur/15:2, [deleted file]
test/corpus/cur/16:2, [deleted file]
test/corpus/cur/17:2, [deleted file]
test/corpus/cur/18:2, [deleted file]
test/corpus/cur/19:2, [deleted file]
test/corpus/cur/20:2, [deleted file]
test/corpus/cur/21:2, [deleted file]
test/corpus/cur/22:2, [deleted file]
test/corpus/cur/23:2, [deleted file]
test/corpus/cur/24:2, [deleted file]
test/corpus/cur/25:2, [deleted file]
test/corpus/cur/26:2, [deleted file]
test/corpus/cur/27:2, [deleted file]
test/corpus/cur/28:2, [deleted file]
test/corpus/foo/06:2, [new file with mode: 0644]
test/corpus/foo/baz/11:2, [new file with mode: 0644]
test/corpus/foo/baz/12:2, [new file with mode: 0644]
test/corpus/foo/baz/cur/13:2, [new file with mode: 0644]
test/corpus/foo/baz/cur/14:2, [new file with mode: 0644]
test/corpus/foo/baz/new/15:2, [new file with mode: 0644]
test/corpus/foo/baz/new/16:2, [new file with mode: 0644]
test/corpus/foo/cur/07:2, [new file with mode: 0644]
test/corpus/foo/cur/08:2, [new file with mode: 0644]
test/corpus/foo/new/03:2, [new file with mode: 0644]
test/corpus/foo/new/09:2, [new file with mode: 0644]
test/corpus/foo/new/10:2, [new file with mode: 0644]
test/corpus/new/04:2, [new file with mode: 0644]

index a8ab92058d6b7c3ba30f909ba62a7fb8a9fad9e9..947d572ebeff71418ae282868500f6b50f195f7b 100755 (executable)
@@ -181,67 +181,71 @@ EOF
 test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "--output=files"
-notmuch search --output=files '*' | notmuch_search_files_sanitize >OUTPUT
+notmuch search --output=files '*' | notmuch_search_files_sanitize | sort >OUTPUT
 cat <<EOF >EXPECTED
-MAIL_DIR/cur/52:2,
-MAIL_DIR/cur/53:2,
-MAIL_DIR/cur/50:2,
-MAIL_DIR/cur/49:2,
-MAIL_DIR/cur/48:2,
-MAIL_DIR/cur/47:2,
-MAIL_DIR/cur/46:2,
-MAIL_DIR/cur/45:2,
-MAIL_DIR/cur/44:2,
-MAIL_DIR/cur/43:2,
-MAIL_DIR/cur/42:2,
-MAIL_DIR/cur/41:2,
-MAIL_DIR/cur/40:2,
-MAIL_DIR/cur/39:2,
-MAIL_DIR/cur/38:2,
-MAIL_DIR/cur/37:2,
-MAIL_DIR/cur/36:2,
-MAIL_DIR/cur/35:2,
-MAIL_DIR/cur/34:2,
-MAIL_DIR/cur/33:2,
-MAIL_DIR/cur/32:2,
-MAIL_DIR/cur/31:2,
-MAIL_DIR/cur/30:2,
+MAIL_DIR/01:2,
+MAIL_DIR/02:2,
+MAIL_DIR/bar/17:2,
+MAIL_DIR/bar/18:2,
+MAIL_DIR/bar/baz/05:2,
+MAIL_DIR/bar/baz/23:2,
+MAIL_DIR/bar/baz/24:2,
+MAIL_DIR/bar/baz/cur/25:2,
+MAIL_DIR/bar/baz/cur/26:2,
+MAIL_DIR/bar/baz/new/27:2,
+MAIL_DIR/bar/baz/new/28:2,
+MAIL_DIR/bar/cur/19:2,
+MAIL_DIR/bar/cur/20:2,
+MAIL_DIR/bar/new/21:2,
+MAIL_DIR/bar/new/22:2,
 MAIL_DIR/cur/29:2,
-MAIL_DIR/cur/28:2,
-MAIL_DIR/cur/27:2,
-MAIL_DIR/cur/26:2,
-MAIL_DIR/cur/25:2,
-MAIL_DIR/cur/24:2,
-MAIL_DIR/cur/23:2,
-MAIL_DIR/cur/22:2,
-MAIL_DIR/cur/21:2,
-MAIL_DIR/cur/19:2,
-MAIL_DIR/cur/18:2,
+MAIL_DIR/cur/30:2,
+MAIL_DIR/cur/31:2,
+MAIL_DIR/cur/32:2,
+MAIL_DIR/cur/33:2,
+MAIL_DIR/cur/34:2,
+MAIL_DIR/cur/35:2,
+MAIL_DIR/cur/36:2,
+MAIL_DIR/cur/37:2,
+MAIL_DIR/cur/38:2,
+MAIL_DIR/cur/39:2,
+MAIL_DIR/cur/40:2,
+MAIL_DIR/cur/41:2,
+MAIL_DIR/cur/42:2,
+MAIL_DIR/cur/43:2,
+MAIL_DIR/cur/44:2,
+MAIL_DIR/cur/45:2,
+MAIL_DIR/cur/46:2,
+MAIL_DIR/cur/47:2,
+MAIL_DIR/cur/48:2,
+MAIL_DIR/cur/49:2,
+MAIL_DIR/cur/50:2,
 MAIL_DIR/cur/51:2,
-MAIL_DIR/cur/20:2,
-MAIL_DIR/cur/17:2,
-MAIL_DIR/cur/16:2,
-MAIL_DIR/cur/15:2,
-MAIL_DIR/cur/14:2,
-MAIL_DIR/cur/13:2,
-MAIL_DIR/cur/12:2,
-MAIL_DIR/cur/11:2,
-MAIL_DIR/cur/10:2,
-MAIL_DIR/cur/09:2,
-MAIL_DIR/cur/08:2,
-MAIL_DIR/cur/06:2,
-MAIL_DIR/cur/05:2,
-MAIL_DIR/cur/04:2,
-MAIL_DIR/cur/03:2,
-MAIL_DIR/cur/07:2,
-MAIL_DIR/cur/02:2,
-MAIL_DIR/cur/01:2,
+MAIL_DIR/cur/52:2,
+MAIL_DIR/cur/53:2,
+MAIL_DIR/foo/06:2,
+MAIL_DIR/foo/baz/11:2,
+MAIL_DIR/foo/baz/12:2,
+MAIL_DIR/foo/baz/cur/13:2,
+MAIL_DIR/foo/baz/cur/14:2,
+MAIL_DIR/foo/baz/new/15:2,
+MAIL_DIR/foo/baz/new/16:2,
+MAIL_DIR/foo/cur/07:2,
+MAIL_DIR/foo/cur/08:2,
+MAIL_DIR/foo/new/03:2,
+MAIL_DIR/foo/new/09:2,
+MAIL_DIR/foo/new/10:2,
+MAIL_DIR/new/04:2,
 EOF
 test_expect_equal_file OUTPUT EXPECTED
 
+dup1=$(notmuch search --output=files id:20091117232137.GA7669@griffis1.net | head -n 1 | sed -e "s,$MAIL_DIR,MAIL_DIR,")
+dup2=$(notmuch search --output=files id:20091117232137.GA7669@griffis1.net | tail -n 1 | sed -e "s,$MAIL_DIR,MAIL_DIR,")
+
 test_begin_subtest "--output=files --duplicate=1"
-notmuch search --output=files --duplicate=1 '*' | notmuch_search_files_sanitize >OUTPUT
-cat <<EOF >EXPECTED
+notmuch search --output=files --duplicate=1 '*' | notmuch_search_files_sanitize | sort >OUTPUT
+cat <<EOF | sort >EXPECTED
+$dup1
 MAIL_DIR/cur/52:2,
 MAIL_DIR/cur/53:2,
 MAIL_DIR/cur/50:2,
@@ -266,40 +270,40 @@ MAIL_DIR/cur/32:2,
 MAIL_DIR/cur/31:2,
 MAIL_DIR/cur/30:2,
 MAIL_DIR/cur/29:2,
-MAIL_DIR/cur/28:2,
-MAIL_DIR/cur/27:2,
-MAIL_DIR/cur/26:2,
-MAIL_DIR/cur/25:2,
-MAIL_DIR/cur/24:2,
-MAIL_DIR/cur/23:2,
-MAIL_DIR/cur/22:2,
-MAIL_DIR/cur/21:2,
-MAIL_DIR/cur/19:2,
-MAIL_DIR/cur/18:2,
-MAIL_DIR/cur/20:2,
-MAIL_DIR/cur/17:2,
-MAIL_DIR/cur/16:2,
-MAIL_DIR/cur/15:2,
-MAIL_DIR/cur/14:2,
-MAIL_DIR/cur/13:2,
-MAIL_DIR/cur/12:2,
-MAIL_DIR/cur/11:2,
-MAIL_DIR/cur/10:2,
-MAIL_DIR/cur/09:2,
-MAIL_DIR/cur/08:2,
-MAIL_DIR/cur/06:2,
-MAIL_DIR/cur/05:2,
-MAIL_DIR/cur/04:2,
-MAIL_DIR/cur/03:2,
-MAIL_DIR/cur/07:2,
-MAIL_DIR/cur/02:2,
-MAIL_DIR/cur/01:2,
+MAIL_DIR/bar/baz/new/28:2,
+MAIL_DIR/bar/baz/new/27:2,
+MAIL_DIR/bar/baz/cur/26:2,
+MAIL_DIR/bar/baz/cur/25:2,
+MAIL_DIR/bar/baz/24:2,
+MAIL_DIR/bar/baz/23:2,
+MAIL_DIR/bar/new/22:2,
+MAIL_DIR/bar/new/21:2,
+MAIL_DIR/bar/cur/19:2,
+MAIL_DIR/bar/cur/20:2,
+MAIL_DIR/bar/17:2,
+MAIL_DIR/foo/baz/new/16:2,
+MAIL_DIR/foo/baz/new/15:2,
+MAIL_DIR/foo/baz/cur/14:2,
+MAIL_DIR/foo/baz/cur/13:2,
+MAIL_DIR/foo/baz/12:2,
+MAIL_DIR/foo/baz/11:2,
+MAIL_DIR/foo/new/10:2,
+MAIL_DIR/foo/new/09:2,
+MAIL_DIR/foo/cur/08:2,
+MAIL_DIR/foo/06:2,
+MAIL_DIR/bar/baz/05:2,
+MAIL_DIR/new/04:2,
+MAIL_DIR/foo/new/03:2,
+MAIL_DIR/foo/cur/07:2,
+MAIL_DIR/02:2,
+MAIL_DIR/01:2,
 EOF
 test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "--output=files --format=json"
-notmuch search --format=json --output=files '*' | notmuch_search_files_sanitize >OUTPUT
-cat <<EOF >EXPECTED
+notmuch search --format=json --output=files '*' | notmuch_search_files_sanitize \
+    | test_sort_json >OUTPUT
+cat <<EOF | test_sort_json >EXPECTED
 ["MAIL_DIR/cur/52:2,",
 "MAIL_DIR/cur/53:2,",
 "MAIL_DIR/cur/50:2,",
@@ -324,42 +328,42 @@ cat <<EOF >EXPECTED
 "MAIL_DIR/cur/31:2,",
 "MAIL_DIR/cur/30:2,",
 "MAIL_DIR/cur/29:2,",
-"MAIL_DIR/cur/28:2,",
-"MAIL_DIR/cur/27:2,",
-"MAIL_DIR/cur/26:2,",
-"MAIL_DIR/cur/25:2,",
-"MAIL_DIR/cur/24:2,",
-"MAIL_DIR/cur/23:2,",
-"MAIL_DIR/cur/22:2,",
-"MAIL_DIR/cur/21:2,",
-"MAIL_DIR/cur/19:2,",
-"MAIL_DIR/cur/18:2,",
+"MAIL_DIR/bar/baz/new/28:2,",
+"MAIL_DIR/bar/baz/new/27:2,",
+"MAIL_DIR/bar/baz/cur/26:2,",
+"MAIL_DIR/bar/baz/cur/25:2,",
+"MAIL_DIR/bar/baz/24:2,",
+"MAIL_DIR/bar/baz/23:2,",
+"MAIL_DIR/bar/new/22:2,",
+"MAIL_DIR/bar/new/21:2,",
+"MAIL_DIR/bar/cur/19:2,",
+"MAIL_DIR/bar/18:2,",
 "MAIL_DIR/cur/51:2,",
-"MAIL_DIR/cur/20:2,",
-"MAIL_DIR/cur/17:2,",
-"MAIL_DIR/cur/16:2,",
-"MAIL_DIR/cur/15:2,",
-"MAIL_DIR/cur/14:2,",
-"MAIL_DIR/cur/13:2,",
-"MAIL_DIR/cur/12:2,",
-"MAIL_DIR/cur/11:2,",
-"MAIL_DIR/cur/10:2,",
-"MAIL_DIR/cur/09:2,",
-"MAIL_DIR/cur/08:2,",
-"MAIL_DIR/cur/06:2,",
-"MAIL_DIR/cur/05:2,",
-"MAIL_DIR/cur/04:2,",
-"MAIL_DIR/cur/03:2,",
-"MAIL_DIR/cur/07:2,",
-"MAIL_DIR/cur/02:2,",
-"MAIL_DIR/cur/01:2,"]
+"MAIL_DIR/bar/cur/20:2,",
+"MAIL_DIR/bar/17:2,",
+"MAIL_DIR/foo/baz/new/16:2,",
+"MAIL_DIR/foo/baz/new/15:2,",
+"MAIL_DIR/foo/baz/cur/14:2,",
+"MAIL_DIR/foo/baz/cur/13:2,",
+"MAIL_DIR/foo/baz/12:2,",
+"MAIL_DIR/foo/baz/11:2,",
+"MAIL_DIR/foo/new/10:2,",
+"MAIL_DIR/foo/new/09:2,",
+"MAIL_DIR/foo/cur/08:2,",
+"MAIL_DIR/foo/06:2,",
+"MAIL_DIR/bar/baz/05:2,",
+"MAIL_DIR/new/04:2,",
+"MAIL_DIR/foo/new/03:2,",
+"MAIL_DIR/foo/cur/07:2,",
+"MAIL_DIR/02:2,",
+"MAIL_DIR/01:2,"]
 EOF
 test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "--output=files --format=json --duplicate=2"
 notmuch search --format=json --output=files --duplicate=2 '*' | notmuch_search_files_sanitize >OUTPUT
 cat <<EOF >EXPECTED
-["MAIL_DIR/cur/51:2,"]
+["$dup2"]
 EOF
 test_expect_equal_file OUTPUT EXPECTED
 
diff --git a/test/corpus/01:2, b/test/corpus/01:2,
new file mode 100644 (file)
index 0000000..7e9e349
--- /dev/null
@@ -0,0 +1,34 @@
+From: "Mikhail Gusarov" <dottedmag@dottedmag.net>
+To: notmuch@notmuchmail.org
+Date: Tue, 17 Nov 2009 21:28:37 +0600
+Subject: [notmuch] [PATCH 1/2] Close message file after parsing message
+       headers
+Message-ID: <1258471718-6781-1-git-send-email-dottedmag@dottedmag.net>
+
+Keeping unused files open helps to see "Too many open files" often.
+
+Signed-off-by: Mikhail Gusarov <dottedmag at dottedmag.net>
+---
+ lib/message-file.c |    5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+diff --git a/lib/message-file.c b/lib/message-file.c
+index 8a3f8ee..197ab01 100644
+--- a/lib/message-file.c
++++ b/lib/message-file.c
+@@ -325,6 +325,11 @@ notmuch_message_file_get_header (notmuch_message_file_t *message,
+           return decoded_value;
+     }
++    if (message->parsing_finished) {
++        fclose (message->file);
++        message->file = NULL;
++    }
++
+     if (message->line)
+       free (message->line);
+     message->line = NULL;
+-- 
+1.6.3.3
+
+
diff --git a/test/corpus/02:2, b/test/corpus/02:2,
new file mode 100644 (file)
index 0000000..dadcdaa
--- /dev/null
@@ -0,0 +1,32 @@
+From: "Mikhail Gusarov" <dottedmag@dottedmag.net>
+To: notmuch@notmuchmail.org
+Date: Tue, 17 Nov 2009 21:28:38 +0600
+Subject: [notmuch] [PATCH 2/2] Include <stdint.h> to get uint32_t in C++
+       file with gcc 4.4
+In-Reply-To: <1258471718-6781-1-git-send-email-dottedmag@dottedmag.net>
+References: <1258471718-6781-1-git-send-email-dottedmag@dottedmag.net>
+Message-ID: <1258471718-6781-2-git-send-email-dottedmag@dottedmag.net>
+
+
+Signed-off-by: Mikhail Gusarov <dottedmag at dottedmag.net>
+---
+ lib/message.cc |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/lib/message.cc b/lib/message.cc
+index 72c350f..a4b090b 100644
+--- a/lib/message.cc
++++ b/lib/message.cc
+@@ -21,6 +21,8 @@
+ #include "notmuch-private.h"
+ #include "database-private.h"
++#include <stdint.h>
++
+ #include <gmime/gmime.h>
+ #include <xapian.h>
+-- 
+1.6.3.3
+
+
diff --git a/test/corpus/bar/17:2, b/test/corpus/bar/17:2,
new file mode 100644 (file)
index 0000000..d3b7568
--- /dev/null
@@ -0,0 +1,23 @@
+From: "Israel Herraiz" <isra@herraiz.org>
+To: notmuch@notmuchmail.org
+Date: Tue, 17 Nov 2009 23:57:18 +0100
+Subject: [notmuch] New to the list
+Message-ID: <1258498485-sup-142@elly>
+
+Hi all,
+
+I have subscribed to the list. As suggested by the welcome message, I
+am introducing myself. My name is Israel Herraiz, and I have done a
+couple of contributions to Sup, the probably well-known here e-mail
+client.
+
+"Not much" sounds interesting, and I wonder whether it could be
+integrated with the views of Sup (inbox, threads, etc). So I have
+subscribed to the list to keep an eye on what's going on here.
+
+I have just heard of "Not much". I have not even tried to download the
+code yet.
+
+Cheers,
+Israel
+
diff --git a/test/corpus/bar/18:2, b/test/corpus/bar/18:2,
new file mode 100644 (file)
index 0000000..f522f69
--- /dev/null
@@ -0,0 +1,12 @@
+From: "Aron Griffis" <agriffis@n01se.net>
+To: notmuch@notmuchmail.org
+Date: Tue, 17 Nov 2009 18:21:38 -0500
+Subject: [notmuch] archive
+Message-ID: <20091117232137.GA7669@griffis1.net>
+
+Just subscribed, I'd like to catch up on the previous postings,
+but the archive link seems to be bogus?
+
+Thanks,
+Aron
+
diff --git a/test/corpus/bar/baz/05:2, b/test/corpus/bar/baz/05:2,
new file mode 100644 (file)
index 0000000..75b05fa
--- /dev/null
@@ -0,0 +1,104 @@
+MIME-Version: 1.0
+Date: Tue, 17 Nov 2009 11:36:14 -0800
+Message-ID: <cf0c4d610911171136h1713aa59w9cf9aa31f052ad0a@mail.gmail.com>
+From: Alex Botero-Lowry <alex.boterolowry@gmail.com>
+To: notmuch@notmuchmail.org
+Content-Type: multipart/mixed; boundary=0016e687869333b1570478963d35
+Subject: [notmuch] preliminary FreeBSD support
+X-BeenThere: notmuch@notmuchmail.org
+X-Mailman-Version: 2.1.12
+Precedence: list
+List-Id: "Use and development of the notmuch mail system."
+       <notmuch.notmuchmail.org>
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,
+       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>
+List-Post: <mailto:notmuch@notmuchmail.org>
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,
+       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>
+Sender: notmuch-bounces@notmuchmail.org
+Errors-To: notmuch-bounces@notmuchmail.org
+
+--0016e687869333b1570478963d35
+Content-Type: multipart/alternative; boundary=0016e687869333b14e0478963d33
+
+--0016e687869333b14e0478963d33
+Content-Type: text/plain; charset=ISO-8859-1
+
+I saw the announcement this morning, and was very excited, as I had been
+hoping sup would be turned into a library,
+since I like the concept more than the UI (I'd rather an emacs interface).
+
+I did a preliminary compile which worked out fine, but
+sysconf(_SC_SC_GETPW_R_SIZE_MAX) returns -1 on
+FreeBSD, so notmuch_config_open segfaulted.
+
+Attached is a patch that supplies a default buffer size of 64 in cases where
+-1 is returned.
+
+http://www.opengroup.org/austin/docs/austin_328.txt - seems to indicate this
+is acceptable behavior,
+and http://mail-index.netbsd.org/pkgsrc-bugs/2006/06/07/msg016808.htmlspecifically
+uses 64 as the
+buffer size.
+
+--0016e687869333b14e0478963d33
+Content-Type: text/html; charset=ISO-8859-1
+Content-Transfer-Encoding: quoted-printable
+
+I saw the announcement this morning, and was very excited, as I had been ho=
+ping sup would be turned into a library,<br>since I like the concept more t=
+han the UI (I&#39;d rather an emacs interface).<br><br>I did a preliminary =
+compile which worked out fine, but sysconf(_SC_SC_GETPW_R_SIZE_MAX) returns=
+ -1 on<br>
+FreeBSD, so notmuch_config_open segfaulted.<br><br>Attached is a patch that=
+ supplies a default buffer size of 64 in cases where -1 is returned.<br><br=
+><a href=3D"http://www.opengroup.org/austin/docs/austin_328.txt">http://www=
+.opengroup.org/austin/docs/austin_328.txt</a> - seems to indicate this is a=
+cceptable behavior,<br>
+and <a href=3D"http://mail-index.netbsd.org/pkgsrc-bugs/2006/06/07/msg01680=
+8.html">http://mail-index.netbsd.org/pkgsrc-bugs/2006/06/07/msg016808.html<=
+/a> specifically uses 64 as the<br>buffer size.<br><br><br>
+
+--0016e687869333b14e0478963d33--
+--0016e687869333b1570478963d35
+Content-Type: application/octet-stream; 
+       name="0001-Deal-with-situation-where-sysconf-_SC_GETPW_R_SIZE_M.patch"
+Content-Disposition: attachment; 
+       filename="0001-Deal-with-situation-where-sysconf-_SC_GETPW_R_SIZE_M.patch"
+Content-Transfer-Encoding: base64
+X-Attachment-Id: f_g252e6gs0
+
+RnJvbSBlM2JjNGJiZDdiOWQwZDA4NjgxNmFiNWY4ZjJkNmZmZWExZGQzZWE0IE1vbiBTZXAgMTcg
+MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgQm90ZXJvLUxvd3J5IDxhbGV4LmJvdGVyb2xv
+d3J5QGdtYWlsLmNvbT4KRGF0ZTogVHVlLCAxNyBOb3YgMjAwOSAxMTozMDozOSAtMDgwMApTdWJq
+ZWN0OiBbUEFUQ0hdIERlYWwgd2l0aCBzaXR1YXRpb24gd2hlcmUgc3lzY29uZihfU0NfR0VUUFdf
+Ul9TSVpFX01BWCkgcmV0dXJucyAtMQoKLS0tCiBub3RtdWNoLWNvbmZpZy5jIHwgICAgMiArKwog
+MSBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCgpkaWZmIC0t
+Z2l0IGEvbm90bXVjaC1jb25maWcuYyBiL25vdG11Y2gtY29uZmlnLmMKaW5kZXggMjQ4MTQ5Yy4u
+ZTcyMjBkOCAxMDA2NDQKLS0tIGEvbm90bXVjaC1jb25maWcuYworKysgYi9ub3RtdWNoLWNvbmZp
+Zy5jCkBAIC03Nyw2ICs3Nyw3IEBAIHN0YXRpYyBjaGFyICoKIGdldF9uYW1lX2Zyb21fcGFzc3dk
+X2ZpbGUgKHZvaWQgKmN0eCkKIHsKICAgICBsb25nIHB3X2J1Zl9zaXplID0gc3lzY29uZihfU0Nf
+R0VUUFdfUl9TSVpFX01BWCk7CisgICAgaWYgKHB3X2J1Zl9zaXplID09IC0xKSBwd19idWZfc2l6
+ZSA9IDY0OwogICAgIGNoYXIgKnB3X2J1ZiA9IHRhbGxvY196ZXJvX3NpemUgKGN0eCwgcHdfYnVm
+X3NpemUpOwogICAgIHN0cnVjdCBwYXNzd2QgcGFzc3dkLCAqaWdub3JlZDsKICAgICBjaGFyICpu
+YW1lOwpAQCAtMTAxLDYgKzEwMiw3IEBAIHN0YXRpYyBjaGFyICoKIGdldF91c2VybmFtZV9mcm9t
+X3Bhc3N3ZF9maWxlICh2b2lkICpjdHgpCiB7CiAgICAgbG9uZyBwd19idWZfc2l6ZSA9IHN5c2Nv
+bmYoX1NDX0dFVFBXX1JfU0laRV9NQVgpOworICAgIGlmIChwd19idWZfc2l6ZSA9PSAtMSkgcHdf
+YnVmX3NpemUgPSA2NDsKICAgICBjaGFyICpwd19idWYgPSB0YWxsb2NfemVyb19zaXplIChjdHgs
+IHB3X2J1Zl9zaXplKTsKICAgICBzdHJ1Y3QgcGFzc3dkIHBhc3N3ZCwgKmlnbm9yZWQ7CiAgICAg
+Y2hhciAqbmFtZTsKLS0gCjEuNi41LjIKCg==
+--0016e687869333b1570478963d35
+Content-Type: text/plain; charset="us-ascii"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Content-Disposition: inline
+
+_______________________________________________
+notmuch mailing list
+notmuch@notmuchmail.org
+http://notmuchmail.org/mailman/listinfo/notmuch
+
+--0016e687869333b1570478963d35--
+
diff --git a/test/corpus/bar/baz/23:2, b/test/corpus/bar/baz/23:2,
new file mode 100644 (file)
index 0000000..9bb62d7
--- /dev/null
@@ -0,0 +1,145 @@
+Date: Tue, 17 Nov 2009 19:58:29 -0500
+From: Lars Kellogg-Stedman <lars@seas.harvard.edu>
+To: notmuch <notmuch@notmuchmail.org>
+Message-ID: <20091118005829.GB25380@dottiness.seas.harvard.edu>
+MIME-Version: 1.0
+User-Agent: Mutt/1.5.19 (2009-01-05)
+Subject: [notmuch] "notmuch help" outputs to stderr?
+X-BeenThere: notmuch@notmuchmail.org
+X-Mailman-Version: 2.1.12
+Precedence: list
+List-Id: "Use and development of the notmuch mail system."
+       <notmuch.notmuchmail.org>
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,
+       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>
+List-Post: <mailto:notmuch@notmuchmail.org>
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,
+       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>
+Content-Type: multipart/mixed; boundary="===============1359248349=="
+Sender: notmuch-bounces@notmuchmail.org
+Errors-To: notmuch-bounces@notmuchmail.org
+
+
+--===============1359248349==
+Content-Type: multipart/signed; micalg=pgp-sha256;
+       protocol="application/pgp-signature"; boundary="L6iaP+gRLNZHKoI4"
+Content-Disposition: inline
+
+
+--L6iaP+gRLNZHKoI4
+Content-Type: multipart/mixed; boundary="z6Eq5LdranGa6ru8"
+Content-Disposition: inline
+
+
+--z6Eq5LdranGa6ru8
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: inline
+Content-Transfer-Encoding: quoted-printable
+
+I'm just noticing that 'notmuch help ...' outputs to stderr, which
+isn't terribly intuitive.  For example, the obvious invocation:
+
+  notmuch help | less
+
+=2E..isn't terribly helpful.
+
+I've attached a patch that lets usage() take a FILE * argument so that
+you can output to stderr in response to usage errors, and stdout in
+response to an explicit request.
+
+--=20
+Lars Kellogg-Stedman <lars@seas.harvard.edu>
+Senior Technologist, Computing and Information Technology
+Harvard University School of Engineering and Applied Sciences
+
+
+--z6Eq5LdranGa6ru8
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: attachment; filename="notmuch-help.patch"
+Content-Transfer-Encoding: quoted-printable
+
+diff --git a/notmuch.c b/notmuch.c
+index c47e640..a35cb99 100644
+--- a/notmuch.c
++++ b/notmuch.c
+@@ -157,23 +157,23 @@ command_t commands[] =3D {
+ };
+=20
+ static void
+-usage (void)
++usage (FILE *out)
+ {
+     command_t *command;
+     unsigned int i;
+=20
+-    fprintf (stderr, "Usage: notmuch <command> [args...]\n");
+-    fprintf (stderr, "\n");
+-    fprintf (stderr, "Where <command> and [args...] are as follows:\n");
+-    fprintf (stderr, "\n");
++    fprintf (out, "Usage: notmuch <command> [args...]\n");
++    fprintf (out, "\n");
++    fprintf (out, "Where <command> and [args...] are as follows:\n");
++    fprintf (out, "\n");
+=20
+     for (i =3D 0; i < ARRAY_SIZE (commands); i++) {
+       command =3D &commands[i];
+=20
+-      fprintf (stderr, "\t%s\t%s\n\n", command->name, command->summary);
++      fprintf (out, "\t%s\t%s\n\n", command->name, command->summary);
+     }
+=20
+-    fprintf (stderr, "Use \"notmuch help <command>\" for more details on e=
+ach command.\n\n");
++    fprintf (out, "Use \"notmuch help <command>\" for more details on each=
+ command.\n\n");
+ }
+=20
+ static int
+@@ -183,8 +183,8 @@ notmuch_help_command (unused (void *ctx), int argc, cha=
+r *argv[])
+     unsigned int i;
+=20
+     if (argc =3D=3D 0) {
+-      fprintf (stderr, "The notmuch mail system.\n\n");
+-      usage ();
++      fprintf (stdout, "The notmuch mail system.\n\n");
++      usage (stdout);
+       return 0;
+     }
+=20
+
+--z6Eq5LdranGa6ru8--
+
+--L6iaP+gRLNZHKoI4
+Content-Type: application/pgp-signature
+Content-Disposition: inline
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+
+iQEcBAEBCAAGBQJLA0a1AAoJENdGlQYxQazYr78IAJtqTWIpBqSdOWqTzt/r4XNn
+KJ5mWAoNfq4H+3kx3xoWOFYS7qAYeJoHQWCDbMdb+zEXvPX6hMFn9+OxRN+N5FdQ
+uxGTugSG9xSsK28oGDCQUtr5uheo+tH0jygPjI+LTD97vjUYS4K2qzhLGFJmpLcj
+1akMJXM0gSdPZT8dJyjxvC15pgboLspE4+b6jexXmd4UoFvXgqvjkYHeV4Wk+s0L
+xu+HkCGXL9WHYc3t171fFAru4Zd1AUxFQl4BZ2Y+OqRZUrD28Mtz3zGQxbJQoifl
+JFrgPAWioLN71SkVq/y+efjvGSl0osPpKU5dftMmyY1zV7k7mMlO08ZSJU+wANA=
+=Iijt
+-----END PGP SIGNATURE-----
+
+--L6iaP+gRLNZHKoI4--
+
+--===============1359248349==
+Content-Type: text/plain; charset="us-ascii"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Content-Disposition: inline
+
+_______________________________________________
+notmuch mailing list
+notmuch@notmuchmail.org
+http://notmuchmail.org/mailman/listinfo/notmuch
+
+--===============1359248349==--
+
diff --git a/test/corpus/bar/baz/24:2, b/test/corpus/bar/baz/24:2,
new file mode 100644 (file)
index 0000000..c800020
--- /dev/null
@@ -0,0 +1,204 @@
+Return-path: <notmuch-bounces@notmuchmail.org>
+Envelope-to: cworth@localhost
+Delivery-date: Wed, 18 Nov 2009 01:43:47 -0800
+Received: from yoom.home.cworth.org ([127.0.0.1])
+       by yoom.home.cworth.org with esmtp (Exim 4.69)
+       (envelope-from <notmuch-bounces@notmuchmail.org>)
+       id 1NAgpH-0005Ab-20
+       for cworth@localhost; Wed, 18 Nov 2009 01:27:47 -0800
+X-Original-To: cworth@cworth.org
+Delivered-To: cworth@cworth.org
+Received: from olra.theworths.org [82.165.184.25]
+       by yoom.home.cworth.org with IMAP (fetchmail-6.3.9-rc2)
+       for <cworth@localhost> (single-drop); Wed, 18 Nov 2009 01:27:47 -0800 (PST)
+Received: from localhost (localhost [127.0.0.1])
+       by olra.theworths.org (Postfix) with ESMTP id 12248431FC3
+       for <cworth@cworth.org>; Tue, 17 Nov 2009 17:01:22 -0800 (PST)
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org
+X-Spam-Flag: NO
+X-Spam-Score: -6.17
+X-Spam-Level: 
+X-Spam-Status: No, score=-6.17 tagged_above=-999 required=2 tests=[AWL=0.429,
+       BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4] autolearn=unavailable
+Received: from olra.theworths.org ([127.0.0.1])
+       by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)
+       with ESMTP id TmBdVd1i-Wjb; Tue, 17 Nov 2009 17:01:20 -0800 (PST)
+Received: from olra.theworths.org (localhost [127.0.0.1])
+       by olra.theworths.org (Postfix) with ESMTP id AF876431FBC;
+       Tue, 17 Nov 2009 17:01:20 -0800 (PST)
+X-Original-To: notmuch@notmuchmail.org
+Delivered-To: notmuch@notmuchmail.org
+Received: from localhost (localhost [127.0.0.1])
+       by olra.theworths.org (Postfix) with ESMTP id 75784431FBC
+       for <notmuch@notmuchmail.org>; Tue, 17 Nov 2009 17:01:19 -0800 (PST)
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org
+Received: from olra.theworths.org ([127.0.0.1])
+       by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)
+       with ESMTP id IoYHzHoKBskU for <notmuch@notmuchmail.org>;
+       Tue, 17 Nov 2009 17:01:18 -0800 (PST)
+Received: from smtp-outbound.seas.harvard.edu (smtp-outbound.seas.harvard.edu
+       [140.247.51.171])
+       by olra.theworths.org (Postfix) with ESMTP id 7E033431FAE
+       for <notmuch@notmuchmail.org>; Tue, 17 Nov 2009 17:01:18 -0800 (PST)
+Received: from dottiness.seas.harvard.edu (dottiness.seas.harvard.edu
+       [140.247.52.224])
+       by smtp-outbound.seas.harvard.edu (8.13.8/8.13.8) with SMTP id
+       nAI11Gkj008772
+       for <notmuch@notmuchmail.org>; Tue, 17 Nov 2009 20:01:16 -0500
+Received: by dottiness.seas.harvard.edu (sSMTP sendmail emulation);
+       Tue, 17 Nov 2009 20:01:16 -0500
+Date: Tue, 17 Nov 2009 20:01:16 -0500
+From: Lars Kellogg-Stedman <lars@seas.harvard.edu>
+To: notmuch <notmuch@notmuchmail.org>
+Message-ID: <20091118010116.GC25380@dottiness.seas.harvard.edu>
+References: <20091118005829.GB25380@dottiness.seas.harvard.edu>
+MIME-Version: 1.0
+In-Reply-To: <20091118005829.GB25380@dottiness.seas.harvard.edu>
+User-Agent: Mutt/1.5.19 (2009-01-05)
+Subject: Re: [notmuch] "notmuch help" outputs to stderr?
+X-BeenThere: notmuch@notmuchmail.org
+X-Mailman-Version: 2.1.12
+Precedence: list
+List-Id: "Use and development of the notmuch mail system."
+       <notmuch.notmuchmail.org>
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,
+       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>
+List-Post: <mailto:notmuch@notmuchmail.org>
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,
+       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>
+Content-Type: multipart/mixed; boundary="===============0848253760=="
+Sender: notmuch-bounces@notmuchmail.org
+Errors-To: notmuch-bounces@notmuchmail.org
+
+
+--===============0848253760==
+Content-Type: multipart/signed; micalg=pgp-sha256;
+       protocol="application/pgp-signature"; boundary="ZInfyf7laFu/Kiw7"
+Content-Disposition: inline
+
+
+--ZInfyf7laFu/Kiw7
+Content-Type: multipart/mixed; boundary="KdquIMZPjGJQvRdI"
+Content-Disposition: inline
+
+
+--KdquIMZPjGJQvRdI
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: inline
+Content-Transfer-Encoding: quoted-printable
+
+> I've attached a patch that lets usage() take a FILE * argument so that
+> you can output to stderr in response to usage errors, and stdout in
+> response to an explicit request.
+
+Whoops, missed a couple of stderr's in that last patch.  New one
+attached.
+
+--=20
+Lars Kellogg-Stedman <lars@seas.harvard.edu>
+Senior Technologist, Computing and Information Technology
+Harvard University School of Engineering and Applied Sciences
+
+
+--KdquIMZPjGJQvRdI
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: attachment; filename="notmuch-help.patch"
+Content-Transfer-Encoding: quoted-printable
+
+diff --git a/notmuch.c b/notmuch.c
+index c47e640..446c810 100644
+--- a/notmuch.c
++++ b/notmuch.c
+@@ -157,23 +157,23 @@ command_t commands[] =3D {
+ };
+=20
+ static void
+-usage (void)
++usage (FILE *out)
+ {
+     command_t *command;
+     unsigned int i;
+=20
+-    fprintf (stderr, "Usage: notmuch <command> [args...]\n");
+-    fprintf (stderr, "\n");
+-    fprintf (stderr, "Where <command> and [args...] are as follows:\n");
+-    fprintf (stderr, "\n");
++    fprintf (out, "Usage: notmuch <command> [args...]\n");
++    fprintf (out, "\n");
++    fprintf (out, "Where <command> and [args...] are as follows:\n");
++    fprintf (out, "\n");
+=20
+     for (i =3D 0; i < ARRAY_SIZE (commands); i++) {
+       command =3D &commands[i];
+=20
+-      fprintf (stderr, "\t%s\t%s\n\n", command->name, command->summary);
++      fprintf (out, "\t%s\t%s\n\n", command->name, command->summary);
+     }
+=20
+-    fprintf (stderr, "Use \"notmuch help <command>\" for more details on e=
+ach command.\n\n");
++    fprintf (out, "Use \"notmuch help <command>\" for more details on each=
+ command.\n\n");
+ }
+=20
+ static int
+@@ -183,8 +183,8 @@ notmuch_help_command (unused (void *ctx), int argc, cha=
+r *argv[])
+     unsigned int i;
+=20
+     if (argc =3D=3D 0) {
+-      fprintf (stderr, "The notmuch mail system.\n\n");
+-      usage ();
++      fprintf (stdout, "The notmuch mail system.\n\n");
++      usage (stdout);
+       return 0;
+     }
+=20
+@@ -192,8 +192,8 @@ notmuch_help_command (unused (void *ctx), int argc, cha=
+r *argv[])
+       command =3D &commands[i];
+=20
+       if (strcmp (argv[0], command->name) =3D=3D 0) {
+-          fprintf (stderr, "Help for \"notmuch %s\":\n\n", argv[0]);
+-          fprintf (stderr, "\t%s\t%s\n\n%s\n\n", command->name,
++          fprintf (stdout, "Help for \"notmuch %s\":\n\n", argv[0]);
++          fprintf (stdout, "\t%s\t%s\n\n%s\n\n", command->name,
+                    command->summary, command->documentation);
+           return 0;
+       }
+
+--KdquIMZPjGJQvRdI--
+
+--ZInfyf7laFu/Kiw7
+Content-Type: application/pgp-signature
+Content-Disposition: inline
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+
+iQEcBAEBCAAGBQJLA0dcAAoJENdGlQYxQazY4nIIAIBCds86/uTmnouvyoPruUUR
+Bg5mXcnjuopz1Nwotl9s9U5sGeZuZngxyEvDz1Z1aTEjwab8ndNTf1xCwIoqBs+l
+i/sc4nPYubLdy1Ab/84DKVtCSbj+v5rtqhegwUWV7S1BY7t8dKNPNv7YBg7P0Azs
+6s3CUxDV5eJCcxCGxxWHH8JDKRf7rDs6vzDwyPWLxlg1Xb1lEM/sRgPCKiShPdO3
+Ak2hECusjskALhSDYX8/FLMd9HwLBC13sfWuSi/pHUAIOI2jru2p5sXrVSlTnFIJ
+fiMbPhKWiEaJj2kmm4pRwAhbTWp/J8ZvXWp0AyosxXQhQUWqujiyxgfiXS70SdQ=
+=t3Yc
+-----END PGP SIGNATURE-----
+
+--ZInfyf7laFu/Kiw7--
+
+--===============0848253760==
+Content-Type: text/plain; charset="us-ascii"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Content-Disposition: inline
+
+_______________________________________________
+notmuch mailing list
+notmuch@notmuchmail.org
+http://notmuchmail.org/mailman/listinfo/notmuch
+
+--===============0848253760==--
+
diff --git a/test/corpus/bar/baz/cur/25:2, b/test/corpus/bar/baz/cur/25:2,
new file mode 100644 (file)
index 0000000..7378f82
--- /dev/null
@@ -0,0 +1,32 @@
+From: "Stewart Smith" <stewart@flamingspork.com>
+To: notmuch@notmuchmail.org
+Date: Wed, 18 Nov 2009 12:05:53 +1100
+Subject: [notmuch] [PATCH] Fix linking with gcc to use g++ to link in C++
+       libs.
+Message-ID: <1258506353-20352-1-git-send-email-stewart@flamingspork.com>
+
+Previously, Ubuntu 9.10, gcc 4.4.1 was getting:
+
+ccache gcc `pkg-config --libs glib-2.0 gmime-2.4 talloc` `xapian-config --libs` notmuch.o notmuch-config.o notmuch-dump.o notmuch-new.o notmuch-reply.o notmuch-restore.o notmuch-search.o notmuch-setup.o notmuch-show.o notmuch-tag.o notmuch-time.o gmime-filter-reply.o query-string.o show-message.o lib/notmuch.a -o notmuch
+/usr/bin/ld: lib/notmuch.a(database.o): in function global constructors keyed to BOOLEAN_PREFIX_INTERNAL:database.cc(.text+0x3a): error: undefined reference to 'std::ios_base::Init::Init()'
+---
+ Makefile.local |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/Makefile.local b/Makefile.local
+index f824bed..dbd3e20 100644
+--- a/Makefile.local
++++ b/Makefile.local
+@@ -18,7 +18,7 @@ notmuch_client_srcs =                \
+ notmuch_client_modules = $(notmuch_client_srcs:.c=.o)
+ notmuch: $(notmuch_client_modules) lib/notmuch.a
+-      $(CC) $(LDFLAGS) $^ -o $@
++      $(CXX) $(LDFLAGS) $^ -o $@
+ notmuch.1.gz:
+       gzip --stdout notmuch.1 > notmuch.1.gz
+-- 
+1.6.3.3
+
+
diff --git a/test/corpus/bar/baz/cur/26:2, b/test/corpus/bar/baz/cur/26:2,
new file mode 100644 (file)
index 0000000..f3c5f53
--- /dev/null
@@ -0,0 +1,121 @@
+From: "Stewart Smith" <stewart@flamingspork.com>
+To: notmuch@notmuchmail.org
+Date: Wed, 18 Nov 2009 12:56:40 +1100
+Subject: [notmuch] [PATCH 2/2] Read mail directory in inode number order
+Message-ID: <1258509400-32511-1-git-send-email-stewart@flamingspork.com>
+
+This gives a rather decent reduction in number of seeks required when
+reading a Maildir that isn't in pagecache.
+
+Most filesystems give some locality on disk based on inode numbers.
+In ext[234] this is the inode tables, in XFS groups of sequential inode
+numbers are together on disk and the most significant bits indicate
+allocation group (i.e inode 1,000,000 is always after inode 1,000).
+
+With this patch, we read in the whole directory, sort by inode number
+before stat()ing the contents.
+
+Ideally, directory is sequential and then we make one scan through the
+file system stat()ing.
+
+Since the universe is not ideal, we'll probably seek during reading the
+directory and a fair bit while reading the inodes themselves.
+
+However... with readahead, and stat()ing in inode order, we should be
+in the best place possible to hit the cache.
+
+In a (not very good) benchmark of "how long does it take to find the first
+15,000 messages in my Maildir after 'echo 3 > /proc/sys/vm/drop_caches'",
+this patch consistently cut at least 8 seconds off the scan time.
+
+Without patch: 50 seconds
+With patch: 38-42 seconds.
+
+(I did this in a previous maildir reading project and saw large improvements too)
+---
+ notmuch-new.c |   32 +++++++++++++++-----------------
+ 1 files changed, 15 insertions(+), 17 deletions(-)
+
+diff --git a/notmuch-new.c b/notmuch-new.c
+index 83a05ba..11fad8c 100644
+--- a/notmuch-new.c
++++ b/notmuch-new.c
+@@ -73,6 +73,11 @@ add_files_print_progress (add_files_state_t *state)
+     fflush (stdout);
+ }
++static int ino_cmp(const struct dirent **a, const struct dirent **b)
++{
++  return ((*a)->d_ino < (*b)->d_ino)? -1: 1;
++}
++
+ /* Examine 'path' recursively as follows:
+  *
+  *   o Ask the filesystem for the mtime of 'path' (path_mtime)
+@@ -100,13 +105,12 @@ add_files_recursive (notmuch_database_t *notmuch,
+                    add_files_state_t *state)
+ {
+     DIR *dir = NULL;
+-    struct dirent *e, *entry = NULL;
+-    int entry_length;
+-    int err;
++    struct dirent *entry = NULL;
+     char *next = NULL;
+     time_t path_mtime, path_dbtime;
+     notmuch_status_t status, ret = NOTMUCH_STATUS_SUCCESS;
+     notmuch_message_t *message = NULL;
++    struct dirent **namelist = NULL;
+     /* If we're told to, we bail out on encountering a read-only
+      * directory, (with this being a clear clue from the user to
+@@ -122,31 +126,23 @@ add_files_recursive (notmuch_database_t *notmuch,
+     path_mtime = st->st_mtime;
+     path_dbtime = notmuch_database_get_timestamp (notmuch, path);
++    int n_entries= scandir(path, &namelist, 0, ino_cmp);
+-    dir = opendir (path);
+-    if (dir == NULL) {
++    if (n_entries == -1) {
+       fprintf (stderr, "Error opening directory %s: %s\n",
+                path, strerror (errno));
+       ret = NOTMUCH_STATUS_FILE_ERROR;
+       goto DONE;
+     }
+-    entry_length = offsetof (struct dirent, d_name) +
+-      pathconf (path, _PC_NAME_MAX) + 1;
+-    entry = malloc (entry_length);
++    int i=0;
+     while (!interrupted) {
+-      err = readdir_r (dir, entry, &e);
+-      if (err) {
+-          fprintf (stderr, "Error reading directory: %s\n",
+-                   strerror (errno));
+-          ret = NOTMUCH_STATUS_FILE_ERROR;
+-          goto DONE;
+-      }
+-
+-      if (e == NULL)
++      if (i == n_entries)
+           break;
++        entry= namelist[i++];
++
+       /* If this directory hasn't been modified since the last
+        * add_files, then we only need to look further for
+        * sub-directories. */
+@@ -243,6 +239,8 @@ add_files_recursive (notmuch_database_t *notmuch,
+       free (entry);
+     if (dir)
+       closedir (dir);
++    if (namelist)
++      free (namelist);
+     return ret;
+ }
+-- 
+1.6.3.3
+
+
diff --git a/test/corpus/bar/baz/new/27:2, b/test/corpus/bar/baz/new/27:2,
new file mode 100644 (file)
index 0000000..7f0f045
--- /dev/null
@@ -0,0 +1,21 @@
+From: "Keith Packard" <keithp@keithp.com>
+To: notmuch@notmuchmail.org
+Date: Tue, 17 Nov 2009 17:59:49 -0800
+Subject: [notmuch] New to the list
+In-Reply-To: <1258498485-sup-142@elly>
+References: <1258498485-sup-142@elly>
+Message-ID: <yun3a4cegoa.fsf@aiko.keithp.com>
+
+On Tue, 17 Nov 2009 23:57:18 +0100, Israel Herraiz <isra at herraiz.org> wrote:
+
+> "Not much" sounds interesting, and I wonder whether it could be
+> integrated with the views of Sup (inbox, threads, etc). So I have
+> subscribed to the list to keep an eye on what's going on here.
+
+We've tried to clone much of the sup UI inside emacs, including the
+inbox and threaded message presentation. Of course, we had to "improve"
+it a bit, as much due to the differences between curses and emacs as due
+to personal preferences...
+
+-keith
+
diff --git a/test/corpus/bar/baz/new/28:2, b/test/corpus/bar/baz/new/28:2,
new file mode 100644 (file)
index 0000000..83ce01b
--- /dev/null
@@ -0,0 +1,38 @@
+From: "Keith Packard" <keithp@keithp.com>
+To: notmuch@notmuchmail.org
+Date: Tue, 17 Nov 2009 18:03:17 -0800
+Subject: [notmuch] Introducing myself
+In-Reply-To: <20091118002059.067214ed@hikari>
+References: <20091118002059.067214ed@hikari>
+Message-ID: <yun1vjwegii.fsf@aiko.keithp.com>
+
+On Wed, 18 Nov 2009 00:20:59 +0100, Adrian Perez de Castro <aperez at igalia.com> wrote:
+
+> Some time ago I thought
+> about doing something like Not Much and in fact I played a bit with the
+> Python+Xapian and the Python+Whoosh combinations, because I find relaxing
+> to code things in Python when I am not working and also it is installed
+> by default on most distribution. I got to have some mailboxes indexed and
+> basic searching working a couple of months ago.
+
+Sup certainly started a lot of people thinking...
+
+> Also, I would like to share one idea I had in mind, that you might find
+> interesting: One thing I have found very annoying is having to re-tag my
+> mail when the indexes get b0rked (it happened a couple of times to me while
+> using Sup), so I was planning to mails as read/unread and adding the tags
+> not just to the index, but to the mail text itself, e.g. by adding a
+> "X-Tags" header field or by reusing the "Keywords" one.
+
+Easier than that, notmuch (and sup too), provide a 'dump' command which
+just lists all of the message IDs and their associated tags. Makes
+saving tags easy and doesn't involve rewriting messages. I do this once
+a day just before my computer is backed up to an external drive.
+
+If the index is destroyed, you can reindex the messages and then reapply
+all of the tags with 'notmuch restore'.
+
+--
+keith.packard at intel.com
+
+
diff --git a/test/corpus/bar/cur/19:2, b/test/corpus/bar/cur/19:2,
new file mode 100644 (file)
index 0000000..1b7872b
--- /dev/null
@@ -0,0 +1,360 @@
+From: "Ingmar Vanhassel" <ingmar@exherbo.org>
+To: notmuch@notmuchmail.org
+Date: Wed, 18 Nov 2009 00:23:42 +0100
+Subject: [notmuch] [PATCH] Typsos
+Message-ID: <1258500222-32066-1-git-send-email-ingmar@exherbo.org>
+
+---
+ Makefile                |    4 ++--
+ README                  |    6 +++---
+ gmime-filter-reply.h    |    2 +-
+ lib/database.cc         |    2 +-
+ lib/index.cc            |    2 +-
+ lib/message.cc          |    2 +-
+ lib/messages.c          |    2 +-
+ lib/notmuch-private.h   |    2 +-
+ lib/notmuch.h           |   10 +++++-----
+ lib/sha1.c              |    2 +-
+ lib/thread.cc           |    2 +-
+ notmuch-completion.bash |    2 +-
+ notmuch-new.c           |    4 ++--
+ notmuch-search.c        |    2 +-
+ notmuch.1               |    4 ++--
+ notmuch.el              |   10 +++++-----
+ show-message.c          |    2 +-
+ 17 files changed, 30 insertions(+), 30 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 436dacf..96aaa73 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,4 +1,4 @@
+-# Default FLAGS, (can be overriden by user such as "make CFLAGS=-O2")
++# Default FLAGS, (can be overridden by user such as "make CFLAGS=-O2")
+ WARN_FLAGS=-Wall -Wextra -Wmissing-declarations -Wwrite-strings -Wswitch-enum
+ CFLAGS=-O2
+@@ -14,7 +14,7 @@ override CXXFLAGS += $(WARN_FLAGS) $(extra_cflags) $(extra_cxxflags)
+ override LDFLAGS += `pkg-config --libs glib-2.0 gmime-2.4 talloc` \
+                       `xapian-config --libs`
+-# Include our local Makfile.local first so that its first target is default
++# Include our local Makefile.local first so that its first target is default
+ include Makefile.local
+ include lib/Makefile.local
+diff --git a/README b/README
+index 40f05ab..27af77f 100644
+--- a/README
++++ b/README
+@@ -3,7 +3,7 @@ Notmuch - thread-based email index, search and tagging.
+ Notmuch is a system for indexing, searching, reading, and tagging
+ large collections of email messages. It uses the Xapian library to
+ provide fast, full-text search of very large collection of email with
+-a very convenient search syntas.
++a very convenient search syntax.
+ Notmuch is free software, released under the GNU General Public
+ License version 3 (or later).
+@@ -45,7 +45,7 @@ obtaining a more sophisticated interface:
+       notmuch.el file in this distribution.
+       If someone were to write a curses-based interface, or similar,
+-      it might also be reasonable to buil on the "notmuch"
++      it might also be reasonable to build on the "notmuch"
+       command-line interface.
+      2. Build on top of the notmuch library interface.
+@@ -67,4 +67,4 @@ still in development. We would appreciate any contributions to these
+ efforts.
+-      
+\ No newline at end of file
++      
+diff --git a/gmime-filter-reply.h b/gmime-filter-reply.h
+index 41cbc13..b7cbc6b 100644
+--- a/gmime-filter-reply.h
++++ b/gmime-filter-reply.h
+@@ -40,7 +40,7 @@ typedef struct _GMimeFilterReplyClass GMimeFilterReplyClass;
+  * @saw_nl: previous char was a \n
+  * @saw_angle: previous char was a >
+  *
+- * A filter to insert/remove reply markers (lines begining with >)
++ * A filter to insert/remove reply markers (lines beginning with >)
+  **/
+ struct _GMimeFilterReply {
+       GMimeFilter parent_object;
+diff --git a/lib/database.cc b/lib/database.cc
+index 3c8d626..27597cf 100644
+--- a/lib/database.cc
++++ b/lib/database.cc
+@@ -180,7 +180,7 @@ notmuch_status_to_string (notmuch_status_t status)
+     case NOTMUCH_STATUS_TAG_TOO_LONG:
+       return "Tag value is too long (exceeds NOTMUCH_TAG_MAX)";
+     case NOTMUCH_STATUS_UNBALANCED_FREEZE_THAW:
+-      return "Unblanced number of calls to notmuch_message_freeze/thaw";
++      return "Unbalanced number of calls to notmuch_message_freeze/thaw";
+     default:
+     case NOTMUCH_STATUS_LAST_STATUS:
+       return "Unknown error status value";
+diff --git a/lib/index.cc b/lib/index.cc
+index 65b83b3..80df64b 100644
+--- a/lib/index.cc
++++ b/lib/index.cc
+@@ -198,7 +198,7 @@ _index_mime_part (notmuch_message_t *message,
+               if (i == 1)
+                   continue;
+               if (i > 1)
+-                  fprintf (stderr, "Warning: Unexpected extra parts of mutlipart/signed. Indexing anyway.\n");
++                  fprintf (stderr, "Warning: Unexpected extra parts of multipart/signed. Indexing anyway.\n");
+           }
+           _index_mime_part (message,
+                             g_mime_multipart_get_part (multipart, i));
+diff --git a/lib/message.cc b/lib/message.cc
+index a4b090b..1d6623f 100644
+--- a/lib/message.cc
++++ b/lib/message.cc
+@@ -144,7 +144,7 @@ _notmuch_message_create (const void *talloc_owner,
+ }
+ /* Create a new notmuch_message_t object for a specific message ID,
+- * (which may or may not already exist in the databas).
++ * (which may or may not already exist in the database).
+  *
+  * Here, 'talloc owner' is an optional talloc context to which the new
+  * message will belong. This allows for the caller to not bother
+diff --git a/lib/messages.c b/lib/messages.c
+index a588f8f..2f7c283 100644
+--- a/lib/messages.c
++++ b/lib/messages.c
+@@ -47,7 +47,7 @@ _notmuch_message_list_create (const void *ctx)
+     return list;
+ }
+-/* Append 'node' (which can of course point to an aribtrarily long
++/* Append 'node' (which can of course point to an arbitrarily long
+  * list of nodes) to the end of 'list'.
+  */
+ void
+diff --git a/lib/notmuch-private.h b/lib/notmuch-private.h
+index 6036ce4..af82e58 100644
+--- a/lib/notmuch-private.h
++++ b/lib/notmuch-private.h
+@@ -235,7 +235,7 @@ notmuch_message_file_open (const char *filename);
+ notmuch_message_file_t *
+ _notmuch_message_file_open_ctx (void *ctx, const char *filename);
+-/* Close a notmuch message preivously opened with notmuch_message_open. */
++/* Close a notmuch message previously opened with notmuch_message_open. */
+ void
+ notmuch_message_file_close (notmuch_message_file_t *message);
+diff --git a/lib/notmuch.h b/lib/notmuch.h
+index 32b5332..384c177 100644
+--- a/lib/notmuch.h
++++ b/lib/notmuch.h
+@@ -222,7 +222,7 @@ notmuch_database_get_timestamp (notmuch_database_t *database,
+ /* Add a new message to the given notmuch database.
+  *
+- * Here,'filename' should be a path relative to the the path of
++ * Here,'filename' should be a path relative to the path of
+  * 'database' (see notmuch_database_get_path), or else should be an
+  * absolute filename with initial components that match the path of
+  * 'database'.
+@@ -258,7 +258,7 @@ notmuch_database_add_message (notmuch_database_t *database,
+                             const char *filename,
+                             notmuch_message_t **message);
+-/* Find a message with the given messsage_id.
++/* Find a message with the given message_id.
+  *
+  * If the database contains a message with the given message_id, then
+  * a new notmuch_message_t object is returned. The caller should call
+@@ -620,7 +620,7 @@ notmuch_messages_advance (notmuch_messages_t *messages);
+ /* Destroy a notmuch_messages_t object.
+  *
+  * It's not strictly necessary to call this function. All memory from
+- * the notmuch_messages_t object will be reclaimed when the containg
++ * the notmuch_messages_t object will be reclaimed when the containing
+  * query object is destroyed.
+  */
+ void
+@@ -865,7 +865,7 @@ notmuch_tags_has_more (notmuch_tags_t *tags);
+ /* Get the current tag from 'tags' as a string.
+  *
+  * Note: The returned string belongs to 'tags' and has a lifetime
+- * identical to it (and the query to which it utlimately belongs).
++ * identical to it (and the query to which it ultimately belongs).
+  *
+  * See the documentation of notmuch_message_get_tags for example code
+  * showing how to iterate over a notmuch_tags_t object.
+@@ -884,7 +884,7 @@ notmuch_tags_advance (notmuch_tags_t *tags);
+ /* Destroy a notmuch_tags_t object.
+  *
+  * It's not strictly necessary to call this function. All memory from
+- * the notmuch_tags_t object will be reclaimed when the containg
++ * the notmuch_tags_t object will be reclaimed when the containing
+  * message or query objects are destroyed.
+  */
+ void
+diff --git a/lib/sha1.c b/lib/sha1.c
+index ff4dd16..cc48108 100644
+--- a/lib/sha1.c
++++ b/lib/sha1.c
+@@ -43,7 +43,7 @@ _hex_of_sha1_digest (const unsigned char digest[SHA1_DIGEST_SIZE])
+     return result;
+ }
+-/* Create a hexadcimal string version of the SHA-1 digest of 'str'
++/* Create a hexadecimal string version of the SHA-1 digest of 'str'
+  * (including its null terminating character).
+  *
+  * This function returns a newly allocated string which the caller
+diff --git a/lib/thread.cc b/lib/thread.cc
+index 4411d64..da58edc 100644
+--- a/lib/thread.cc
++++ b/lib/thread.cc
+@@ -190,7 +190,7 @@ _resolve_thread_relationships (unused (notmuch_thread_t *thread))
+  * subject line, the total count of messages, and all authors). The
+  * second search is for all messages that are in the thread and that
+  * also match the given query_string. This is to allow for a separate
+- * count of matched messages, and to allow a viewer to diplay these
++ * count of matched messages, and to allow a viewer to display these
+  * messages differently.
+  *
+  * Here, 'ctx' is talloc context for the resulting thread object.
+diff --git a/notmuch-completion.bash b/notmuch-completion.bash
+index ad55f6d..cdad05d 100644
+--- a/notmuch-completion.bash
++++ b/notmuch-completion.bash
+@@ -1,4 +1,4 @@
+-# Bash completion for notmutch
++# Bash completion for notmuch
+ #
+ # Copyright ?? 2009 Carl Worth
+ #
+diff --git a/notmuch-new.c b/notmuch-new.c
+index 83a05ba..5405a9f 100644
+--- a/notmuch-new.c
++++ b/notmuch-new.c
+@@ -303,7 +303,7 @@ add_files (notmuch_database_t *notmuch,
+ /* XXX: This should be merged with the add_files function since it
+  * shares a lot of logic with it. */
+-/* Recursively count all regular files in path and all sub-direcotries
++/* Recursively count all regular files in path and all sub-directories
+  * of path.  The result is added to *count (which should be
+  * initialized to zero by the top-level caller before calling
+  * count_files). */
+@@ -469,7 +469,7 @@ notmuch_new_command (void *ctx,
+     if (elapsed > 1 && ! add_files_state.saw_read_only_directory) {
+       printf ("\nTip: If you have any sub-directories that are archives (that is,\n"
+-              "they will never receive new mail), marking these directores as\n"
++              "they will never receive new mail), marking these directories as\n"
+               "read-only (chmod u-w /path/to/dir) will make \"notmuch new\"\n"
+               "much more efficient (it won't even look in those directories).\n");
+     }
+diff --git a/notmuch-search.c b/notmuch-search.c
+index 8db09c7..ac81372 100644
+--- a/notmuch-search.c
++++ b/notmuch-search.c
+@@ -76,7 +76,7 @@ notmuch_search_command (void *ctx, int argc, char *argv[])
+     query_str = query_string_from_args (ctx, argc, argv);
+     if (query_str == NULL) {
+-      fprintf (stderr, "Out of moemory.\n");
++      fprintf (stderr, "Out of memory.\n");
+       return 1;
+     }
+diff --git a/notmuch.1 b/notmuch.1
+index 6c3d10f..86d5f59 100644
+--- a/notmuch.1
++++ b/notmuch.1
+@@ -60,7 +60,7 @@ archives, and will then proceed to build a database that indexes the
+ mail to allow for fast search of the archive.
+ This directory can contain any number of sub-directories and should
+-primarily contain only files with indvidual email messages
++primarily contain only files with individual email messages
+ (eg. maildir or mh archives are perfect). If there are other,
+ non-email files (such as indexes maintained by other email programs)
+ then notmuch will do its best to detect those and ignore them.
+@@ -173,7 +173,7 @@ Constructs a reply template for a set of messages.
+ See the documentation of
+ .B search
+-for deatils of the supported syntax of search terms.
++for details of the supported syntax of search terms.
+ To make replying to email easier,
+ .B notmuch reply
+diff --git a/notmuch.el b/notmuch.el
+index 8894a8e..7e01ed6 100644
+--- a/notmuch.el
++++ b/notmuch.el
+@@ -205,7 +205,7 @@ Unlike builtin `next-line' this version accepts no arguments."
+ (defun notmuch-show-mark-read-then-archive-thread ()
+   "Remove \"unread\" tag from each message, then archive and show next thread.
+-Archive each message currrently shown by removing the \"unread\"
++Archive each message currently shown by removing the \"unread\"
+ and \"inbox\" tag from each. Then kill this buffer and show the
+ next thread from the search from which this thread was originally
+ shown.
+@@ -220,7 +220,7 @@ buffer."
+ (defun notmuch-show-archive-thread ()
+   "Archive each message in thread, and show next thread from search.
+-Archive each message currrently shown by removing the \"inbox\"
++Archive each message currently shown by removing the \"inbox\"
+ tag from each. Then kill this buffer and show the next thread
+ from the search from which this thread was originally shown.
+@@ -340,7 +340,7 @@ there are no more unread messages past the current point."
+       (notmuch-show-next-message)))
+ (defun notmuch-show-next-open-message ()
+-  "Advance to the the next message which is not hidden.
++  "Advance to the next message which is not hidden.
+ If read messages are currently hidden, advance to the next unread
+ message. Otherwise, advance to the next message."
+@@ -674,7 +674,7 @@ thread from that buffer can be show when done with this one)."
+       )))
+ (defvar notmuch-search-authors-width 40
+-  "Number of columns to use to diplay authors in a notmuch-search buffer.")
++  "Number of columns to use to display authors in a notmuch-search buffer.")
+ (defvar notmuch-search-mode-map
+   (let ((map (make-sparse-keymap)))
+@@ -910,7 +910,7 @@ the beginning of the buffer).
+ This command toggles the sort order for the current search.
+-Note that any fitlered searches created by
++Note that any filtered searches created by
+ `notmuch-search-filter' retain the search order of the parent
+ search."
+   (interactive)
+diff --git a/show-message.c b/show-message.c
+index 79b02e2..38f5897 100644
+--- a/show-message.c
++++ b/show-message.c
+@@ -38,7 +38,7 @@ show_message_part (GMimeObject *part, int *part_count,
+               if (i == 1)
+                   continue;
+               if (i > 1)
+-                  fprintf (stderr, "Warning: Unexpected extra parts of mutlipart/signed. Continuing.\n");
++                  fprintf (stderr, "Warning: Unexpected extra parts of multipart/signed. Continuing.\n");
+           }
+           show_message_part (g_mime_multipart_get_part (multipart, i),
+                              part_count, show_part);
+-- 
+1.6.5.2.433.g23cdb
+
+
diff --git a/test/corpus/bar/cur/20:2, b/test/corpus/bar/cur/20:2,
new file mode 100644 (file)
index 0000000..f08a314
--- /dev/null
@@ -0,0 +1,101 @@
+Date: Wed, 18 Nov 2009 00:20:59 +0100
+From: Adrian Perez de Castro <aperez@igalia.com>
+To: notmuch@notmuchmail.org
+Message-ID: <20091118002059.067214ed@hikari>
+Organization: Igalia
+X-Mailer: Claws Mail 3.7.3 (GTK+ 2.18.3; x86_64-redhat-linux-gnu)
+Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAAXNSR0IArs4c6QAAADBQTFRFBwcHFhYWKCgoNzc3SEhIV1dXaGhod3d3iIiIlpaWqKiouLi4x8fH2NjY5+fn/v7+rSjDkgAAAjVJREFUOE9l07tvE0EQwOHfrkV9O+eko7g701BBfECJsIigT2IpooIqaSiRUEB0REj00FBQgYSCkhry+gecUPJybJeIxLumTbilsH2PMNXufDOa3ZVW+1JkpbUmD/8+vXR3c7or4Gz93mH309Kz8/C9/RQge7VfhW/LW+PF8IkrQ7Z6OKmQr1tl+LU/yWP9mxJka9O88fZHPwf/7u0kLyCnX3I4fQhgjAgIfi+HHw5A1Y2ggIMcFKAEnRoL0M3BosI4TI2IATjuT8DvSNJoNNJgkIhxlr9TUHeSpDnfohlIrMBlU+BGmsZqfr69FMfGMw4NoG835+J62riWyjQ/uXlTQjNUIoYegMsBM0pCD8oDas7n4HQsBghXFxJTW42KDs+4XLfjsN0wOYgABqARjMKIHIaAQnmHjsI5Cvi9Cf6k03OoWBkpIP3Q7354+dEimFBKHbMP9oKjwfd9gbrxR5KDToczK4uPF8UgNomKU2GaENRi77zyDKICxKBS4xXYbONPMQMdYZTBwMiMWiUg9g6UJ3OBogzjV8E7sBVwyvfAOYdQhsABzuOxI1MGZbs98Q6Md5UOfbbR2R0eWOesrnRw5ajT6f60LrNhWIHZpBnUWv2s14ukArWWTqTes3YQxRXgFkcMu70TPYqqUBs0YwmO967OVIdTG4bY4a7WLaqgLm5vbHdH5np0Dri//fmg7y8scB4u3+zsuNlH0X+g19bby69b+TYH6isvns8VdQWgxj9tHP8AR5/hSdYqkwsAAAAASUVORK5CYII=
+Mime-Version: 1.0
+Subject: [notmuch] Introducing myself
+X-BeenThere: notmuch@notmuchmail.org
+X-Mailman-Version: 2.1.12
+Precedence: list
+List-Id: "Use and development of the notmuch mail system."
+       <notmuch.notmuchmail.org>
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,
+       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>
+List-Post: <mailto:notmuch@notmuchmail.org>
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,
+       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>
+Content-Type: multipart/mixed; boundary="===============1167731900=="
+Sender: notmuch-bounces@notmuchmail.org
+Errors-To: notmuch-bounces@notmuchmail.org
+
+--===============1167731900==
+Content-Type: multipart/signed; micalg=PGP-SHA1;
+ boundary="Sig_/ayZz9m37AOMROJCyUudvXvZ"; protocol="application/pgp-signature"
+
+--Sig_/ayZz9m37AOMROJCyUudvXvZ
+Content-Type: text/plain; charset=US-ASCII
+Content-Transfer-Encoding: quoted-printable
+
+
+Hello to all,
+
+I have just heard about Not Much today in some random Linux-related news
+site (LWN?), my name is Adrian Perez and I work as systems administrator
+(although I can do some code as well :P). I have always thought that the
+ideas behind Sup were great, but after some time using it, I got tired of
+the oddities that it has. I also do not like doing things like having to
+install Ruby just for reading and sorting mails. Some time ago I thought
+about doing something like Not Much and in fact I played a bit with the
+Python+Xapian and the Python+Whoosh combinations, because I find relaxing
+to code things in Python when I am not working and also it is installed
+by default on most distribution. I got to have some mailboxes indexed and
+basic searching working a couple of months ago. Lately I have been very
+busy and had no time for coding, and them... boom! Not Much appears -- and
+it is almost exactly what I was trying to do, but faster. I have been
+playing a bit with Not Much today, and I think it has potential.
+
+Also, I would like to share one idea I had in mind, that you might find
+interesting: One thing I have found very annoying is having to re-tag my
+mail when the indexes get b0rked (it happened a couple of times to me while
+using Sup), so I was planning to mails as read/unread and adding the tags
+not just to the index, but to the mail text itself, e.g. by adding a
+"X-Tags" header field or by reusing the "Keywords" one. This way, the index
+could be totally recreated by re-reading the mail directories, and this
+would also allow to a tools like OfflineIMAP [1] to get the mails into a
+local maildir, tagging and indexing the mails with the e-mail reader and
+then syncing back the messages with the "X-Tags" header to the IMAP server.
+This would allow to use the mail reader from a different computer and still
+have everything tagged finely.
+
+Best regards,
+
+
+---
+[1] http://software.complete.org/software/projects/show/offlineimap
+
+--=20
+Adrian Perez de Castro <aperez@igalia.com>
+Igalia - Free Software Engineering
+
+--Sig_/ayZz9m37AOMROJCyUudvXvZ
+Content-Type: application/pgp-signature; name=signature.asc
+Content-Disposition: attachment; filename=signature.asc
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2.0.13 (GNU/Linux)
+
+iEYEARECAAYFAksDL+AACgkQkcVZ2+TJEjtsuQCfXmilW8WpMQHCnwwJjRE1PWZy
+oFAAn3MmXC5sW7MvCFjs7ks6U16zgMEg
+=eL9p
+-----END PGP SIGNATURE-----
+
+--Sig_/ayZz9m37AOMROJCyUudvXvZ--
+
+--===============1167731900==
+Content-Type: text/plain; charset="us-ascii"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Content-Disposition: inline
+
+_______________________________________________
+notmuch mailing list
+notmuch@notmuchmail.org
+http://notmuchmail.org/mailman/listinfo/notmuch
+
+--===============1167731900==--
+
diff --git a/test/corpus/bar/new/21:2, b/test/corpus/bar/new/21:2,
new file mode 100644 (file)
index 0000000..7ff55cc
--- /dev/null
@@ -0,0 +1,102 @@
+MIME-Version: 1.0
+Date: Tue, 17 Nov 2009 16:23:53 -0800
+Message-ID: <cf0c4d610911171623q3e27a0adx802e47039b57604b@mail.gmail.com>
+From: Alex Botero-Lowry <alex.boterolowry@gmail.com>
+To: notmuch@notmuchmail.org
+Content-Type: multipart/mixed; boundary=0016e64ca4d8f27a4804789a4139
+Subject: [notmuch] [PATCH] Error out if no query is supplied to search
+       instead of going into an infinite loop
+X-BeenThere: notmuch@notmuchmail.org
+X-Mailman-Version: 2.1.12
+Precedence: list
+List-Id: "Use and development of the notmuch mail system."
+       <notmuch.notmuchmail.org>
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,
+       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>
+List-Post: <mailto:notmuch@notmuchmail.org>
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,
+       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>
+Sender: notmuch-bounces@notmuchmail.org
+Errors-To: notmuch-bounces@notmuchmail.org
+
+--0016e64ca4d8f27a4804789a4139
+Content-Type: multipart/alternative; boundary=0016e64ca4d8f27a3604789a4137
+
+--0016e64ca4d8f27a3604789a4137
+Content-Type: text/plain; charset=ISO-8859-1
+
+In this case error out when no query is supplied. There seems to be an
+infinite-loop casued by i think notmuch_query_search_threads having
+an exception:
+
+A Xapian exception occurred: Syntax: <expression> AND <expression>
+A Xapian exception occurred: Syntax: <expression> AND <expression>
+A Xapian exception occurred: Syntax: <expression> AND <expression>
+A Xapian exception occurred: Syntax: <expression> AND <expression>
+A Xapian exception occurred: Syntax: <expression> AND <expression>
+A Xapian exception occurred: Syntax: <expression> AND <expression>
+A Xapian exception occurred: Syntax: <expression> AND <expression>
+A Xapian exception occurred: Syntax: <expression> AND <expression>
+A Xapian exception occurred: Syntax: <expression> AND <expression>
+A Xapian exception occurred: Syntax: <expression> AND <expression>
+A Xapian exception occurred: Syntax: <expression> AND <expression>
+A Xapian exception occurred: Syntax: <expression> AND <expression>
+A Xapian exception occurred: Syntax: <expression> AND <expression>
+A Xapian exception occurred: Syntax: <expression> AND <expression>
+A Xapian exception occurred: Syntax: <expression> AND <expression>
+
+I'll look into that bug specifically a bit later.
+
+It might be better to do a usage instead of just throwing an error here?
+
+alex
+
+--0016e64ca4d8f27a3604789a4137
+Content-Type: text/html; charset=ISO-8859-1
+
+In this case error out when no query is supplied. There seems to be an infinite-loop casued by i think notmuch_query_search_threads having<br>an exception:<br><br>A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>
+A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>
+A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>
+A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>
+A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>
+A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br><br>I&#39;ll look into that bug specifically a bit later.<br>
+<br>It might be better to do a usage instead of just throwing an error here?<br><br>alex<br>
+
+--0016e64ca4d8f27a3604789a4137--
+--0016e64ca4d8f27a4804789a4139
+Content-Type: application/octet-stream; 
+       name="0001-Error-out-if-no-query-is-supplied-to-search-instead-.patch"
+Content-Disposition: attachment; 
+       filename="0001-Error-out-if-no-query-is-supplied-to-search-instead-.patch"
+Content-Transfer-Encoding: base64
+X-Attachment-Id: f_g25cms190
+
+RnJvbSAzZjk0MzFmNzRhNWZmNjZjODRjODY5YTNlMjZjMmJhZDQyYmVkMWIxIE1vbiBTZXAgMTcg
+MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgQm90ZXJvLUxvd3J5IDxhbGV4LmJvdGVyb2xv
+d3J5QGdtYWlsLmNvbT4KRGF0ZTogVHVlLCAxNyBOb3YgMjAwOSAxNjoyMDoyOCAtMDgwMApTdWJq
+ZWN0OiBbUEFUQ0hdIEVycm9yIG91dCBpZiBubyBxdWVyeSBpcyBzdXBwbGllZCB0byBzZWFyY2gg
+aW5zdGVhZCBvZiBnb2luZyBpbnRvIGFuIGluZmluaXRlIGxvb3AKCi0tLQogbm90bXVjaC1zZWFy
+Y2guYyB8ICAgIDUgKysrKysKIDEgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAwIGRl
+bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL25vdG11Y2gtc2VhcmNoLmMgYi9ub3RtdWNoLXNlYXJj
+aC5jCmluZGV4IDhkYjA5YzcuLmQ5NGZjY2QgMTAwNjQ0Ci0tLSBhL25vdG11Y2gtc2VhcmNoLmMK
+KysrIGIvbm90bXVjaC1zZWFyY2guYwpAQCAtNjYsNiArNjYsMTEgQEAgbm90bXVjaF9zZWFyY2hf
+Y29tbWFuZCAodm9pZCAqY3R4LCBpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgIGFyZ2MgLT0g
+aTsKICAgICBhcmd2ICs9IGk7CiAKKyAgICBpZiAoYXJnYyA9PSAwKSB7CisgICAgICAgIGZwcmlu
+dGYgKHN0ZGVyciwgIk5vIHF1ZXJ5IHByb3ZpZGVkXG4iKTsKKyAgICAgICAgcmV0dXJuIDE7Cisg
+ICAgfQorCiAgICAgY29uZmlnID0gbm90bXVjaF9jb25maWdfb3BlbiAoY3R4LCBOVUxMLCBOVUxM
+KTsKICAgICBpZiAoY29uZmlnID09IE5VTEwpCiAJcmV0dXJuIDE7Ci0tIAoxLjYuNS4yCgo=
+--0016e64ca4d8f27a4804789a4139
+Content-Type: text/plain; charset="us-ascii"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Content-Disposition: inline
+
+_______________________________________________
+notmuch mailing list
+notmuch@notmuchmail.org
+http://notmuchmail.org/mailman/listinfo/notmuch
+
+--0016e64ca4d8f27a4804789a4139--
+
diff --git a/test/corpus/bar/new/22:2, b/test/corpus/bar/new/22:2,
new file mode 100644 (file)
index 0000000..08adada
--- /dev/null
@@ -0,0 +1,84 @@
+Date: Tue, 17 Nov 2009 19:50:40 -0500
+From: Lars Kellogg-Stedman <lars@seas.harvard.edu>
+To: Keith Packard <keithp@keithp.com>
+Message-ID: <20091118005040.GA25380@dottiness.seas.harvard.edu>
+References: <20091117190054.GU3165@dottiness.seas.harvard.edu>
+       <87iqd9rn3l.fsf@vertex.dottedmag>
+       <20091117203301.GV3165@dottiness.seas.harvard.edu>
+       <yunaayketfm.fsf@aiko.keithp.com>
+MIME-Version: 1.0
+In-Reply-To: <yunaayketfm.fsf@aiko.keithp.com>
+User-Agent: Mutt/1.5.19 (2009-01-05)
+Cc: notmuch@notmuchmail.org
+Subject: Re: [notmuch] Working with Maildir storage?
+X-BeenThere: notmuch@notmuchmail.org
+X-Mailman-Version: 2.1.12
+Precedence: list
+List-Id: "Use and development of the notmuch mail system."
+       <notmuch.notmuchmail.org>
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,
+       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>
+List-Post: <mailto:notmuch@notmuchmail.org>
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,
+       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>
+Content-Type: multipart/mixed; boundary="===============1483126515=="
+Sender: notmuch-bounces@notmuchmail.org
+Errors-To: notmuch-bounces@notmuchmail.org
+
+
+--===============1483126515==
+Content-Type: multipart/signed; micalg=pgp-sha256;
+       protocol="application/pgp-signature"; boundary="9amGYk9869ThD9tj"
+Content-Disposition: inline
+
+
+--9amGYk9869ThD9tj
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: inline
+Content-Transfer-Encoding: quoted-printable
+
+> I've also pushed a slightly more complicated (and complete) fix to my
+> private notmuch repository
+
+The version of lib/messages.cc in your repo doesn't build because it's
+missing "#include <stdint.h>" (for the uint32_t on line 466).
+
+--=20
+Lars Kellogg-Stedman <lars@seas.harvard.edu>
+Senior Technologist, Computing and Information Technology
+Harvard University School of Engineering and Applied Sciences
+
+
+--9amGYk9869ThD9tj
+Content-Type: application/pgp-signature
+Content-Disposition: inline
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+
+iQEcBAEBCAAGBQJLA0TgAAoJENdGlQYxQazYsG0IAJ1t9h4Q3ma8z8ejeKR22Xh0
+WcuRX2x9yEXy/+aG9W7Mot0mqUQCiLdmHM/2h5N9BFHyJvfOUf8lmssrJ5OS/kp5
+j7FIx3GUELBmEZqFUPjRSQPk1hZURYdRsloKkrbQ2kAivjjb50zAAQ8Av4Cgj6cS
+3HvNNmeVfJt1NS75vm+/wn48M8Vrcdv4gvNlSOhgFOixknvRoxSyNDOHYBKvHnSV
+2HnO0GzhAQzDZAwdHBzJtb8vRmglrH33TVdrE7OW+sojYB3Wyz8r9+HIt8Q8ovzX
+nQ8p0Nf5DlF7tye3JYo0EeNm5EQJ4q0YyVYInhmtpi3A5Cyu50GcB/GZ5Sd6ajo=
+=WULe
+-----END PGP SIGNATURE-----
+
+--9amGYk9869ThD9tj--
+
+--===============1483126515==
+Content-Type: text/plain; charset="us-ascii"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Content-Disposition: inline
+
+_______________________________________________
+notmuch mailing list
+notmuch@notmuchmail.org
+http://notmuchmail.org/mailman/listinfo/notmuch
+
+--===============1483126515==--
+
diff --git a/test/corpus/cur/01:2, b/test/corpus/cur/01:2,
deleted file mode 100644 (file)
index 7e9e349..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-From: "Mikhail Gusarov" <dottedmag@dottedmag.net>
-To: notmuch@notmuchmail.org
-Date: Tue, 17 Nov 2009 21:28:37 +0600
-Subject: [notmuch] [PATCH 1/2] Close message file after parsing message
-       headers
-Message-ID: <1258471718-6781-1-git-send-email-dottedmag@dottedmag.net>
-
-Keeping unused files open helps to see "Too many open files" often.
-
-Signed-off-by: Mikhail Gusarov <dottedmag at dottedmag.net>
----
- lib/message-file.c |    5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
-
-diff --git a/lib/message-file.c b/lib/message-file.c
-index 8a3f8ee..197ab01 100644
---- a/lib/message-file.c
-+++ b/lib/message-file.c
-@@ -325,6 +325,11 @@ notmuch_message_file_get_header (notmuch_message_file_t *message,
-           return decoded_value;
-     }
-+    if (message->parsing_finished) {
-+        fclose (message->file);
-+        message->file = NULL;
-+    }
-+
-     if (message->line)
-       free (message->line);
-     message->line = NULL;
--- 
-1.6.3.3
-
-
diff --git a/test/corpus/cur/02:2, b/test/corpus/cur/02:2,
deleted file mode 100644 (file)
index dadcdaa..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-From: "Mikhail Gusarov" <dottedmag@dottedmag.net>
-To: notmuch@notmuchmail.org
-Date: Tue, 17 Nov 2009 21:28:38 +0600
-Subject: [notmuch] [PATCH 2/2] Include <stdint.h> to get uint32_t in C++
-       file with gcc 4.4
-In-Reply-To: <1258471718-6781-1-git-send-email-dottedmag@dottedmag.net>
-References: <1258471718-6781-1-git-send-email-dottedmag@dottedmag.net>
-Message-ID: <1258471718-6781-2-git-send-email-dottedmag@dottedmag.net>
-
-
-Signed-off-by: Mikhail Gusarov <dottedmag at dottedmag.net>
----
- lib/message.cc |    2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
-
-diff --git a/lib/message.cc b/lib/message.cc
-index 72c350f..a4b090b 100644
---- a/lib/message.cc
-+++ b/lib/message.cc
-@@ -21,6 +21,8 @@
- #include "notmuch-private.h"
- #include "database-private.h"
-+#include <stdint.h>
-+
- #include <gmime/gmime.h>
- #include <xapian.h>
--- 
-1.6.3.3
-
-
diff --git a/test/corpus/cur/03:2, b/test/corpus/cur/03:2,
deleted file mode 100644 (file)
index c154ac5..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-Date: Tue, 17 Nov 2009 14:00:54 -0500
-From: Lars Kellogg-Stedman <lars@seas.harvard.edu>
-To: notmuch@notmuchmail.org
-Message-ID: <20091117190054.GU3165@dottiness.seas.harvard.edu>
-MIME-Version: 1.0
-User-Agent: Mutt/1.5.19 (2009-01-05)
-Subject: [notmuch] Working with Maildir storage?
-X-BeenThere: notmuch@notmuchmail.org
-X-Mailman-Version: 2.1.12
-Precedence: list
-List-Id: "Use and development of the notmuch mail system."
-       <notmuch.notmuchmail.org>
-List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,
-       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>
-List-Archive: <http://notmuchmail.org/pipermail/notmuch>
-List-Post: <mailto:notmuch@notmuchmail.org>
-List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>
-List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,
-       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>
-Content-Type: multipart/mixed; boundary="===============1685355122=="
-Sender: notmuch-bounces@notmuchmail.org
-Errors-To: notmuch-bounces@notmuchmail.org
-
-
---===============1685355122==
-Content-Type: multipart/signed; micalg=pgp-sha256;
-       protocol="application/pgp-signature"; boundary="5Dr6Wqe9hdyl7LAI"
-Content-Disposition: inline
-
-
---5Dr6Wqe9hdyl7LAI
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-Content-Transfer-Encoding: quoted-printable
-
-I saw the LWN article and decided to take a look at notmuch.  I'm
-currently using mutt and mairix to index and read a collection of
-Maildir mail folders (around 40,000 messages total).
-
-notmuch indexed the messages without complaint, but my attempt at
-searching bombed out. Running, for example:
-
-  notmuch search storage
-
-Resulted in 4604 lines of errors along the lines of:
-
-  Error opening
-  /home/lars/Mail/read-messages.2008/cur/1246413773.24928_27334.hostname,U=
-=3D3026:2,S:
-  Too many open files
-
-I'm curious if this is expected behavior (i.e., notmuch does not work
-with Maildir) or if something else is going on.
-
-Cheers,
-
---=20
-Lars Kellogg-Stedman <lars@seas.harvard.edu>
-Senior Technologist, Computing and Information Technology
-Harvard University School of Engineering and Applied Sciences
-
-
---5Dr6Wqe9hdyl7LAI
-Content-Type: application/pgp-signature
-Content-Disposition: inline
-
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.9 (GNU/Linux)
-
-iQEcBAEBCAAGBQJLAvLmAAoJENdGlQYxQazYRtcH/0usClQ1Z+EoTsA+URwIK6hD
-FsZUxFxRjMuOQRn2idZ/zhhg5jJj11ZaHjqxSkDvi2ywkTKUf1vX9LLzVy5hSR9M
-E6XQUd5QWAQXo1VsTeKkukIL0YqsPjdgrT8+Yt+OS2NvhEncql23oxnL2/pHkIFq
-r0NdTmVV5Jcar7w9J6X1Mi9m229a/9jV5FImsWISkIhIWznXU5SiU6zIw8xhP4E0
-xhvVSNJnFryjVHtva870aSQduhHfeLPzpYhqbkMPvlq+bcz6Q/Q2SwxJcGLNMPHa
-os9s9FGhCvFKUhVzezHWPgXNCcNT8qK89rcUldb5Oq4jaJb8RCZCYABplfoyaFs=
-=vO4s
------END PGP SIGNATURE-----
-
---5Dr6Wqe9hdyl7LAI--
-
---===============1685355122==
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Content-Disposition: inline
-
-_______________________________________________
-notmuch mailing list
-notmuch@notmuchmail.org
-http://notmuchmail.org/mailman/listinfo/notmuch
-
---===============1685355122==--
-
diff --git a/test/corpus/cur/04:2, b/test/corpus/cur/04:2,
deleted file mode 100644 (file)
index 0ce678b..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-From: Mikhail Gusarov <dottedmag@dottedmag.net>
-To: notmuch@notmuchmail.org
-References: <20091117190054.GU3165@dottiness.seas.harvard.edu>
-Date: Wed, 18 Nov 2009 01:02:38 +0600
-In-Reply-To: <20091117190054.GU3165@dottiness.seas.harvard.edu> (Lars
-       Kellogg-Stedman's message of "Tue, 17 Nov 2009 14:00:54 -0500")
-Message-ID: <87iqd9rn3l.fsf@vertex.dottedmag>
-User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux)
-MIME-Version: 1.0
-Subject: Re: [notmuch] Working with Maildir storage?
-X-BeenThere: notmuch@notmuchmail.org
-X-Mailman-Version: 2.1.12
-Precedence: list
-List-Id: "Use and development of the notmuch mail system."
-       <notmuch.notmuchmail.org>
-List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,
-       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>
-List-Archive: <http://notmuchmail.org/pipermail/notmuch>
-List-Post: <mailto:notmuch@notmuchmail.org>
-List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>
-List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,
-       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>
-Content-Type: multipart/mixed; boundary="===============1958295626=="
-Sender: notmuch-bounces@notmuchmail.org
-Errors-To: notmuch-bounces@notmuchmail.org
-
---===============1958295626==
-Content-Type: multipart/signed; boundary="=-=-=";
-       micalg=pgp-sha1; protocol="application/pgp-signature"
-
---=-=-=
-Content-Transfer-Encoding: quoted-printable
-
-
-Twas brillig at 14:00:54 17.11.2009 UTC-05 when lars@seas.harvard.edu did g=
-yre and gimble:
-
- LK> Resulted in 4604 lines of errors along the lines of:
-
- LK>   Error opening
- LK>   /home/lars/Mail/read-messages.2008/cur/1246413773.24928_27334.hostna=
-me,U=3D3026:2,S:
- LK>   Too many open files
-
-See the patch just posted here.
-
-=2D-=20
-  http://fossarchy.blogspot.com/
-
---=-=-=
-Content-Type: application/pgp-signature
-
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.9 (GNU/Linux)
-
-iQIcBAEBAgAGBQJLAvNOAAoJEJ0g9lA+M4iIjLYQAKp0PXEgl3JMOEBisH52AsIK
-CzzfP4Fzd41K9VH/c1EdQWDYR6FCAA4IUSNICnJhITsYUb0eC5AKJiey3JP0+rmd
-s4qEFBKH2iuphv8Llltcv2Q8DyPuJBkVa3mO9XCCeABZ6v4UvnTSWRVG12csSEih
-ScgienU8sMrM9LwvvVI1ZB2flm2TzsH2hWi30jIgmtBntIKJaTgbFXB50FYFwULa
-gGL/oH3u+YpumedWzPZdCJrw2q7nMvYx8aQ29EDCNLZibAZe+6oDTa6Fv6/0ldpQ
-U+DptR0nJGbJTWa26OTSvmyeIORjAfM+TEI68n7KO9VHYPmVh6awcf0MNKYh2xWk
-eRQNBcKyQNWxeKyCCpT/rrTlpxBWahpvg+V8lkDH2W09wjRp6CUKvifK3Sz3am9m
-5ZUMpvXbwkZD6Ci6l/QytbYK50e8UpvFSu5DBaxBz59ykoypuNg2ayO5Kdi6IF5d
-T+Sw6wo8UKn9a33+vheIc0fkhZXbeSotEmDm7huazm6CgM3dcWXUpTuJvik1cSWp
-4buv98gY6IKWKoUTXODWUr+7VR4gei8du8qOsKem+QDfNX7tmaIRjhrbB24B91Wy
-td3MTJD7GjMNid0INqRY1CRMLo8YlPaq6NBZfcYtYgwa6gpJijz1/MAn8+GMrfhF
-9LI8b9jopNP+pMYBohLA
-=/ksP
------END PGP SIGNATURE-----
---=-=-=--
-
---===============1958295626==
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Content-Disposition: inline
-
-_______________________________________________
-notmuch mailing list
-notmuch@notmuchmail.org
-http://notmuchmail.org/mailman/listinfo/notmuch
-
---===============1958295626==--
-
diff --git a/test/corpus/cur/05:2, b/test/corpus/cur/05:2,
deleted file mode 100644 (file)
index 75b05fa..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-MIME-Version: 1.0
-Date: Tue, 17 Nov 2009 11:36:14 -0800
-Message-ID: <cf0c4d610911171136h1713aa59w9cf9aa31f052ad0a@mail.gmail.com>
-From: Alex Botero-Lowry <alex.boterolowry@gmail.com>
-To: notmuch@notmuchmail.org
-Content-Type: multipart/mixed; boundary=0016e687869333b1570478963d35
-Subject: [notmuch] preliminary FreeBSD support
-X-BeenThere: notmuch@notmuchmail.org
-X-Mailman-Version: 2.1.12
-Precedence: list
-List-Id: "Use and development of the notmuch mail system."
-       <notmuch.notmuchmail.org>
-List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,
-       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>
-List-Archive: <http://notmuchmail.org/pipermail/notmuch>
-List-Post: <mailto:notmuch@notmuchmail.org>
-List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>
-List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,
-       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>
-Sender: notmuch-bounces@notmuchmail.org
-Errors-To: notmuch-bounces@notmuchmail.org
-
---0016e687869333b1570478963d35
-Content-Type: multipart/alternative; boundary=0016e687869333b14e0478963d33
-
---0016e687869333b14e0478963d33
-Content-Type: text/plain; charset=ISO-8859-1
-
-I saw the announcement this morning, and was very excited, as I had been
-hoping sup would be turned into a library,
-since I like the concept more than the UI (I'd rather an emacs interface).
-
-I did a preliminary compile which worked out fine, but
-sysconf(_SC_SC_GETPW_R_SIZE_MAX) returns -1 on
-FreeBSD, so notmuch_config_open segfaulted.
-
-Attached is a patch that supplies a default buffer size of 64 in cases where
--1 is returned.
-
-http://www.opengroup.org/austin/docs/austin_328.txt - seems to indicate this
-is acceptable behavior,
-and http://mail-index.netbsd.org/pkgsrc-bugs/2006/06/07/msg016808.htmlspecifically
-uses 64 as the
-buffer size.
-
---0016e687869333b14e0478963d33
-Content-Type: text/html; charset=ISO-8859-1
-Content-Transfer-Encoding: quoted-printable
-
-I saw the announcement this morning, and was very excited, as I had been ho=
-ping sup would be turned into a library,<br>since I like the concept more t=
-han the UI (I&#39;d rather an emacs interface).<br><br>I did a preliminary =
-compile which worked out fine, but sysconf(_SC_SC_GETPW_R_SIZE_MAX) returns=
- -1 on<br>
-FreeBSD, so notmuch_config_open segfaulted.<br><br>Attached is a patch that=
- supplies a default buffer size of 64 in cases where -1 is returned.<br><br=
-><a href=3D"http://www.opengroup.org/austin/docs/austin_328.txt">http://www=
-.opengroup.org/austin/docs/austin_328.txt</a> - seems to indicate this is a=
-cceptable behavior,<br>
-and <a href=3D"http://mail-index.netbsd.org/pkgsrc-bugs/2006/06/07/msg01680=
-8.html">http://mail-index.netbsd.org/pkgsrc-bugs/2006/06/07/msg016808.html<=
-/a> specifically uses 64 as the<br>buffer size.<br><br><br>
-
---0016e687869333b14e0478963d33--
---0016e687869333b1570478963d35
-Content-Type: application/octet-stream; 
-       name="0001-Deal-with-situation-where-sysconf-_SC_GETPW_R_SIZE_M.patch"
-Content-Disposition: attachment; 
-       filename="0001-Deal-with-situation-where-sysconf-_SC_GETPW_R_SIZE_M.patch"
-Content-Transfer-Encoding: base64
-X-Attachment-Id: f_g252e6gs0
-
-RnJvbSBlM2JjNGJiZDdiOWQwZDA4NjgxNmFiNWY4ZjJkNmZmZWExZGQzZWE0IE1vbiBTZXAgMTcg
-MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgQm90ZXJvLUxvd3J5IDxhbGV4LmJvdGVyb2xv
-d3J5QGdtYWlsLmNvbT4KRGF0ZTogVHVlLCAxNyBOb3YgMjAwOSAxMTozMDozOSAtMDgwMApTdWJq
-ZWN0OiBbUEFUQ0hdIERlYWwgd2l0aCBzaXR1YXRpb24gd2hlcmUgc3lzY29uZihfU0NfR0VUUFdf
-Ul9TSVpFX01BWCkgcmV0dXJucyAtMQoKLS0tCiBub3RtdWNoLWNvbmZpZy5jIHwgICAgMiArKwog
-MSBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCgpkaWZmIC0t
-Z2l0IGEvbm90bXVjaC1jb25maWcuYyBiL25vdG11Y2gtY29uZmlnLmMKaW5kZXggMjQ4MTQ5Yy4u
-ZTcyMjBkOCAxMDA2NDQKLS0tIGEvbm90bXVjaC1jb25maWcuYworKysgYi9ub3RtdWNoLWNvbmZp
-Zy5jCkBAIC03Nyw2ICs3Nyw3IEBAIHN0YXRpYyBjaGFyICoKIGdldF9uYW1lX2Zyb21fcGFzc3dk
-X2ZpbGUgKHZvaWQgKmN0eCkKIHsKICAgICBsb25nIHB3X2J1Zl9zaXplID0gc3lzY29uZihfU0Nf
-R0VUUFdfUl9TSVpFX01BWCk7CisgICAgaWYgKHB3X2J1Zl9zaXplID09IC0xKSBwd19idWZfc2l6
-ZSA9IDY0OwogICAgIGNoYXIgKnB3X2J1ZiA9IHRhbGxvY196ZXJvX3NpemUgKGN0eCwgcHdfYnVm
-X3NpemUpOwogICAgIHN0cnVjdCBwYXNzd2QgcGFzc3dkLCAqaWdub3JlZDsKICAgICBjaGFyICpu
-YW1lOwpAQCAtMTAxLDYgKzEwMiw3IEBAIHN0YXRpYyBjaGFyICoKIGdldF91c2VybmFtZV9mcm9t
-X3Bhc3N3ZF9maWxlICh2b2lkICpjdHgpCiB7CiAgICAgbG9uZyBwd19idWZfc2l6ZSA9IHN5c2Nv
-bmYoX1NDX0dFVFBXX1JfU0laRV9NQVgpOworICAgIGlmIChwd19idWZfc2l6ZSA9PSAtMSkgcHdf
-YnVmX3NpemUgPSA2NDsKICAgICBjaGFyICpwd19idWYgPSB0YWxsb2NfemVyb19zaXplIChjdHgs
-IHB3X2J1Zl9zaXplKTsKICAgICBzdHJ1Y3QgcGFzc3dkIHBhc3N3ZCwgKmlnbm9yZWQ7CiAgICAg
-Y2hhciAqbmFtZTsKLS0gCjEuNi41LjIKCg==
---0016e687869333b1570478963d35
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Content-Disposition: inline
-
-_______________________________________________
-notmuch mailing list
-notmuch@notmuchmail.org
-http://notmuchmail.org/mailman/listinfo/notmuch
-
---0016e687869333b1570478963d35--
-
diff --git a/test/corpus/cur/06:2, b/test/corpus/cur/06:2,
deleted file mode 100644 (file)
index 3baad49..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-From: "Carl Worth" <cworth@cworth.org>
-To: notmuch@notmuchmail.org
-Date: Tue, 17 Nov 2009 12:19:24 -0800
-Subject: [notmuch] preliminary FreeBSD support
-In-Reply-To: <cf0c4d610911171136h1713aa59w9cf9aa31f052ad0a@mail.gmail.com>
-References: <cf0c4d610911171136h1713aa59w9cf9aa31f052ad0a@mail.gmail.com>
-Message-ID: <87lji4lx9v.fsf@yoom.home.cworth.org>
-
-On Tue, 17 Nov 2009 11:36:14 -0800, Alex Botero-Lowry <alex.boterolowry at gmail.com> wrote:
-> I saw the announcement this morning, and was very excited, as I had been
-> hoping sup would be turned into a library,
-> since I like the concept more than the UI (I'd rather an emacs interface).
-
-Hi Alex,
-
-That's great! It's good to hear that there are like-minded people out
-there. I hope that Notmuch will be useful for you.
-
-> I did a preliminary compile which worked out fine, but
-> sysconf(_SC_SC_GETPW_R_SIZE_MAX) returns -1 on
-> FreeBSD, so notmuch_config_open segfaulted.
-> 
-> Attached is a patch that supplies a default buffer size of 64 in cases where
-> -1 is returned.
-
-Thanks for the patch. As we discussed in IRC[*], we should probably
-do the correct thing and check for ERANGE and loop as necessary (even if
-sysconf returns a positive value). Example code here:
-
-http://www.opengroup.org/austin/docs/austin_328.txt
-
--Carl
-
-[*] #notmuch on irc.freenode.net for those who didn't just guess that
-already, (and I'll add that to the website soon).
-
diff --git a/test/corpus/cur/07:2, b/test/corpus/cur/07:2,
deleted file mode 100644 (file)
index 7b1e2bb..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-From: "Carl Worth" <cworth@cworth.org>
-To: notmuch@notmuchmail.org
-Date: Tue, 17 Nov 2009 09:13:27 -0800
-Subject: [notmuch] [PATCH 1/2] Close message file after parsing message
- headers
-In-Reply-To: <1258471718-6781-1-git-send-email-dottedmag@dottedmag.net>
-References: <1258471718-6781-1-git-send-email-dottedmag@dottedmag.net>
-Message-ID: <87lji5cbwo.fsf@yoom.home.cworth.org>
-
-On Tue, 17 Nov 2009 21:28:37 +0600, Mikhail Gusarov <dottedmag at dottedmag.net> wrote:
-> Keeping unused files open helps to see "Too many open files" often.
-> 
-> Signed-off-by: Mikhail Gusarov <dottedmag at dottedmag.net>
-...
-On Tue, 17 Nov 2009 21:28:38 +0600, Mikhail Gusarov <dottedmag at dottedmag.net> wrote:
-> 
-> Signed-off-by: Mikhail Gusarov <dottedmag at dottedmag.net>
-> ---
->  lib/message.cc |    2 ++
->  1 files changed, 2 insertions(+), 0 deletions(-)
-
-Hi Mikhail,
-
-Welcome to notmuch, and thanks for these patches! I've pushed both of
-them out now.
-
-Keith ran into the same problem of "too many open files" and wrote a
-more complex fix, (which included what you did here). His code can be
-seen at:
-
-       git://keithp.com/git/notmuch
-
-I didn't apply Keith's fix yet, because I think I'd rather just fix the
-indexer to store the In-Reply-To header in a separate term prefix from
-the term used for the References header[*]. That will then let us lookup
-the in-reply-to value later for thread constructions without having to
-open the original email file at all.
-
--Carl
-
-[*] Yes, this is my first post to our new mailing list and I'm already
-spouting off about "terms" and "prefixes" without any definitions. I
-apologize for that. I hope that people will ask questions freely here on
-the list whenever anything is not clear, and I'll be glad to explain
-things as needed. (Then when can shove answers into a HACKING document.)
-
-PS. This reply is a great example of a feature that notmuch *almost*
-supports already---repling to multiple messages at once. The "notmuch
-reply" command line does everything necessary to make this work, but we
-haven't yet hooked up any keybindings for this in the emacs client yet.
-Obviously, 'r' from the search view could reply to the entire thread.
-But when viewing a thread, anyone have a good keybinding suggestion?
-(There's obviously 'R' as opposed to 'r', but I think we'll probably
-want to distinguish "reply to sender" from "reply to all" before trying
-to distinguish "reply to message" from "reply to thread" (which I
-imagine is more rare of an operation).
-
diff --git a/test/corpus/cur/08:2, b/test/corpus/cur/08:2,
deleted file mode 100644 (file)
index baf34d1..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-Date: Tue, 17 Nov 2009 15:33:01 -0500
-From: Lars Kellogg-Stedman <lars@seas.harvard.edu>
-To: Mikhail Gusarov <dottedmag@dottedmag.net>
-Message-ID: <20091117203301.GV3165@dottiness.seas.harvard.edu>
-References: <20091117190054.GU3165@dottiness.seas.harvard.edu>
-       <87iqd9rn3l.fsf@vertex.dottedmag>
-MIME-Version: 1.0
-In-Reply-To: <87iqd9rn3l.fsf@vertex.dottedmag>
-User-Agent: Mutt/1.5.19 (2009-01-05)
-Cc: notmuch@notmuchmail.org
-Subject: Re: [notmuch] Working with Maildir storage?
-X-BeenThere: notmuch@notmuchmail.org
-X-Mailman-Version: 2.1.12
-Precedence: list
-List-Id: "Use and development of the notmuch mail system."
-       <notmuch.notmuchmail.org>
-List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,
-       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>
-List-Archive: <http://notmuchmail.org/pipermail/notmuch>
-List-Post: <mailto:notmuch@notmuchmail.org>
-List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>
-List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,
-       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>
-Content-Type: multipart/mixed; boundary="===============0063752545=="
-Sender: notmuch-bounces@notmuchmail.org
-Errors-To: notmuch-bounces@notmuchmail.org
-
-
---===============0063752545==
-Content-Type: multipart/signed; micalg=pgp-sha256;
-       protocol="application/pgp-signature"; boundary="GGxZz/e2pmGePzrA"
-Content-Disposition: inline
-
-
---GGxZz/e2pmGePzrA
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-Content-Transfer-Encoding: quoted-printable
-
-> See the patch just posted here.
-
-Is the list archived anywhere?  The obvious archives
-(http://notmuchmail.org/pipermail/notmuch/) aren't available, and I
-think I subscribed too late to get the patch (I only just saw the
-discussion about it).
-
-It doesn't look like the patch is in git yet.
-
--- Lars
-
---=20
-Lars Kellogg-Stedman <lars@seas.harvard.edu>
-Senior Technologist, Computing and Information Technology
-Harvard University School of Engineering and Applied Sciences
-
-
---GGxZz/e2pmGePzrA
-Content-Type: application/pgp-signature
-Content-Disposition: inline
-
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.9 (GNU/Linux)
-
-iQEcBAEBCAAGBQJLAwh9AAoJENdGlQYxQazYHJMIAI+XTPOyBTZIxEGTdgVKd2fR
-k27ucKs6lXozfMIIGchNUDXQho+KmiuTfX1XFJeBkqOlhrd9zlGjBGoBM0YBq/Gs
-aStPdonREzsHORjmyQCCpjg4AcqCRTXFbDXzAeXlxMPOrZ3P0XNPzTEM1mVksbmg
-mBBDLdHncy4sSCfFgXwRGGgLv9z5Acqm8xGYr68c9PIXY939ozIKV9LVUhxiNz9g
-We2a9rLDhfwxUqDlGdiNwZZimiKvD/fsYSrBZMDb5HgIYkeNZ4SD8Xu+OgB550wN
-OFfwGi3o8WFK2AyDe5QJDh9Ub+euPNlVzePoGpkltZEHuCcLFJqCHv5XYpbxcjA=
-=GO2Q
------END PGP SIGNATURE-----
-
---GGxZz/e2pmGePzrA--
-
---===============0063752545==
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Content-Disposition: inline
-
-_______________________________________________
-notmuch mailing list
-notmuch@notmuchmail.org
-http://notmuchmail.org/mailman/listinfo/notmuch
-
---===============0063752545==--
-
diff --git a/test/corpus/cur/09:2, b/test/corpus/cur/09:2,
deleted file mode 100644 (file)
index 26b51b1..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-From: "Mikhail Gusarov" <dottedmag@dottedmag.net>
-To: notmuch@notmuchmail.org
-Date: Wed, 18 Nov 2009 02:50:48 +0600
-Subject: [notmuch] Working with Maildir storage?
-In-Reply-To: <20091117203301.GV3165@dottiness.seas.harvard.edu> (Lars
-       Kellogg-Stedman's message of "Tue, 17 Nov 2009 15:33:01 -0500")
-References: <20091117190054.GU3165@dottiness.seas.harvard.edu>
-       <87iqd9rn3l.fsf@vertex.dottedmag>
-       <20091117203301.GV3165@dottiness.seas.harvard.edu>
-Message-ID: <87fx8can9z.fsf@vertex.dottedmag>
-
-
-Twas brillig at 15:33:01 17.11.2009 UTC-05 when lars at seas.harvard.edu did gyre and gimble:
-
- LK> Is the list archived anywhere?  The obvious archives
- LK> (http://notmuchmail.org/pipermail/notmuch/) aren't available, and I
- LK> think I subscribed too late to get the patch (I only just saw the
- LK> discussion about it).
-
- LK> It doesn't look like the patch is in git yet.
-
-Just has been pushed
-
--- 
-  http://fossarchy.blogspot.com/
--------------- next part --------------
-A non-text attachment was scrubbed...
-Name: not available
-Type: application/pgp-signature
-Size: 834 bytes
-Desc: not available
-URL: <http://notmuchmail.org/pipermail/notmuch/attachments/20091118/0e33d964/attachment.pgp>
-
diff --git a/test/corpus/cur/10:2, b/test/corpus/cur/10:2,
deleted file mode 100644 (file)
index 4211d73..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-From: "Mikhail Gusarov" <dottedmag@dottedmag.net>
-To: notmuch@notmuchmail.org
-Date: Wed, 18 Nov 2009 02:51:18 +0600
-Subject: [notmuch] [PATCH] Handle rename of message file
-Message-ID: <1258491078-29658-1-git-send-email-dottedmag@dottedmag.net>
-
-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
-
-
diff --git a/test/corpus/cur/11:2, b/test/corpus/cur/11:2,
deleted file mode 100644 (file)
index c0701de..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-From: "Keith Packard" <keithp@keithp.com>
-To: notmuch@notmuchmail.org
-Date: Tue, 17 Nov 2009 13:15:25 -0800
-Subject: [notmuch] [PATCH 1/2] Close message file after parsing message
- headers
-In-Reply-To: <87lji5cbwo.fsf@yoom.home.cworth.org>
-References: <1258471718-6781-1-git-send-email-dottedmag@dottedmag.net>
-       <87lji5cbwo.fsf@yoom.home.cworth.org>
-Message-ID: <yunbpj0etua.fsf@aiko.keithp.com>
-
-On Tue, 17 Nov 2009 09:13:27 -0800, Carl Worth <cworth at cworth.org> wrote:
-
-> I didn't apply Keith's fix yet, because I think I'd rather just fix the
-> indexer to store the In-Reply-To header in a separate term prefix from
-> the term used for the References header[*]. That will then let us lookup
-> the in-reply-to value later for thread constructions without having to
-> open the original email file at all.
-
-Threading the message also involves displaying the from and to contents,
-which requires opening the message file. The alternative to the fix I
-provided is to just parse all of the message headers when first opening
-the message; it could then be immediately closed and the hash referred
-to for all header data. Given the choice, just having the caller say
-when it has finished with a message is probably a reasonable option...
-
--keith
-
diff --git a/test/corpus/cur/12:2, b/test/corpus/cur/12:2,
deleted file mode 100644 (file)
index fbc604c..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-From: "Keith Packard" <keithp@keithp.com>
-To: notmuch@notmuchmail.org
-Date: Tue, 17 Nov 2009 13:24:13 -0800
-Subject: [notmuch] Working with Maildir storage?
-In-Reply-To: <20091117203301.GV3165@dottiness.seas.harvard.edu>
-References: <20091117190054.GU3165@dottiness.seas.harvard.edu>
-       <87iqd9rn3l.fsf@vertex.dottedmag>
-       <20091117203301.GV3165@dottiness.seas.harvard.edu>
-Message-ID: <yunaayketfm.fsf@aiko.keithp.com>
-
-On Tue, 17 Nov 2009 15:33:01 -0500, Lars Kellogg-Stedman <lars at seas.harvard.edu> wrote:
-> > See the patch just posted here.
-
-I've also pushed a slightly more complicated (and complete) fix to my
-private notmuch repository
-
-git://keithp.com/git/notmuch
-
-> Is the list archived anywhere?
-
-Oops. Looks like Carl's mail server is broken. He's traveling to
-Barcelona today and so it won't get fixed for a while.
-
-Thanks to everyone for trying out notmuch!
-
--keith
-
diff --git a/test/corpus/cur/13:2, b/test/corpus/cur/13:2,
deleted file mode 100644 (file)
index 03cb374..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-From: "Keith Packard" <keithp@keithp.com>
-To: notmuch@notmuchmail.org
-Date: Tue, 17 Nov 2009 13:32:45 -0800
-Subject: [notmuch] [PATCH] Make notmuch-show 'X' (and 'x') commands remove
-       inbox (and unread) tags
-Message-ID: <1258493565-13508-1-git-send-email-keithp@keithp.com>
-
-When closing a thread view, mark the thread as archived by removing
-the "inbox" tag, and for the 'x' variant, the "unread" tag as well,
-then kill the buffer and update the search window view as well.
-
-This makes 'x' much the same as 'a', but instead of taking you to the
-next message, it takes you back to the search window instead.
-
-Signed-off-by: Keith Packard <keithp at keithp.com>
----
- notmuch.el |   86 ++++++++++++++++++++++++++++++++++++++++++++++-------------
- 1 files changed, 67 insertions(+), 19 deletions(-)
-
-diff --git a/notmuch.el b/notmuch.el
-index 638d49d..7b0d72c 100644
---- a/notmuch.el
-+++ b/notmuch.el
-@@ -31,8 +31,8 @@
-     ; Will be much preferable to switch to direct manipulation for
-     ; toggling visibility of these components. Probably using
-     ; overlays-at to query and manipulate the current overlay.
--    (define-key map "a" 'notmuch-show-archive-thread)
--    (define-key map "A" 'notmuch-show-mark-read-then-archive-thread)
-+    (define-key map "a" 'notmuch-show-mark-read-archive-thread-next-thread)
-+    (define-key map "A" 'notmuch-show-archive-thread-next-thread)
-     (define-key map "b" 'notmuch-show-toggle-body-read-visible)
-     (define-key map "c" 'notmuch-show-toggle-citations-visible)
-     (define-key map "h" 'notmuch-show-toggle-headers-visible)
-@@ -47,7 +47,8 @@
-     (define-key map "s" 'notmuch-show-toggle-signatures-visible)
-     (define-key map "v" 'notmuch-show-view-all-mime-parts)
-     (define-key map "w" 'notmuch-show-view-raw-message)
--    (define-key map "x" 'kill-this-buffer)
-+    (define-key map "x" 'notmuch-show-mark-read-archive-thread-kill-buffer)
-+    (define-key map "X" 'notmuch-show-archive-thread-kill-buffer)
-     (define-key map "+" 'notmuch-show-add-tag)
-     (define-key map "-" 'notmuch-show-remove-tag)
-     (define-key map (kbd "DEL") 'notmuch-show-rewind)
-@@ -183,7 +184,33 @@ Unlike builtin `next-line' this version accepts no arguments."
-                        (cons (notmuch-show-get-message-id) nil)))
-         (notmuch-show-set-tags (sort (set-difference tags toremove :test 'string=) 'string<))))))
--(defun notmuch-show-archive-thread-maybe-mark-read (markread)
-+(defun notmuch-show-next-thread (markread)
-+  (let ((parent-buffer notmuch-show-parent-buffer))
-+    (kill-this-buffer)
-+    (if parent-buffer
-+      (progn
-+        (switch-to-buffer parent-buffer)
-+        (forward-line)
-+        (notmuch-search-show-thread)))))
-+  
-+(defun notmuch-delete-tags (to-remove from)
-+  (if to-remove
-+      (delete (car to-remove) (notmuch-delete-tags (cdr to-remove) from))
-+    from))
-+
-+(defun notmuch-kill-message-buffer (markread)
-+  (let ((parent-buffer notmuch-show-parent-buffer))
-+    (kill-this-buffer)
-+    (if parent-buffer
-+      (progn
-+        (switch-to-buffer parent-buffer)
-+        (let ((tags (notmuch-search-get-tags)))
-+          (setq tags (delete "inbox" tags))
-+          (if markread (setq tags (delete "unread" tags)))
-+          (notmuch-search-set-tags tags))
-+        (forward-line)))))
-+
-+(defun notmuch-show-archive-thread-maybe-mark-read (markread shownext)
-   (save-excursion
-     (goto-char (point-min))
-     (while (not (eobp))
-@@ -194,15 +221,9 @@ Unlike builtin `next-line' this version accepts no arguments."
-         (forward-char))
-       (if (not (re-search-forward notmuch-show-message-begin-regexp nil t))
-         (goto-char (point-max)))))
--  (let ((parent-buffer notmuch-show-parent-buffer))
--    (kill-this-buffer)
--    (if parent-buffer
--      (progn
--        (switch-to-buffer parent-buffer)
--        (forward-line)
--        (notmuch-search-show-thread)))))
-+  (if shownext (notmuch-show-next-thread markread) (notmuch-kill-message-buffer markread)))
--(defun notmuch-show-mark-read-then-archive-thread ()
-+(defun notmuch-show-mark-read-archive-thread-next-thread ()
-   "Remove \"unread\" tag from each message, then archive and show next thread.
- Archive each message currrently shown by removing the \"unread\"
-@@ -215,9 +236,22 @@ being delivered to the same thread. It does not archive the
- entire thread, but only the messages shown in the current
- buffer."
-   (interactive)
--  (notmuch-show-archive-thread-maybe-mark-read t))
-+  (notmuch-show-archive-thread-maybe-mark-read t t))
-+
-+(defun notmuch-show-mark-read-archive-thread-kill-buffer ()
-+  "Remove \"unread\" tag from each message, then archive and kill the buffer.
-+
-+Archive each message currrently shown by removing the \"unread\"
-+and \"inbox\" tag from each. Then kill this buffer.
-+
-+Note: This command is safe from any race condition of new messages
-+being delivered to the same thread. It does not archive the
-+entire thread, but only the messages shown in the current
-+buffer."
-+  (interactive)
-+  (notmuch-show-archive-thread-maybe-mark-read t nil))
--(defun notmuch-show-archive-thread ()
-+(defun notmuch-show-archive-thread-next-thread ()
-   "Archive each message in thread, and show next thread from search.
- Archive each message currrently shown by removing the \"inbox\"
-@@ -229,7 +263,20 @@ being delivered to the same thread. It does not archive the
- entire thread, but only the messages shown in the current
- buffer."
-   (interactive)
--  (notmuch-show-archive-thread-maybe-mark-read nil))
-+  (notmuch-show-archive-thread-maybe-mark-read nil t))
-+
-+(defun notmuch-show-archive-thread-kill-buffer ()
-+  "Archive each message in thread, and kill the thread buffer.
-+
-+Archive each message currrently shown by removing the \"inbox\"
-+tag from each. Then kill this buffer.
-+
-+Note: This command is safe from any race condition of new messages
-+being delivered to the same thread. It does not archive the
-+entire thread, but only the messages shown in the current
-+buffer."
-+  (interactive)
-+  (notmuch-show-archive-thread-maybe-mark-read nil t))
- (defun notmuch-show-view-raw-message ()
-   "View the raw email of the current message."
-@@ -297,7 +344,7 @@ by searching backward)."
-       (not (re-search-forward notmuch-show-message-begin-regexp nil t)))))
- (defun notmuch-show-message-unread-p ()
--  "Preficate testing whether current message is unread."
-+  "Predicate testing whether current message is unread."
-   (member "unread" (notmuch-show-get-tags)))
- (defun notmuch-show-next-message ()
-@@ -434,7 +481,7 @@ which this thread was originally shown."
-       (let ((last (notmuch-show-last-message-p)))
-       (notmuch-show-mark-read-then-next-open-message)
-       (if last
--          (notmuch-show-archive-thread))))))
-+          (notmuch-show-archive-thread-next-thread))))))
- (defun notmuch-show-markup-citations-region (beg end depth)
-   (goto-char beg)
-@@ -618,8 +665,9 @@ messages. Each time you navigate away from a message with
- You can add or remove tags from the current message with '+' and
- '-'.  You can also archive all messages in the current
--view, (remove the \"inbox\" tag from each), with
--`notmuch-show-archive-thread' (bound to 'a' by default).
-+view, (remove the \"inbox\" tag from each), with either
-+`notmuch-show-archive-thread-next-thread' (bound to 'a' by default) or
-+`notmuch-show-archive-thread-kill-buffer' (bound to 'x' by default).
- \\{notmuch-show-mode-map}"
-   (interactive)
--- 
-1.6.5.2
-
-
diff --git a/test/corpus/cur/14:2, b/test/corpus/cur/14:2,
deleted file mode 100644 (file)
index d3fe78d..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-From: "Jan Janak" <jan@ryngle.com>
-To: notmuch@notmuchmail.org
-Date: Tue, 17 Nov 2009 23:18:47 +0100
-Subject: [notmuch] [PATCH] Older versions of install do not support -C.
-Message-ID: <1258496327-12086-1-git-send-email-jan@ryngle.com>
-
-Do not use -C cmdline option of install, older versions, commonly found in
-distributions like Debian, do not seem to support it. Running make install
-on such systems (tested on Debian Lenny) fails.
-
-Signed-off-by: Jan Janak <jan at ryngle.com>
----
- Makefile.local |    8 ++++----
- 1 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/Makefile.local b/Makefile.local
-index f824bed..f51f1d1 100644
---- a/Makefile.local
-+++ b/Makefile.local
-@@ -27,11 +27,11 @@ install: all notmuch.1.gz
-       for d in $(DESTDIR)$(prefix)/bin/ $(DESTDIR)$(prefix)/share/man/man1 \
-               $(DESTDIR)/etc/bash_completion.d/ ; \
-       do \
--              install -C -d $$d ; \
-+              install -d $$d ; \
-       done ;
--      install -C notmuch $(DESTDIR)$(prefix)/bin/
--      install -C -m0644 notmuch.1.gz $(DESTDIR)$(prefix)/share/man/man1/
--      install -C notmuch-completion.bash \
-+      install notmuch $(DESTDIR)$(prefix)/bin/
-+      install -m0644 notmuch.1.gz $(DESTDIR)$(prefix)/share/man/man1/
-+      install notmuch-completion.bash \
-               $(DESTDIR)/etc/bash_completion.d/notmuch
- SRCS  := $(SRCS) $(notmuch_client_srcs)
--- 
-1.6.3.3
-
-
diff --git a/test/corpus/cur/15:2, b/test/corpus/cur/15:2,
deleted file mode 100644 (file)
index 6824d5e..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-From: "Jan Janak" <jan@ryngle.com>
-To: notmuch@notmuchmail.org
-Date: Tue, 17 Nov 2009 23:35:30 +0100
-Subject: [notmuch] What a great idea!
-Message-ID: <f35dbb950911171435ieecd458o853c873e35f4be95@mail.gmail.com>
-
-Hello,
-
-First of all, notmuch is a wonderful idea, both the cmdline tool and
-the emacs interface! Thanks a lot for writing it, I was really excited
-when I read the announcement today.
-
-Have you considered sending an announcement to the org-mode mailing list?
-http://org-mode.org
-
-Various ways of searching/referencing emails from emacs were discussed
-there several times and none of them were as elegant as notmuch (not
-even close). Maybe notmuch would attract some of the developers
-there..
-
-   -- Jan
-
diff --git a/test/corpus/cur/16:2, b/test/corpus/cur/16:2,
deleted file mode 100644 (file)
index f531eb9..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-From: "Jan Janak" <jan@ryngle.com>
-To: notmuch@notmuchmail.org
-Date: Tue, 17 Nov 2009 23:38:47 +0100
-Subject: [notmuch] What a great idea!
-In-Reply-To: <f35dbb950911171435ieecd458o853c873e35f4be95@mail.gmail.com>
-References: <f35dbb950911171435ieecd458o853c873e35f4be95@mail.gmail.com>
-Message-ID: <f35dbb950911171438k5df6eb56k77b6c0944e2e79ae@mail.gmail.com>
-
-On Tue, Nov 17, 2009 at 11:35 PM, Jan Janak <jan at ryngle.com> wrote:
-> Hello,
->
-> First of all, notmuch is a wonderful idea, both the cmdline tool and
-> the emacs interface! Thanks a lot for writing it, I was really excited
-> when I read the announcement today.
->
-> Have you considered sending an announcement to the org-mode mailing list?
-> http://org-mode.org
-
-Sorry, wrong URL, the correct one is: http://orgmode.org
-
-> Various ways of searching/referencing emails from emacs were discussed
-> there several times and none of them were as elegant as notmuch (not
-> even close). Maybe notmuch would attract some of the developers
-> there..
-
-  -- Jan
-
diff --git a/test/corpus/cur/17:2, b/test/corpus/cur/17:2,
deleted file mode 100644 (file)
index d3b7568..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-From: "Israel Herraiz" <isra@herraiz.org>
-To: notmuch@notmuchmail.org
-Date: Tue, 17 Nov 2009 23:57:18 +0100
-Subject: [notmuch] New to the list
-Message-ID: <1258498485-sup-142@elly>
-
-Hi all,
-
-I have subscribed to the list. As suggested by the welcome message, I
-am introducing myself. My name is Israel Herraiz, and I have done a
-couple of contributions to Sup, the probably well-known here e-mail
-client.
-
-"Not much" sounds interesting, and I wonder whether it could be
-integrated with the views of Sup (inbox, threads, etc). So I have
-subscribed to the list to keep an eye on what's going on here.
-
-I have just heard of "Not much". I have not even tried to download the
-code yet.
-
-Cheers,
-Israel
-
diff --git a/test/corpus/cur/18:2, b/test/corpus/cur/18:2,
deleted file mode 100644 (file)
index f522f69..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-From: "Aron Griffis" <agriffis@n01se.net>
-To: notmuch@notmuchmail.org
-Date: Tue, 17 Nov 2009 18:21:38 -0500
-Subject: [notmuch] archive
-Message-ID: <20091117232137.GA7669@griffis1.net>
-
-Just subscribed, I'd like to catch up on the previous postings,
-but the archive link seems to be bogus?
-
-Thanks,
-Aron
-
diff --git a/test/corpus/cur/19:2, b/test/corpus/cur/19:2,
deleted file mode 100644 (file)
index 1b7872b..0000000
+++ /dev/null
@@ -1,360 +0,0 @@
-From: "Ingmar Vanhassel" <ingmar@exherbo.org>
-To: notmuch@notmuchmail.org
-Date: Wed, 18 Nov 2009 00:23:42 +0100
-Subject: [notmuch] [PATCH] Typsos
-Message-ID: <1258500222-32066-1-git-send-email-ingmar@exherbo.org>
-
----
- Makefile                |    4 ++--
- README                  |    6 +++---
- gmime-filter-reply.h    |    2 +-
- lib/database.cc         |    2 +-
- lib/index.cc            |    2 +-
- lib/message.cc          |    2 +-
- lib/messages.c          |    2 +-
- lib/notmuch-private.h   |    2 +-
- lib/notmuch.h           |   10 +++++-----
- lib/sha1.c              |    2 +-
- lib/thread.cc           |    2 +-
- notmuch-completion.bash |    2 +-
- notmuch-new.c           |    4 ++--
- notmuch-search.c        |    2 +-
- notmuch.1               |    4 ++--
- notmuch.el              |   10 +++++-----
- show-message.c          |    2 +-
- 17 files changed, 30 insertions(+), 30 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index 436dacf..96aaa73 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,4 +1,4 @@
--# Default FLAGS, (can be overriden by user such as "make CFLAGS=-O2")
-+# Default FLAGS, (can be overridden by user such as "make CFLAGS=-O2")
- WARN_FLAGS=-Wall -Wextra -Wmissing-declarations -Wwrite-strings -Wswitch-enum
- CFLAGS=-O2
-@@ -14,7 +14,7 @@ override CXXFLAGS += $(WARN_FLAGS) $(extra_cflags) $(extra_cxxflags)
- override LDFLAGS += `pkg-config --libs glib-2.0 gmime-2.4 talloc` \
-                       `xapian-config --libs`
--# Include our local Makfile.local first so that its first target is default
-+# Include our local Makefile.local first so that its first target is default
- include Makefile.local
- include lib/Makefile.local
-diff --git a/README b/README
-index 40f05ab..27af77f 100644
---- a/README
-+++ b/README
-@@ -3,7 +3,7 @@ Notmuch - thread-based email index, search and tagging.
- Notmuch is a system for indexing, searching, reading, and tagging
- large collections of email messages. It uses the Xapian library to
- provide fast, full-text search of very large collection of email with
--a very convenient search syntas.
-+a very convenient search syntax.
- Notmuch is free software, released under the GNU General Public
- License version 3 (or later).
-@@ -45,7 +45,7 @@ obtaining a more sophisticated interface:
-       notmuch.el file in this distribution.
-       If someone were to write a curses-based interface, or similar,
--      it might also be reasonable to buil on the "notmuch"
-+      it might also be reasonable to build on the "notmuch"
-       command-line interface.
-      2. Build on top of the notmuch library interface.
-@@ -67,4 +67,4 @@ still in development. We would appreciate any contributions to these
- efforts.
--      
-\ No newline at end of file
-+      
-diff --git a/gmime-filter-reply.h b/gmime-filter-reply.h
-index 41cbc13..b7cbc6b 100644
---- a/gmime-filter-reply.h
-+++ b/gmime-filter-reply.h
-@@ -40,7 +40,7 @@ typedef struct _GMimeFilterReplyClass GMimeFilterReplyClass;
-  * @saw_nl: previous char was a \n
-  * @saw_angle: previous char was a >
-  *
-- * A filter to insert/remove reply markers (lines begining with >)
-+ * A filter to insert/remove reply markers (lines beginning with >)
-  **/
- struct _GMimeFilterReply {
-       GMimeFilter parent_object;
-diff --git a/lib/database.cc b/lib/database.cc
-index 3c8d626..27597cf 100644
---- a/lib/database.cc
-+++ b/lib/database.cc
-@@ -180,7 +180,7 @@ notmuch_status_to_string (notmuch_status_t status)
-     case NOTMUCH_STATUS_TAG_TOO_LONG:
-       return "Tag value is too long (exceeds NOTMUCH_TAG_MAX)";
-     case NOTMUCH_STATUS_UNBALANCED_FREEZE_THAW:
--      return "Unblanced number of calls to notmuch_message_freeze/thaw";
-+      return "Unbalanced number of calls to notmuch_message_freeze/thaw";
-     default:
-     case NOTMUCH_STATUS_LAST_STATUS:
-       return "Unknown error status value";
-diff --git a/lib/index.cc b/lib/index.cc
-index 65b83b3..80df64b 100644
---- a/lib/index.cc
-+++ b/lib/index.cc
-@@ -198,7 +198,7 @@ _index_mime_part (notmuch_message_t *message,
-               if (i == 1)
-                   continue;
-               if (i > 1)
--                  fprintf (stderr, "Warning: Unexpected extra parts of mutlipart/signed. Indexing anyway.\n");
-+                  fprintf (stderr, "Warning: Unexpected extra parts of multipart/signed. Indexing anyway.\n");
-           }
-           _index_mime_part (message,
-                             g_mime_multipart_get_part (multipart, i));
-diff --git a/lib/message.cc b/lib/message.cc
-index a4b090b..1d6623f 100644
---- a/lib/message.cc
-+++ b/lib/message.cc
-@@ -144,7 +144,7 @@ _notmuch_message_create (const void *talloc_owner,
- }
- /* Create a new notmuch_message_t object for a specific message ID,
-- * (which may or may not already exist in the databas).
-+ * (which may or may not already exist in the database).
-  *
-  * Here, 'talloc owner' is an optional talloc context to which the new
-  * message will belong. This allows for the caller to not bother
-diff --git a/lib/messages.c b/lib/messages.c
-index a588f8f..2f7c283 100644
---- a/lib/messages.c
-+++ b/lib/messages.c
-@@ -47,7 +47,7 @@ _notmuch_message_list_create (const void *ctx)
-     return list;
- }
--/* Append 'node' (which can of course point to an aribtrarily long
-+/* Append 'node' (which can of course point to an arbitrarily long
-  * list of nodes) to the end of 'list'.
-  */
- void
-diff --git a/lib/notmuch-private.h b/lib/notmuch-private.h
-index 6036ce4..af82e58 100644
---- a/lib/notmuch-private.h
-+++ b/lib/notmuch-private.h
-@@ -235,7 +235,7 @@ notmuch_message_file_open (const char *filename);
- notmuch_message_file_t *
- _notmuch_message_file_open_ctx (void *ctx, const char *filename);
--/* Close a notmuch message preivously opened with notmuch_message_open. */
-+/* Close a notmuch message previously opened with notmuch_message_open. */
- void
- notmuch_message_file_close (notmuch_message_file_t *message);
-diff --git a/lib/notmuch.h b/lib/notmuch.h
-index 32b5332..384c177 100644
---- a/lib/notmuch.h
-+++ b/lib/notmuch.h
-@@ -222,7 +222,7 @@ notmuch_database_get_timestamp (notmuch_database_t *database,
- /* Add a new message to the given notmuch database.
-  *
-- * Here,'filename' should be a path relative to the the path of
-+ * Here,'filename' should be a path relative to the path of
-  * 'database' (see notmuch_database_get_path), or else should be an
-  * absolute filename with initial components that match the path of
-  * 'database'.
-@@ -258,7 +258,7 @@ notmuch_database_add_message (notmuch_database_t *database,
-                             const char *filename,
-                             notmuch_message_t **message);
--/* Find a message with the given messsage_id.
-+/* Find a message with the given message_id.
-  *
-  * If the database contains a message with the given message_id, then
-  * a new notmuch_message_t object is returned. The caller should call
-@@ -620,7 +620,7 @@ notmuch_messages_advance (notmuch_messages_t *messages);
- /* Destroy a notmuch_messages_t object.
-  *
-  * It's not strictly necessary to call this function. All memory from
-- * the notmuch_messages_t object will be reclaimed when the containg
-+ * the notmuch_messages_t object will be reclaimed when the containing
-  * query object is destroyed.
-  */
- void
-@@ -865,7 +865,7 @@ notmuch_tags_has_more (notmuch_tags_t *tags);
- /* Get the current tag from 'tags' as a string.
-  *
-  * Note: The returned string belongs to 'tags' and has a lifetime
-- * identical to it (and the query to which it utlimately belongs).
-+ * identical to it (and the query to which it ultimately belongs).
-  *
-  * See the documentation of notmuch_message_get_tags for example code
-  * showing how to iterate over a notmuch_tags_t object.
-@@ -884,7 +884,7 @@ notmuch_tags_advance (notmuch_tags_t *tags);
- /* Destroy a notmuch_tags_t object.
-  *
-  * It's not strictly necessary to call this function. All memory from
-- * the notmuch_tags_t object will be reclaimed when the containg
-+ * the notmuch_tags_t object will be reclaimed when the containing
-  * message or query objects are destroyed.
-  */
- void
-diff --git a/lib/sha1.c b/lib/sha1.c
-index ff4dd16..cc48108 100644
---- a/lib/sha1.c
-+++ b/lib/sha1.c
-@@ -43,7 +43,7 @@ _hex_of_sha1_digest (const unsigned char digest[SHA1_DIGEST_SIZE])
-     return result;
- }
--/* Create a hexadcimal string version of the SHA-1 digest of 'str'
-+/* Create a hexadecimal string version of the SHA-1 digest of 'str'
-  * (including its null terminating character).
-  *
-  * This function returns a newly allocated string which the caller
-diff --git a/lib/thread.cc b/lib/thread.cc
-index 4411d64..da58edc 100644
---- a/lib/thread.cc
-+++ b/lib/thread.cc
-@@ -190,7 +190,7 @@ _resolve_thread_relationships (unused (notmuch_thread_t *thread))
-  * subject line, the total count of messages, and all authors). The
-  * second search is for all messages that are in the thread and that
-  * also match the given query_string. This is to allow for a separate
-- * count of matched messages, and to allow a viewer to diplay these
-+ * count of matched messages, and to allow a viewer to display these
-  * messages differently.
-  *
-  * Here, 'ctx' is talloc context for the resulting thread object.
-diff --git a/notmuch-completion.bash b/notmuch-completion.bash
-index ad55f6d..cdad05d 100644
---- a/notmuch-completion.bash
-+++ b/notmuch-completion.bash
-@@ -1,4 +1,4 @@
--# Bash completion for notmutch
-+# Bash completion for notmuch
- #
- # Copyright ?? 2009 Carl Worth
- #
-diff --git a/notmuch-new.c b/notmuch-new.c
-index 83a05ba..5405a9f 100644
---- a/notmuch-new.c
-+++ b/notmuch-new.c
-@@ -303,7 +303,7 @@ add_files (notmuch_database_t *notmuch,
- /* XXX: This should be merged with the add_files function since it
-  * shares a lot of logic with it. */
--/* Recursively count all regular files in path and all sub-direcotries
-+/* Recursively count all regular files in path and all sub-directories
-  * of path.  The result is added to *count (which should be
-  * initialized to zero by the top-level caller before calling
-  * count_files). */
-@@ -469,7 +469,7 @@ notmuch_new_command (void *ctx,
-     if (elapsed > 1 && ! add_files_state.saw_read_only_directory) {
-       printf ("\nTip: If you have any sub-directories that are archives (that is,\n"
--              "they will never receive new mail), marking these directores as\n"
-+              "they will never receive new mail), marking these directories as\n"
-               "read-only (chmod u-w /path/to/dir) will make \"notmuch new\"\n"
-               "much more efficient (it won't even look in those directories).\n");
-     }
-diff --git a/notmuch-search.c b/notmuch-search.c
-index 8db09c7..ac81372 100644
---- a/notmuch-search.c
-+++ b/notmuch-search.c
-@@ -76,7 +76,7 @@ notmuch_search_command (void *ctx, int argc, char *argv[])
-     query_str = query_string_from_args (ctx, argc, argv);
-     if (query_str == NULL) {
--      fprintf (stderr, "Out of moemory.\n");
-+      fprintf (stderr, "Out of memory.\n");
-       return 1;
-     }
-diff --git a/notmuch.1 b/notmuch.1
-index 6c3d10f..86d5f59 100644
---- a/notmuch.1
-+++ b/notmuch.1
-@@ -60,7 +60,7 @@ archives, and will then proceed to build a database that indexes the
- mail to allow for fast search of the archive.
- This directory can contain any number of sub-directories and should
--primarily contain only files with indvidual email messages
-+primarily contain only files with individual email messages
- (eg. maildir or mh archives are perfect). If there are other,
- non-email files (such as indexes maintained by other email programs)
- then notmuch will do its best to detect those and ignore them.
-@@ -173,7 +173,7 @@ Constructs a reply template for a set of messages.
- See the documentation of
- .B search
--for deatils of the supported syntax of search terms.
-+for details of the supported syntax of search terms.
- To make replying to email easier,
- .B notmuch reply
-diff --git a/notmuch.el b/notmuch.el
-index 8894a8e..7e01ed6 100644
---- a/notmuch.el
-+++ b/notmuch.el
-@@ -205,7 +205,7 @@ Unlike builtin `next-line' this version accepts no arguments."
- (defun notmuch-show-mark-read-then-archive-thread ()
-   "Remove \"unread\" tag from each message, then archive and show next thread.
--Archive each message currrently shown by removing the \"unread\"
-+Archive each message currently shown by removing the \"unread\"
- and \"inbox\" tag from each. Then kill this buffer and show the
- next thread from the search from which this thread was originally
- shown.
-@@ -220,7 +220,7 @@ buffer."
- (defun notmuch-show-archive-thread ()
-   "Archive each message in thread, and show next thread from search.
--Archive each message currrently shown by removing the \"inbox\"
-+Archive each message currently shown by removing the \"inbox\"
- tag from each. Then kill this buffer and show the next thread
- from the search from which this thread was originally shown.
-@@ -340,7 +340,7 @@ there are no more unread messages past the current point."
-       (notmuch-show-next-message)))
- (defun notmuch-show-next-open-message ()
--  "Advance to the the next message which is not hidden.
-+  "Advance to the next message which is not hidden.
- If read messages are currently hidden, advance to the next unread
- message. Otherwise, advance to the next message."
-@@ -674,7 +674,7 @@ thread from that buffer can be show when done with this one)."
-       )))
- (defvar notmuch-search-authors-width 40
--  "Number of columns to use to diplay authors in a notmuch-search buffer.")
-+  "Number of columns to use to display authors in a notmuch-search buffer.")
- (defvar notmuch-search-mode-map
-   (let ((map (make-sparse-keymap)))
-@@ -910,7 +910,7 @@ the beginning of the buffer).
- This command toggles the sort order for the current search.
--Note that any fitlered searches created by
-+Note that any filtered searches created by
- `notmuch-search-filter' retain the search order of the parent
- search."
-   (interactive)
-diff --git a/show-message.c b/show-message.c
-index 79b02e2..38f5897 100644
---- a/show-message.c
-+++ b/show-message.c
-@@ -38,7 +38,7 @@ show_message_part (GMimeObject *part, int *part_count,
-               if (i == 1)
-                   continue;
-               if (i > 1)
--                  fprintf (stderr, "Warning: Unexpected extra parts of mutlipart/signed. Continuing.\n");
-+                  fprintf (stderr, "Warning: Unexpected extra parts of multipart/signed. Continuing.\n");
-           }
-           show_message_part (g_mime_multipart_get_part (multipart, i),
-                              part_count, show_part);
--- 
-1.6.5.2.433.g23cdb
-
-
diff --git a/test/corpus/cur/20:2, b/test/corpus/cur/20:2,
deleted file mode 100644 (file)
index f08a314..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-Date: Wed, 18 Nov 2009 00:20:59 +0100
-From: Adrian Perez de Castro <aperez@igalia.com>
-To: notmuch@notmuchmail.org
-Message-ID: <20091118002059.067214ed@hikari>
-Organization: Igalia
-X-Mailer: Claws Mail 3.7.3 (GTK+ 2.18.3; x86_64-redhat-linux-gnu)
-Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAAXNSR0IArs4c6QAAADBQTFRFBwcHFhYWKCgoNzc3SEhIV1dXaGhod3d3iIiIlpaWqKiouLi4x8fH2NjY5+fn/v7+rSjDkgAAAjVJREFUOE9l07tvE0EQwOHfrkV9O+eko7g701BBfECJsIigT2IpooIqaSiRUEB0REj00FBQgYSCkhry+gecUPJybJeIxLumTbilsH2PMNXufDOa3ZVW+1JkpbUmD/8+vXR3c7or4Gz93mH309Kz8/C9/RQge7VfhW/LW+PF8IkrQ7Z6OKmQr1tl+LU/yWP9mxJka9O88fZHPwf/7u0kLyCnX3I4fQhgjAgIfi+HHw5A1Y2ggIMcFKAEnRoL0M3BosI4TI2IATjuT8DvSNJoNNJgkIhxlr9TUHeSpDnfohlIrMBlU+BGmsZqfr69FMfGMw4NoG835+J62riWyjQ/uXlTQjNUIoYegMsBM0pCD8oDas7n4HQsBghXFxJTW42KDs+4XLfjsN0wOYgABqARjMKIHIaAQnmHjsI5Cvi9Cf6k03OoWBkpIP3Q7354+dEimFBKHbMP9oKjwfd9gbrxR5KDToczK4uPF8UgNomKU2GaENRi77zyDKICxKBS4xXYbONPMQMdYZTBwMiMWiUg9g6UJ3OBogzjV8E7sBVwyvfAOYdQhsABzuOxI1MGZbs98Q6Md5UOfbbR2R0eWOesrnRw5ajT6f60LrNhWIHZpBnUWv2s14ukArWWTqTes3YQxRXgFkcMu70TPYqqUBs0YwmO967OVIdTG4bY4a7WLaqgLm5vbHdH5np0Dri//fmg7y8scB4u3+zsuNlH0X+g19bby69b+TYH6isvns8VdQWgxj9tHP8AR5/hSdYqkwsAAAAASUVORK5CYII=
-Mime-Version: 1.0
-Subject: [notmuch] Introducing myself
-X-BeenThere: notmuch@notmuchmail.org
-X-Mailman-Version: 2.1.12
-Precedence: list
-List-Id: "Use and development of the notmuch mail system."
-       <notmuch.notmuchmail.org>
-List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,
-       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>
-List-Archive: <http://notmuchmail.org/pipermail/notmuch>
-List-Post: <mailto:notmuch@notmuchmail.org>
-List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>
-List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,
-       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>
-Content-Type: multipart/mixed; boundary="===============1167731900=="
-Sender: notmuch-bounces@notmuchmail.org
-Errors-To: notmuch-bounces@notmuchmail.org
-
---===============1167731900==
-Content-Type: multipart/signed; micalg=PGP-SHA1;
- boundary="Sig_/ayZz9m37AOMROJCyUudvXvZ"; protocol="application/pgp-signature"
-
---Sig_/ayZz9m37AOMROJCyUudvXvZ
-Content-Type: text/plain; charset=US-ASCII
-Content-Transfer-Encoding: quoted-printable
-
-
-Hello to all,
-
-I have just heard about Not Much today in some random Linux-related news
-site (LWN?), my name is Adrian Perez and I work as systems administrator
-(although I can do some code as well :P). I have always thought that the
-ideas behind Sup were great, but after some time using it, I got tired of
-the oddities that it has. I also do not like doing things like having to
-install Ruby just for reading and sorting mails. Some time ago I thought
-about doing something like Not Much and in fact I played a bit with the
-Python+Xapian and the Python+Whoosh combinations, because I find relaxing
-to code things in Python when I am not working and also it is installed
-by default on most distribution. I got to have some mailboxes indexed and
-basic searching working a couple of months ago. Lately I have been very
-busy and had no time for coding, and them... boom! Not Much appears -- and
-it is almost exactly what I was trying to do, but faster. I have been
-playing a bit with Not Much today, and I think it has potential.
-
-Also, I would like to share one idea I had in mind, that you might find
-interesting: One thing I have found very annoying is having to re-tag my
-mail when the indexes get b0rked (it happened a couple of times to me while
-using Sup), so I was planning to mails as read/unread and adding the tags
-not just to the index, but to the mail text itself, e.g. by adding a
-"X-Tags" header field or by reusing the "Keywords" one. This way, the index
-could be totally recreated by re-reading the mail directories, and this
-would also allow to a tools like OfflineIMAP [1] to get the mails into a
-local maildir, tagging and indexing the mails with the e-mail reader and
-then syncing back the messages with the "X-Tags" header to the IMAP server.
-This would allow to use the mail reader from a different computer and still
-have everything tagged finely.
-
-Best regards,
-
-
----
-[1] http://software.complete.org/software/projects/show/offlineimap
-
---=20
-Adrian Perez de Castro <aperez@igalia.com>
-Igalia - Free Software Engineering
-
---Sig_/ayZz9m37AOMROJCyUudvXvZ
-Content-Type: application/pgp-signature; name=signature.asc
-Content-Disposition: attachment; filename=signature.asc
-
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v2.0.13 (GNU/Linux)
-
-iEYEARECAAYFAksDL+AACgkQkcVZ2+TJEjtsuQCfXmilW8WpMQHCnwwJjRE1PWZy
-oFAAn3MmXC5sW7MvCFjs7ks6U16zgMEg
-=eL9p
------END PGP SIGNATURE-----
-
---Sig_/ayZz9m37AOMROJCyUudvXvZ--
-
---===============1167731900==
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Content-Disposition: inline
-
-_______________________________________________
-notmuch mailing list
-notmuch@notmuchmail.org
-http://notmuchmail.org/mailman/listinfo/notmuch
-
---===============1167731900==--
-
diff --git a/test/corpus/cur/21:2, b/test/corpus/cur/21:2,
deleted file mode 100644 (file)
index 7ff55cc..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-MIME-Version: 1.0
-Date: Tue, 17 Nov 2009 16:23:53 -0800
-Message-ID: <cf0c4d610911171623q3e27a0adx802e47039b57604b@mail.gmail.com>
-From: Alex Botero-Lowry <alex.boterolowry@gmail.com>
-To: notmuch@notmuchmail.org
-Content-Type: multipart/mixed; boundary=0016e64ca4d8f27a4804789a4139
-Subject: [notmuch] [PATCH] Error out if no query is supplied to search
-       instead of going into an infinite loop
-X-BeenThere: notmuch@notmuchmail.org
-X-Mailman-Version: 2.1.12
-Precedence: list
-List-Id: "Use and development of the notmuch mail system."
-       <notmuch.notmuchmail.org>
-List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,
-       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>
-List-Archive: <http://notmuchmail.org/pipermail/notmuch>
-List-Post: <mailto:notmuch@notmuchmail.org>
-List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>
-List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,
-       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>
-Sender: notmuch-bounces@notmuchmail.org
-Errors-To: notmuch-bounces@notmuchmail.org
-
---0016e64ca4d8f27a4804789a4139
-Content-Type: multipart/alternative; boundary=0016e64ca4d8f27a3604789a4137
-
---0016e64ca4d8f27a3604789a4137
-Content-Type: text/plain; charset=ISO-8859-1
-
-In this case error out when no query is supplied. There seems to be an
-infinite-loop casued by i think notmuch_query_search_threads having
-an exception:
-
-A Xapian exception occurred: Syntax: <expression> AND <expression>
-A Xapian exception occurred: Syntax: <expression> AND <expression>
-A Xapian exception occurred: Syntax: <expression> AND <expression>
-A Xapian exception occurred: Syntax: <expression> AND <expression>
-A Xapian exception occurred: Syntax: <expression> AND <expression>
-A Xapian exception occurred: Syntax: <expression> AND <expression>
-A Xapian exception occurred: Syntax: <expression> AND <expression>
-A Xapian exception occurred: Syntax: <expression> AND <expression>
-A Xapian exception occurred: Syntax: <expression> AND <expression>
-A Xapian exception occurred: Syntax: <expression> AND <expression>
-A Xapian exception occurred: Syntax: <expression> AND <expression>
-A Xapian exception occurred: Syntax: <expression> AND <expression>
-A Xapian exception occurred: Syntax: <expression> AND <expression>
-A Xapian exception occurred: Syntax: <expression> AND <expression>
-A Xapian exception occurred: Syntax: <expression> AND <expression>
-
-I'll look into that bug specifically a bit later.
-
-It might be better to do a usage instead of just throwing an error here?
-
-alex
-
---0016e64ca4d8f27a3604789a4137
-Content-Type: text/html; charset=ISO-8859-1
-
-In this case error out when no query is supplied. There seems to be an infinite-loop casued by i think notmuch_query_search_threads having<br>an exception:<br><br>A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>
-A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>
-A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>
-A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>
-A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>
-A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br>A Xapian exception occurred: Syntax: &lt;expression&gt; AND &lt;expression&gt;<br><br>I&#39;ll look into that bug specifically a bit later.<br>
-<br>It might be better to do a usage instead of just throwing an error here?<br><br>alex<br>
-
---0016e64ca4d8f27a3604789a4137--
---0016e64ca4d8f27a4804789a4139
-Content-Type: application/octet-stream; 
-       name="0001-Error-out-if-no-query-is-supplied-to-search-instead-.patch"
-Content-Disposition: attachment; 
-       filename="0001-Error-out-if-no-query-is-supplied-to-search-instead-.patch"
-Content-Transfer-Encoding: base64
-X-Attachment-Id: f_g25cms190
-
-RnJvbSAzZjk0MzFmNzRhNWZmNjZjODRjODY5YTNlMjZjMmJhZDQyYmVkMWIxIE1vbiBTZXAgMTcg
-MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgQm90ZXJvLUxvd3J5IDxhbGV4LmJvdGVyb2xv
-d3J5QGdtYWlsLmNvbT4KRGF0ZTogVHVlLCAxNyBOb3YgMjAwOSAxNjoyMDoyOCAtMDgwMApTdWJq
-ZWN0OiBbUEFUQ0hdIEVycm9yIG91dCBpZiBubyBxdWVyeSBpcyBzdXBwbGllZCB0byBzZWFyY2gg
-aW5zdGVhZCBvZiBnb2luZyBpbnRvIGFuIGluZmluaXRlIGxvb3AKCi0tLQogbm90bXVjaC1zZWFy
-Y2guYyB8ICAgIDUgKysrKysKIDEgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAwIGRl
-bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL25vdG11Y2gtc2VhcmNoLmMgYi9ub3RtdWNoLXNlYXJj
-aC5jCmluZGV4IDhkYjA5YzcuLmQ5NGZjY2QgMTAwNjQ0Ci0tLSBhL25vdG11Y2gtc2VhcmNoLmMK
-KysrIGIvbm90bXVjaC1zZWFyY2guYwpAQCAtNjYsNiArNjYsMTEgQEAgbm90bXVjaF9zZWFyY2hf
-Y29tbWFuZCAodm9pZCAqY3R4LCBpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgIGFyZ2MgLT0g
-aTsKICAgICBhcmd2ICs9IGk7CiAKKyAgICBpZiAoYXJnYyA9PSAwKSB7CisgICAgICAgIGZwcmlu
-dGYgKHN0ZGVyciwgIk5vIHF1ZXJ5IHByb3ZpZGVkXG4iKTsKKyAgICAgICAgcmV0dXJuIDE7Cisg
-ICAgfQorCiAgICAgY29uZmlnID0gbm90bXVjaF9jb25maWdfb3BlbiAoY3R4LCBOVUxMLCBOVUxM
-KTsKICAgICBpZiAoY29uZmlnID09IE5VTEwpCiAJcmV0dXJuIDE7Ci0tIAoxLjYuNS4yCgo=
---0016e64ca4d8f27a4804789a4139
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Content-Disposition: inline
-
-_______________________________________________
-notmuch mailing list
-notmuch@notmuchmail.org
-http://notmuchmail.org/mailman/listinfo/notmuch
-
---0016e64ca4d8f27a4804789a4139--
-
diff --git a/test/corpus/cur/22:2, b/test/corpus/cur/22:2,
deleted file mode 100644 (file)
index 08adada..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-Date: Tue, 17 Nov 2009 19:50:40 -0500
-From: Lars Kellogg-Stedman <lars@seas.harvard.edu>
-To: Keith Packard <keithp@keithp.com>
-Message-ID: <20091118005040.GA25380@dottiness.seas.harvard.edu>
-References: <20091117190054.GU3165@dottiness.seas.harvard.edu>
-       <87iqd9rn3l.fsf@vertex.dottedmag>
-       <20091117203301.GV3165@dottiness.seas.harvard.edu>
-       <yunaayketfm.fsf@aiko.keithp.com>
-MIME-Version: 1.0
-In-Reply-To: <yunaayketfm.fsf@aiko.keithp.com>
-User-Agent: Mutt/1.5.19 (2009-01-05)
-Cc: notmuch@notmuchmail.org
-Subject: Re: [notmuch] Working with Maildir storage?
-X-BeenThere: notmuch@notmuchmail.org
-X-Mailman-Version: 2.1.12
-Precedence: list
-List-Id: "Use and development of the notmuch mail system."
-       <notmuch.notmuchmail.org>
-List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,
-       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>
-List-Archive: <http://notmuchmail.org/pipermail/notmuch>
-List-Post: <mailto:notmuch@notmuchmail.org>
-List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>
-List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,
-       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>
-Content-Type: multipart/mixed; boundary="===============1483126515=="
-Sender: notmuch-bounces@notmuchmail.org
-Errors-To: notmuch-bounces@notmuchmail.org
-
-
---===============1483126515==
-Content-Type: multipart/signed; micalg=pgp-sha256;
-       protocol="application/pgp-signature"; boundary="9amGYk9869ThD9tj"
-Content-Disposition: inline
-
-
---9amGYk9869ThD9tj
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-Content-Transfer-Encoding: quoted-printable
-
-> I've also pushed a slightly more complicated (and complete) fix to my
-> private notmuch repository
-
-The version of lib/messages.cc in your repo doesn't build because it's
-missing "#include <stdint.h>" (for the uint32_t on line 466).
-
---=20
-Lars Kellogg-Stedman <lars@seas.harvard.edu>
-Senior Technologist, Computing and Information Technology
-Harvard University School of Engineering and Applied Sciences
-
-
---9amGYk9869ThD9tj
-Content-Type: application/pgp-signature
-Content-Disposition: inline
-
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.9 (GNU/Linux)
-
-iQEcBAEBCAAGBQJLA0TgAAoJENdGlQYxQazYsG0IAJ1t9h4Q3ma8z8ejeKR22Xh0
-WcuRX2x9yEXy/+aG9W7Mot0mqUQCiLdmHM/2h5N9BFHyJvfOUf8lmssrJ5OS/kp5
-j7FIx3GUELBmEZqFUPjRSQPk1hZURYdRsloKkrbQ2kAivjjb50zAAQ8Av4Cgj6cS
-3HvNNmeVfJt1NS75vm+/wn48M8Vrcdv4gvNlSOhgFOixknvRoxSyNDOHYBKvHnSV
-2HnO0GzhAQzDZAwdHBzJtb8vRmglrH33TVdrE7OW+sojYB3Wyz8r9+HIt8Q8ovzX
-nQ8p0Nf5DlF7tye3JYo0EeNm5EQJ4q0YyVYInhmtpi3A5Cyu50GcB/GZ5Sd6ajo=
-=WULe
------END PGP SIGNATURE-----
-
---9amGYk9869ThD9tj--
-
---===============1483126515==
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Content-Disposition: inline
-
-_______________________________________________
-notmuch mailing list
-notmuch@notmuchmail.org
-http://notmuchmail.org/mailman/listinfo/notmuch
-
---===============1483126515==--
-
diff --git a/test/corpus/cur/23:2, b/test/corpus/cur/23:2,
deleted file mode 100644 (file)
index 9bb62d7..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-Date: Tue, 17 Nov 2009 19:58:29 -0500
-From: Lars Kellogg-Stedman <lars@seas.harvard.edu>
-To: notmuch <notmuch@notmuchmail.org>
-Message-ID: <20091118005829.GB25380@dottiness.seas.harvard.edu>
-MIME-Version: 1.0
-User-Agent: Mutt/1.5.19 (2009-01-05)
-Subject: [notmuch] "notmuch help" outputs to stderr?
-X-BeenThere: notmuch@notmuchmail.org
-X-Mailman-Version: 2.1.12
-Precedence: list
-List-Id: "Use and development of the notmuch mail system."
-       <notmuch.notmuchmail.org>
-List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,
-       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>
-List-Archive: <http://notmuchmail.org/pipermail/notmuch>
-List-Post: <mailto:notmuch@notmuchmail.org>
-List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>
-List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,
-       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>
-Content-Type: multipart/mixed; boundary="===============1359248349=="
-Sender: notmuch-bounces@notmuchmail.org
-Errors-To: notmuch-bounces@notmuchmail.org
-
-
---===============1359248349==
-Content-Type: multipart/signed; micalg=pgp-sha256;
-       protocol="application/pgp-signature"; boundary="L6iaP+gRLNZHKoI4"
-Content-Disposition: inline
-
-
---L6iaP+gRLNZHKoI4
-Content-Type: multipart/mixed; boundary="z6Eq5LdranGa6ru8"
-Content-Disposition: inline
-
-
---z6Eq5LdranGa6ru8
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-Content-Transfer-Encoding: quoted-printable
-
-I'm just noticing that 'notmuch help ...' outputs to stderr, which
-isn't terribly intuitive.  For example, the obvious invocation:
-
-  notmuch help | less
-
-=2E..isn't terribly helpful.
-
-I've attached a patch that lets usage() take a FILE * argument so that
-you can output to stderr in response to usage errors, and stdout in
-response to an explicit request.
-
---=20
-Lars Kellogg-Stedman <lars@seas.harvard.edu>
-Senior Technologist, Computing and Information Technology
-Harvard University School of Engineering and Applied Sciences
-
-
---z6Eq5LdranGa6ru8
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: attachment; filename="notmuch-help.patch"
-Content-Transfer-Encoding: quoted-printable
-
-diff --git a/notmuch.c b/notmuch.c
-index c47e640..a35cb99 100644
---- a/notmuch.c
-+++ b/notmuch.c
-@@ -157,23 +157,23 @@ command_t commands[] =3D {
- };
-=20
- static void
--usage (void)
-+usage (FILE *out)
- {
-     command_t *command;
-     unsigned int i;
-=20
--    fprintf (stderr, "Usage: notmuch <command> [args...]\n");
--    fprintf (stderr, "\n");
--    fprintf (stderr, "Where <command> and [args...] are as follows:\n");
--    fprintf (stderr, "\n");
-+    fprintf (out, "Usage: notmuch <command> [args...]\n");
-+    fprintf (out, "\n");
-+    fprintf (out, "Where <command> and [args...] are as follows:\n");
-+    fprintf (out, "\n");
-=20
-     for (i =3D 0; i < ARRAY_SIZE (commands); i++) {
-       command =3D &commands[i];
-=20
--      fprintf (stderr, "\t%s\t%s\n\n", command->name, command->summary);
-+      fprintf (out, "\t%s\t%s\n\n", command->name, command->summary);
-     }
-=20
--    fprintf (stderr, "Use \"notmuch help <command>\" for more details on e=
-ach command.\n\n");
-+    fprintf (out, "Use \"notmuch help <command>\" for more details on each=
- command.\n\n");
- }
-=20
- static int
-@@ -183,8 +183,8 @@ notmuch_help_command (unused (void *ctx), int argc, cha=
-r *argv[])
-     unsigned int i;
-=20
-     if (argc =3D=3D 0) {
--      fprintf (stderr, "The notmuch mail system.\n\n");
--      usage ();
-+      fprintf (stdout, "The notmuch mail system.\n\n");
-+      usage (stdout);
-       return 0;
-     }
-=20
-
---z6Eq5LdranGa6ru8--
-
---L6iaP+gRLNZHKoI4
-Content-Type: application/pgp-signature
-Content-Disposition: inline
-
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.9 (GNU/Linux)
-
-iQEcBAEBCAAGBQJLA0a1AAoJENdGlQYxQazYr78IAJtqTWIpBqSdOWqTzt/r4XNn
-KJ5mWAoNfq4H+3kx3xoWOFYS7qAYeJoHQWCDbMdb+zEXvPX6hMFn9+OxRN+N5FdQ
-uxGTugSG9xSsK28oGDCQUtr5uheo+tH0jygPjI+LTD97vjUYS4K2qzhLGFJmpLcj
-1akMJXM0gSdPZT8dJyjxvC15pgboLspE4+b6jexXmd4UoFvXgqvjkYHeV4Wk+s0L
-xu+HkCGXL9WHYc3t171fFAru4Zd1AUxFQl4BZ2Y+OqRZUrD28Mtz3zGQxbJQoifl
-JFrgPAWioLN71SkVq/y+efjvGSl0osPpKU5dftMmyY1zV7k7mMlO08ZSJU+wANA=
-=Iijt
------END PGP SIGNATURE-----
-
---L6iaP+gRLNZHKoI4--
-
---===============1359248349==
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Content-Disposition: inline
-
-_______________________________________________
-notmuch mailing list
-notmuch@notmuchmail.org
-http://notmuchmail.org/mailman/listinfo/notmuch
-
---===============1359248349==--
-
diff --git a/test/corpus/cur/24:2, b/test/corpus/cur/24:2,
deleted file mode 100644 (file)
index c800020..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-Return-path: <notmuch-bounces@notmuchmail.org>
-Envelope-to: cworth@localhost
-Delivery-date: Wed, 18 Nov 2009 01:43:47 -0800
-Received: from yoom.home.cworth.org ([127.0.0.1])
-       by yoom.home.cworth.org with esmtp (Exim 4.69)
-       (envelope-from <notmuch-bounces@notmuchmail.org>)
-       id 1NAgpH-0005Ab-20
-       for cworth@localhost; Wed, 18 Nov 2009 01:27:47 -0800
-X-Original-To: cworth@cworth.org
-Delivered-To: cworth@cworth.org
-Received: from olra.theworths.org [82.165.184.25]
-       by yoom.home.cworth.org with IMAP (fetchmail-6.3.9-rc2)
-       for <cworth@localhost> (single-drop); Wed, 18 Nov 2009 01:27:47 -0800 (PST)
-Received: from localhost (localhost [127.0.0.1])
-       by olra.theworths.org (Postfix) with ESMTP id 12248431FC3
-       for <cworth@cworth.org>; Tue, 17 Nov 2009 17:01:22 -0800 (PST)
-X-Virus-Scanned: Debian amavisd-new at olra.theworths.org
-X-Spam-Flag: NO
-X-Spam-Score: -6.17
-X-Spam-Level: 
-X-Spam-Status: No, score=-6.17 tagged_above=-999 required=2 tests=[AWL=0.429,
-       BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4] autolearn=unavailable
-Received: from olra.theworths.org ([127.0.0.1])
-       by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)
-       with ESMTP id TmBdVd1i-Wjb; Tue, 17 Nov 2009 17:01:20 -0800 (PST)
-Received: from olra.theworths.org (localhost [127.0.0.1])
-       by olra.theworths.org (Postfix) with ESMTP id AF876431FBC;
-       Tue, 17 Nov 2009 17:01:20 -0800 (PST)
-X-Original-To: notmuch@notmuchmail.org
-Delivered-To: notmuch@notmuchmail.org
-Received: from localhost (localhost [127.0.0.1])
-       by olra.theworths.org (Postfix) with ESMTP id 75784431FBC
-       for <notmuch@notmuchmail.org>; Tue, 17 Nov 2009 17:01:19 -0800 (PST)
-X-Virus-Scanned: Debian amavisd-new at olra.theworths.org
-Received: from olra.theworths.org ([127.0.0.1])
-       by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)
-       with ESMTP id IoYHzHoKBskU for <notmuch@notmuchmail.org>;
-       Tue, 17 Nov 2009 17:01:18 -0800 (PST)
-Received: from smtp-outbound.seas.harvard.edu (smtp-outbound.seas.harvard.edu
-       [140.247.51.171])
-       by olra.theworths.org (Postfix) with ESMTP id 7E033431FAE
-       for <notmuch@notmuchmail.org>; Tue, 17 Nov 2009 17:01:18 -0800 (PST)
-Received: from dottiness.seas.harvard.edu (dottiness.seas.harvard.edu
-       [140.247.52.224])
-       by smtp-outbound.seas.harvard.edu (8.13.8/8.13.8) with SMTP id
-       nAI11Gkj008772
-       for <notmuch@notmuchmail.org>; Tue, 17 Nov 2009 20:01:16 -0500
-Received: by dottiness.seas.harvard.edu (sSMTP sendmail emulation);
-       Tue, 17 Nov 2009 20:01:16 -0500
-Date: Tue, 17 Nov 2009 20:01:16 -0500
-From: Lars Kellogg-Stedman <lars@seas.harvard.edu>
-To: notmuch <notmuch@notmuchmail.org>
-Message-ID: <20091118010116.GC25380@dottiness.seas.harvard.edu>
-References: <20091118005829.GB25380@dottiness.seas.harvard.edu>
-MIME-Version: 1.0
-In-Reply-To: <20091118005829.GB25380@dottiness.seas.harvard.edu>
-User-Agent: Mutt/1.5.19 (2009-01-05)
-Subject: Re: [notmuch] "notmuch help" outputs to stderr?
-X-BeenThere: notmuch@notmuchmail.org
-X-Mailman-Version: 2.1.12
-Precedence: list
-List-Id: "Use and development of the notmuch mail system."
-       <notmuch.notmuchmail.org>
-List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,
-       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>
-List-Archive: <http://notmuchmail.org/pipermail/notmuch>
-List-Post: <mailto:notmuch@notmuchmail.org>
-List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>
-List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,
-       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>
-Content-Type: multipart/mixed; boundary="===============0848253760=="
-Sender: notmuch-bounces@notmuchmail.org
-Errors-To: notmuch-bounces@notmuchmail.org
-
-
---===============0848253760==
-Content-Type: multipart/signed; micalg=pgp-sha256;
-       protocol="application/pgp-signature"; boundary="ZInfyf7laFu/Kiw7"
-Content-Disposition: inline
-
-
---ZInfyf7laFu/Kiw7
-Content-Type: multipart/mixed; boundary="KdquIMZPjGJQvRdI"
-Content-Disposition: inline
-
-
---KdquIMZPjGJQvRdI
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-Content-Transfer-Encoding: quoted-printable
-
-> I've attached a patch that lets usage() take a FILE * argument so that
-> you can output to stderr in response to usage errors, and stdout in
-> response to an explicit request.
-
-Whoops, missed a couple of stderr's in that last patch.  New one
-attached.
-
---=20
-Lars Kellogg-Stedman <lars@seas.harvard.edu>
-Senior Technologist, Computing and Information Technology
-Harvard University School of Engineering and Applied Sciences
-
-
---KdquIMZPjGJQvRdI
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: attachment; filename="notmuch-help.patch"
-Content-Transfer-Encoding: quoted-printable
-
-diff --git a/notmuch.c b/notmuch.c
-index c47e640..446c810 100644
---- a/notmuch.c
-+++ b/notmuch.c
-@@ -157,23 +157,23 @@ command_t commands[] =3D {
- };
-=20
- static void
--usage (void)
-+usage (FILE *out)
- {
-     command_t *command;
-     unsigned int i;
-=20
--    fprintf (stderr, "Usage: notmuch <command> [args...]\n");
--    fprintf (stderr, "\n");
--    fprintf (stderr, "Where <command> and [args...] are as follows:\n");
--    fprintf (stderr, "\n");
-+    fprintf (out, "Usage: notmuch <command> [args...]\n");
-+    fprintf (out, "\n");
-+    fprintf (out, "Where <command> and [args...] are as follows:\n");
-+    fprintf (out, "\n");
-=20
-     for (i =3D 0; i < ARRAY_SIZE (commands); i++) {
-       command =3D &commands[i];
-=20
--      fprintf (stderr, "\t%s\t%s\n\n", command->name, command->summary);
-+      fprintf (out, "\t%s\t%s\n\n", command->name, command->summary);
-     }
-=20
--    fprintf (stderr, "Use \"notmuch help <command>\" for more details on e=
-ach command.\n\n");
-+    fprintf (out, "Use \"notmuch help <command>\" for more details on each=
- command.\n\n");
- }
-=20
- static int
-@@ -183,8 +183,8 @@ notmuch_help_command (unused (void *ctx), int argc, cha=
-r *argv[])
-     unsigned int i;
-=20
-     if (argc =3D=3D 0) {
--      fprintf (stderr, "The notmuch mail system.\n\n");
--      usage ();
-+      fprintf (stdout, "The notmuch mail system.\n\n");
-+      usage (stdout);
-       return 0;
-     }
-=20
-@@ -192,8 +192,8 @@ notmuch_help_command (unused (void *ctx), int argc, cha=
-r *argv[])
-       command =3D &commands[i];
-=20
-       if (strcmp (argv[0], command->name) =3D=3D 0) {
--          fprintf (stderr, "Help for \"notmuch %s\":\n\n", argv[0]);
--          fprintf (stderr, "\t%s\t%s\n\n%s\n\n", command->name,
-+          fprintf (stdout, "Help for \"notmuch %s\":\n\n", argv[0]);
-+          fprintf (stdout, "\t%s\t%s\n\n%s\n\n", command->name,
-                    command->summary, command->documentation);
-           return 0;
-       }
-
---KdquIMZPjGJQvRdI--
-
---ZInfyf7laFu/Kiw7
-Content-Type: application/pgp-signature
-Content-Disposition: inline
-
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.9 (GNU/Linux)
-
-iQEcBAEBCAAGBQJLA0dcAAoJENdGlQYxQazY4nIIAIBCds86/uTmnouvyoPruUUR
-Bg5mXcnjuopz1Nwotl9s9U5sGeZuZngxyEvDz1Z1aTEjwab8ndNTf1xCwIoqBs+l
-i/sc4nPYubLdy1Ab/84DKVtCSbj+v5rtqhegwUWV7S1BY7t8dKNPNv7YBg7P0Azs
-6s3CUxDV5eJCcxCGxxWHH8JDKRf7rDs6vzDwyPWLxlg1Xb1lEM/sRgPCKiShPdO3
-Ak2hECusjskALhSDYX8/FLMd9HwLBC13sfWuSi/pHUAIOI2jru2p5sXrVSlTnFIJ
-fiMbPhKWiEaJj2kmm4pRwAhbTWp/J8ZvXWp0AyosxXQhQUWqujiyxgfiXS70SdQ=
-=t3Yc
------END PGP SIGNATURE-----
-
---ZInfyf7laFu/Kiw7--
-
---===============0848253760==
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Content-Disposition: inline
-
-_______________________________________________
-notmuch mailing list
-notmuch@notmuchmail.org
-http://notmuchmail.org/mailman/listinfo/notmuch
-
---===============0848253760==--
-
diff --git a/test/corpus/cur/25:2, b/test/corpus/cur/25:2,
deleted file mode 100644 (file)
index 7378f82..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-From: "Stewart Smith" <stewart@flamingspork.com>
-To: notmuch@notmuchmail.org
-Date: Wed, 18 Nov 2009 12:05:53 +1100
-Subject: [notmuch] [PATCH] Fix linking with gcc to use g++ to link in C++
-       libs.
-Message-ID: <1258506353-20352-1-git-send-email-stewart@flamingspork.com>
-
-Previously, Ubuntu 9.10, gcc 4.4.1 was getting:
-
-ccache gcc `pkg-config --libs glib-2.0 gmime-2.4 talloc` `xapian-config --libs` notmuch.o notmuch-config.o notmuch-dump.o notmuch-new.o notmuch-reply.o notmuch-restore.o notmuch-search.o notmuch-setup.o notmuch-show.o notmuch-tag.o notmuch-time.o gmime-filter-reply.o query-string.o show-message.o lib/notmuch.a -o notmuch
-/usr/bin/ld: lib/notmuch.a(database.o): in function global constructors keyed to BOOLEAN_PREFIX_INTERNAL:database.cc(.text+0x3a): error: undefined reference to 'std::ios_base::Init::Init()'
----
- Makefile.local |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/Makefile.local b/Makefile.local
-index f824bed..dbd3e20 100644
---- a/Makefile.local
-+++ b/Makefile.local
-@@ -18,7 +18,7 @@ notmuch_client_srcs =                \
- notmuch_client_modules = $(notmuch_client_srcs:.c=.o)
- notmuch: $(notmuch_client_modules) lib/notmuch.a
--      $(CC) $(LDFLAGS) $^ -o $@
-+      $(CXX) $(LDFLAGS) $^ -o $@
- notmuch.1.gz:
-       gzip --stdout notmuch.1 > notmuch.1.gz
--- 
-1.6.3.3
-
-
diff --git a/test/corpus/cur/26:2, b/test/corpus/cur/26:2,
deleted file mode 100644 (file)
index f3c5f53..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-From: "Stewart Smith" <stewart@flamingspork.com>
-To: notmuch@notmuchmail.org
-Date: Wed, 18 Nov 2009 12:56:40 +1100
-Subject: [notmuch] [PATCH 2/2] Read mail directory in inode number order
-Message-ID: <1258509400-32511-1-git-send-email-stewart@flamingspork.com>
-
-This gives a rather decent reduction in number of seeks required when
-reading a Maildir that isn't in pagecache.
-
-Most filesystems give some locality on disk based on inode numbers.
-In ext[234] this is the inode tables, in XFS groups of sequential inode
-numbers are together on disk and the most significant bits indicate
-allocation group (i.e inode 1,000,000 is always after inode 1,000).
-
-With this patch, we read in the whole directory, sort by inode number
-before stat()ing the contents.
-
-Ideally, directory is sequential and then we make one scan through the
-file system stat()ing.
-
-Since the universe is not ideal, we'll probably seek during reading the
-directory and a fair bit while reading the inodes themselves.
-
-However... with readahead, and stat()ing in inode order, we should be
-in the best place possible to hit the cache.
-
-In a (not very good) benchmark of "how long does it take to find the first
-15,000 messages in my Maildir after 'echo 3 > /proc/sys/vm/drop_caches'",
-this patch consistently cut at least 8 seconds off the scan time.
-
-Without patch: 50 seconds
-With patch: 38-42 seconds.
-
-(I did this in a previous maildir reading project and saw large improvements too)
----
- notmuch-new.c |   32 +++++++++++++++-----------------
- 1 files changed, 15 insertions(+), 17 deletions(-)
-
-diff --git a/notmuch-new.c b/notmuch-new.c
-index 83a05ba..11fad8c 100644
---- a/notmuch-new.c
-+++ b/notmuch-new.c
-@@ -73,6 +73,11 @@ add_files_print_progress (add_files_state_t *state)
-     fflush (stdout);
- }
-+static int ino_cmp(const struct dirent **a, const struct dirent **b)
-+{
-+  return ((*a)->d_ino < (*b)->d_ino)? -1: 1;
-+}
-+
- /* Examine 'path' recursively as follows:
-  *
-  *   o Ask the filesystem for the mtime of 'path' (path_mtime)
-@@ -100,13 +105,12 @@ add_files_recursive (notmuch_database_t *notmuch,
-                    add_files_state_t *state)
- {
-     DIR *dir = NULL;
--    struct dirent *e, *entry = NULL;
--    int entry_length;
--    int err;
-+    struct dirent *entry = NULL;
-     char *next = NULL;
-     time_t path_mtime, path_dbtime;
-     notmuch_status_t status, ret = NOTMUCH_STATUS_SUCCESS;
-     notmuch_message_t *message = NULL;
-+    struct dirent **namelist = NULL;
-     /* If we're told to, we bail out on encountering a read-only
-      * directory, (with this being a clear clue from the user to
-@@ -122,31 +126,23 @@ add_files_recursive (notmuch_database_t *notmuch,
-     path_mtime = st->st_mtime;
-     path_dbtime = notmuch_database_get_timestamp (notmuch, path);
-+    int n_entries= scandir(path, &namelist, 0, ino_cmp);
--    dir = opendir (path);
--    if (dir == NULL) {
-+    if (n_entries == -1) {
-       fprintf (stderr, "Error opening directory %s: %s\n",
-                path, strerror (errno));
-       ret = NOTMUCH_STATUS_FILE_ERROR;
-       goto DONE;
-     }
--    entry_length = offsetof (struct dirent, d_name) +
--      pathconf (path, _PC_NAME_MAX) + 1;
--    entry = malloc (entry_length);
-+    int i=0;
-     while (!interrupted) {
--      err = readdir_r (dir, entry, &e);
--      if (err) {
--          fprintf (stderr, "Error reading directory: %s\n",
--                   strerror (errno));
--          ret = NOTMUCH_STATUS_FILE_ERROR;
--          goto DONE;
--      }
--
--      if (e == NULL)
-+      if (i == n_entries)
-           break;
-+        entry= namelist[i++];
-+
-       /* If this directory hasn't been modified since the last
-        * add_files, then we only need to look further for
-        * sub-directories. */
-@@ -243,6 +239,8 @@ add_files_recursive (notmuch_database_t *notmuch,
-       free (entry);
-     if (dir)
-       closedir (dir);
-+    if (namelist)
-+      free (namelist);
-     return ret;
- }
--- 
-1.6.3.3
-
-
diff --git a/test/corpus/cur/27:2, b/test/corpus/cur/27:2,
deleted file mode 100644 (file)
index 7f0f045..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-From: "Keith Packard" <keithp@keithp.com>
-To: notmuch@notmuchmail.org
-Date: Tue, 17 Nov 2009 17:59:49 -0800
-Subject: [notmuch] New to the list
-In-Reply-To: <1258498485-sup-142@elly>
-References: <1258498485-sup-142@elly>
-Message-ID: <yun3a4cegoa.fsf@aiko.keithp.com>
-
-On Tue, 17 Nov 2009 23:57:18 +0100, Israel Herraiz <isra at herraiz.org> wrote:
-
-> "Not much" sounds interesting, and I wonder whether it could be
-> integrated with the views of Sup (inbox, threads, etc). So I have
-> subscribed to the list to keep an eye on what's going on here.
-
-We've tried to clone much of the sup UI inside emacs, including the
-inbox and threaded message presentation. Of course, we had to "improve"
-it a bit, as much due to the differences between curses and emacs as due
-to personal preferences...
-
--keith
-
diff --git a/test/corpus/cur/28:2, b/test/corpus/cur/28:2,
deleted file mode 100644 (file)
index 83ce01b..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-From: "Keith Packard" <keithp@keithp.com>
-To: notmuch@notmuchmail.org
-Date: Tue, 17 Nov 2009 18:03:17 -0800
-Subject: [notmuch] Introducing myself
-In-Reply-To: <20091118002059.067214ed@hikari>
-References: <20091118002059.067214ed@hikari>
-Message-ID: <yun1vjwegii.fsf@aiko.keithp.com>
-
-On Wed, 18 Nov 2009 00:20:59 +0100, Adrian Perez de Castro <aperez at igalia.com> wrote:
-
-> Some time ago I thought
-> about doing something like Not Much and in fact I played a bit with the
-> Python+Xapian and the Python+Whoosh combinations, because I find relaxing
-> to code things in Python when I am not working and also it is installed
-> by default on most distribution. I got to have some mailboxes indexed and
-> basic searching working a couple of months ago.
-
-Sup certainly started a lot of people thinking...
-
-> Also, I would like to share one idea I had in mind, that you might find
-> interesting: One thing I have found very annoying is having to re-tag my
-> mail when the indexes get b0rked (it happened a couple of times to me while
-> using Sup), so I was planning to mails as read/unread and adding the tags
-> not just to the index, but to the mail text itself, e.g. by adding a
-> "X-Tags" header field or by reusing the "Keywords" one.
-
-Easier than that, notmuch (and sup too), provide a 'dump' command which
-just lists all of the message IDs and their associated tags. Makes
-saving tags easy and doesn't involve rewriting messages. I do this once
-a day just before my computer is backed up to an external drive.
-
-If the index is destroyed, you can reindex the messages and then reapply
-all of the tags with 'notmuch restore'.
-
---
-keith.packard at intel.com
-
-
diff --git a/test/corpus/foo/06:2, b/test/corpus/foo/06:2,
new file mode 100644 (file)
index 0000000..3baad49
--- /dev/null
@@ -0,0 +1,36 @@
+From: "Carl Worth" <cworth@cworth.org>
+To: notmuch@notmuchmail.org
+Date: Tue, 17 Nov 2009 12:19:24 -0800
+Subject: [notmuch] preliminary FreeBSD support
+In-Reply-To: <cf0c4d610911171136h1713aa59w9cf9aa31f052ad0a@mail.gmail.com>
+References: <cf0c4d610911171136h1713aa59w9cf9aa31f052ad0a@mail.gmail.com>
+Message-ID: <87lji4lx9v.fsf@yoom.home.cworth.org>
+
+On Tue, 17 Nov 2009 11:36:14 -0800, Alex Botero-Lowry <alex.boterolowry at gmail.com> wrote:
+> I saw the announcement this morning, and was very excited, as I had been
+> hoping sup would be turned into a library,
+> since I like the concept more than the UI (I'd rather an emacs interface).
+
+Hi Alex,
+
+That's great! It's good to hear that there are like-minded people out
+there. I hope that Notmuch will be useful for you.
+
+> I did a preliminary compile which worked out fine, but
+> sysconf(_SC_SC_GETPW_R_SIZE_MAX) returns -1 on
+> FreeBSD, so notmuch_config_open segfaulted.
+> 
+> Attached is a patch that supplies a default buffer size of 64 in cases where
+> -1 is returned.
+
+Thanks for the patch. As we discussed in IRC[*], we should probably
+do the correct thing and check for ERANGE and loop as necessary (even if
+sysconf returns a positive value). Example code here:
+
+http://www.opengroup.org/austin/docs/austin_328.txt
+
+-Carl
+
+[*] #notmuch on irc.freenode.net for those who didn't just guess that
+already, (and I'll add that to the website soon).
+
diff --git a/test/corpus/foo/baz/11:2, b/test/corpus/foo/baz/11:2,
new file mode 100644 (file)
index 0000000..c0701de
--- /dev/null
@@ -0,0 +1,27 @@
+From: "Keith Packard" <keithp@keithp.com>
+To: notmuch@notmuchmail.org
+Date: Tue, 17 Nov 2009 13:15:25 -0800
+Subject: [notmuch] [PATCH 1/2] Close message file after parsing message
+ headers
+In-Reply-To: <87lji5cbwo.fsf@yoom.home.cworth.org>
+References: <1258471718-6781-1-git-send-email-dottedmag@dottedmag.net>
+       <87lji5cbwo.fsf@yoom.home.cworth.org>
+Message-ID: <yunbpj0etua.fsf@aiko.keithp.com>
+
+On Tue, 17 Nov 2009 09:13:27 -0800, Carl Worth <cworth at cworth.org> wrote:
+
+> I didn't apply Keith's fix yet, because I think I'd rather just fix the
+> indexer to store the In-Reply-To header in a separate term prefix from
+> the term used for the References header[*]. That will then let us lookup
+> the in-reply-to value later for thread constructions without having to
+> open the original email file at all.
+
+Threading the message also involves displaying the from and to contents,
+which requires opening the message file. The alternative to the fix I
+provided is to just parse all of the message headers when first opening
+the message; it could then be immediately closed and the hash referred
+to for all header data. Given the choice, just having the caller say
+when it has finished with a message is probably a reasonable option...
+
+-keith
+
diff --git a/test/corpus/foo/baz/12:2, b/test/corpus/foo/baz/12:2,
new file mode 100644 (file)
index 0000000..fbc604c
--- /dev/null
@@ -0,0 +1,27 @@
+From: "Keith Packard" <keithp@keithp.com>
+To: notmuch@notmuchmail.org
+Date: Tue, 17 Nov 2009 13:24:13 -0800
+Subject: [notmuch] Working with Maildir storage?
+In-Reply-To: <20091117203301.GV3165@dottiness.seas.harvard.edu>
+References: <20091117190054.GU3165@dottiness.seas.harvard.edu>
+       <87iqd9rn3l.fsf@vertex.dottedmag>
+       <20091117203301.GV3165@dottiness.seas.harvard.edu>
+Message-ID: <yunaayketfm.fsf@aiko.keithp.com>
+
+On Tue, 17 Nov 2009 15:33:01 -0500, Lars Kellogg-Stedman <lars at seas.harvard.edu> wrote:
+> > See the patch just posted here.
+
+I've also pushed a slightly more complicated (and complete) fix to my
+private notmuch repository
+
+git://keithp.com/git/notmuch
+
+> Is the list archived anywhere?
+
+Oops. Looks like Carl's mail server is broken. He's traveling to
+Barcelona today and so it won't get fixed for a while.
+
+Thanks to everyone for trying out notmuch!
+
+-keith
+
diff --git a/test/corpus/foo/baz/cur/13:2, b/test/corpus/foo/baz/cur/13:2,
new file mode 100644 (file)
index 0000000..03cb374
--- /dev/null
@@ -0,0 +1,178 @@
+From: "Keith Packard" <keithp@keithp.com>
+To: notmuch@notmuchmail.org
+Date: Tue, 17 Nov 2009 13:32:45 -0800
+Subject: [notmuch] [PATCH] Make notmuch-show 'X' (and 'x') commands remove
+       inbox (and unread) tags
+Message-ID: <1258493565-13508-1-git-send-email-keithp@keithp.com>
+
+When closing a thread view, mark the thread as archived by removing
+the "inbox" tag, and for the 'x' variant, the "unread" tag as well,
+then kill the buffer and update the search window view as well.
+
+This makes 'x' much the same as 'a', but instead of taking you to the
+next message, it takes you back to the search window instead.
+
+Signed-off-by: Keith Packard <keithp at keithp.com>
+---
+ notmuch.el |   86 ++++++++++++++++++++++++++++++++++++++++++++++-------------
+ 1 files changed, 67 insertions(+), 19 deletions(-)
+
+diff --git a/notmuch.el b/notmuch.el
+index 638d49d..7b0d72c 100644
+--- a/notmuch.el
++++ b/notmuch.el
+@@ -31,8 +31,8 @@
+     ; Will be much preferable to switch to direct manipulation for
+     ; toggling visibility of these components. Probably using
+     ; overlays-at to query and manipulate the current overlay.
+-    (define-key map "a" 'notmuch-show-archive-thread)
+-    (define-key map "A" 'notmuch-show-mark-read-then-archive-thread)
++    (define-key map "a" 'notmuch-show-mark-read-archive-thread-next-thread)
++    (define-key map "A" 'notmuch-show-archive-thread-next-thread)
+     (define-key map "b" 'notmuch-show-toggle-body-read-visible)
+     (define-key map "c" 'notmuch-show-toggle-citations-visible)
+     (define-key map "h" 'notmuch-show-toggle-headers-visible)
+@@ -47,7 +47,8 @@
+     (define-key map "s" 'notmuch-show-toggle-signatures-visible)
+     (define-key map "v" 'notmuch-show-view-all-mime-parts)
+     (define-key map "w" 'notmuch-show-view-raw-message)
+-    (define-key map "x" 'kill-this-buffer)
++    (define-key map "x" 'notmuch-show-mark-read-archive-thread-kill-buffer)
++    (define-key map "X" 'notmuch-show-archive-thread-kill-buffer)
+     (define-key map "+" 'notmuch-show-add-tag)
+     (define-key map "-" 'notmuch-show-remove-tag)
+     (define-key map (kbd "DEL") 'notmuch-show-rewind)
+@@ -183,7 +184,33 @@ Unlike builtin `next-line' this version accepts no arguments."
+                        (cons (notmuch-show-get-message-id) nil)))
+         (notmuch-show-set-tags (sort (set-difference tags toremove :test 'string=) 'string<))))))
+-(defun notmuch-show-archive-thread-maybe-mark-read (markread)
++(defun notmuch-show-next-thread (markread)
++  (let ((parent-buffer notmuch-show-parent-buffer))
++    (kill-this-buffer)
++    (if parent-buffer
++      (progn
++        (switch-to-buffer parent-buffer)
++        (forward-line)
++        (notmuch-search-show-thread)))))
++  
++(defun notmuch-delete-tags (to-remove from)
++  (if to-remove
++      (delete (car to-remove) (notmuch-delete-tags (cdr to-remove) from))
++    from))
++
++(defun notmuch-kill-message-buffer (markread)
++  (let ((parent-buffer notmuch-show-parent-buffer))
++    (kill-this-buffer)
++    (if parent-buffer
++      (progn
++        (switch-to-buffer parent-buffer)
++        (let ((tags (notmuch-search-get-tags)))
++          (setq tags (delete "inbox" tags))
++          (if markread (setq tags (delete "unread" tags)))
++          (notmuch-search-set-tags tags))
++        (forward-line)))))
++
++(defun notmuch-show-archive-thread-maybe-mark-read (markread shownext)
+   (save-excursion
+     (goto-char (point-min))
+     (while (not (eobp))
+@@ -194,15 +221,9 @@ Unlike builtin `next-line' this version accepts no arguments."
+         (forward-char))
+       (if (not (re-search-forward notmuch-show-message-begin-regexp nil t))
+         (goto-char (point-max)))))
+-  (let ((parent-buffer notmuch-show-parent-buffer))
+-    (kill-this-buffer)
+-    (if parent-buffer
+-      (progn
+-        (switch-to-buffer parent-buffer)
+-        (forward-line)
+-        (notmuch-search-show-thread)))))
++  (if shownext (notmuch-show-next-thread markread) (notmuch-kill-message-buffer markread)))
+-(defun notmuch-show-mark-read-then-archive-thread ()
++(defun notmuch-show-mark-read-archive-thread-next-thread ()
+   "Remove \"unread\" tag from each message, then archive and show next thread.
+ Archive each message currrently shown by removing the \"unread\"
+@@ -215,9 +236,22 @@ being delivered to the same thread. It does not archive the
+ entire thread, but only the messages shown in the current
+ buffer."
+   (interactive)
+-  (notmuch-show-archive-thread-maybe-mark-read t))
++  (notmuch-show-archive-thread-maybe-mark-read t t))
++
++(defun notmuch-show-mark-read-archive-thread-kill-buffer ()
++  "Remove \"unread\" tag from each message, then archive and kill the buffer.
++
++Archive each message currrently shown by removing the \"unread\"
++and \"inbox\" tag from each. Then kill this buffer.
++
++Note: This command is safe from any race condition of new messages
++being delivered to the same thread. It does not archive the
++entire thread, but only the messages shown in the current
++buffer."
++  (interactive)
++  (notmuch-show-archive-thread-maybe-mark-read t nil))
+-(defun notmuch-show-archive-thread ()
++(defun notmuch-show-archive-thread-next-thread ()
+   "Archive each message in thread, and show next thread from search.
+ Archive each message currrently shown by removing the \"inbox\"
+@@ -229,7 +263,20 @@ being delivered to the same thread. It does not archive the
+ entire thread, but only the messages shown in the current
+ buffer."
+   (interactive)
+-  (notmuch-show-archive-thread-maybe-mark-read nil))
++  (notmuch-show-archive-thread-maybe-mark-read nil t))
++
++(defun notmuch-show-archive-thread-kill-buffer ()
++  "Archive each message in thread, and kill the thread buffer.
++
++Archive each message currrently shown by removing the \"inbox\"
++tag from each. Then kill this buffer.
++
++Note: This command is safe from any race condition of new messages
++being delivered to the same thread. It does not archive the
++entire thread, but only the messages shown in the current
++buffer."
++  (interactive)
++  (notmuch-show-archive-thread-maybe-mark-read nil t))
+ (defun notmuch-show-view-raw-message ()
+   "View the raw email of the current message."
+@@ -297,7 +344,7 @@ by searching backward)."
+       (not (re-search-forward notmuch-show-message-begin-regexp nil t)))))
+ (defun notmuch-show-message-unread-p ()
+-  "Preficate testing whether current message is unread."
++  "Predicate testing whether current message is unread."
+   (member "unread" (notmuch-show-get-tags)))
+ (defun notmuch-show-next-message ()
+@@ -434,7 +481,7 @@ which this thread was originally shown."
+       (let ((last (notmuch-show-last-message-p)))
+       (notmuch-show-mark-read-then-next-open-message)
+       (if last
+-          (notmuch-show-archive-thread))))))
++          (notmuch-show-archive-thread-next-thread))))))
+ (defun notmuch-show-markup-citations-region (beg end depth)
+   (goto-char beg)
+@@ -618,8 +665,9 @@ messages. Each time you navigate away from a message with
+ You can add or remove tags from the current message with '+' and
+ '-'.  You can also archive all messages in the current
+-view, (remove the \"inbox\" tag from each), with
+-`notmuch-show-archive-thread' (bound to 'a' by default).
++view, (remove the \"inbox\" tag from each), with either
++`notmuch-show-archive-thread-next-thread' (bound to 'a' by default) or
++`notmuch-show-archive-thread-kill-buffer' (bound to 'x' by default).
+ \\{notmuch-show-mode-map}"
+   (interactive)
+-- 
+1.6.5.2
+
+
diff --git a/test/corpus/foo/baz/cur/14:2, b/test/corpus/foo/baz/cur/14:2,
new file mode 100644 (file)
index 0000000..d3fe78d
--- /dev/null
@@ -0,0 +1,39 @@
+From: "Jan Janak" <jan@ryngle.com>
+To: notmuch@notmuchmail.org
+Date: Tue, 17 Nov 2009 23:18:47 +0100
+Subject: [notmuch] [PATCH] Older versions of install do not support -C.
+Message-ID: <1258496327-12086-1-git-send-email-jan@ryngle.com>
+
+Do not use -C cmdline option of install, older versions, commonly found in
+distributions like Debian, do not seem to support it. Running make install
+on such systems (tested on Debian Lenny) fails.
+
+Signed-off-by: Jan Janak <jan at ryngle.com>
+---
+ Makefile.local |    8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/Makefile.local b/Makefile.local
+index f824bed..f51f1d1 100644
+--- a/Makefile.local
++++ b/Makefile.local
+@@ -27,11 +27,11 @@ install: all notmuch.1.gz
+       for d in $(DESTDIR)$(prefix)/bin/ $(DESTDIR)$(prefix)/share/man/man1 \
+               $(DESTDIR)/etc/bash_completion.d/ ; \
+       do \
+-              install -C -d $$d ; \
++              install -d $$d ; \
+       done ;
+-      install -C notmuch $(DESTDIR)$(prefix)/bin/
+-      install -C -m0644 notmuch.1.gz $(DESTDIR)$(prefix)/share/man/man1/
+-      install -C notmuch-completion.bash \
++      install notmuch $(DESTDIR)$(prefix)/bin/
++      install -m0644 notmuch.1.gz $(DESTDIR)$(prefix)/share/man/man1/
++      install notmuch-completion.bash \
+               $(DESTDIR)/etc/bash_completion.d/notmuch
+ SRCS  := $(SRCS) $(notmuch_client_srcs)
+-- 
+1.6.3.3
+
+
diff --git a/test/corpus/foo/baz/new/15:2, b/test/corpus/foo/baz/new/15:2,
new file mode 100644 (file)
index 0000000..6824d5e
--- /dev/null
@@ -0,0 +1,22 @@
+From: "Jan Janak" <jan@ryngle.com>
+To: notmuch@notmuchmail.org
+Date: Tue, 17 Nov 2009 23:35:30 +0100
+Subject: [notmuch] What a great idea!
+Message-ID: <f35dbb950911171435ieecd458o853c873e35f4be95@mail.gmail.com>
+
+Hello,
+
+First of all, notmuch is a wonderful idea, both the cmdline tool and
+the emacs interface! Thanks a lot for writing it, I was really excited
+when I read the announcement today.
+
+Have you considered sending an announcement to the org-mode mailing list?
+http://org-mode.org
+
+Various ways of searching/referencing emails from emacs were discussed
+there several times and none of them were as elegant as notmuch (not
+even close). Maybe notmuch would attract some of the developers
+there..
+
+   -- Jan
+
diff --git a/test/corpus/foo/baz/new/16:2, b/test/corpus/foo/baz/new/16:2,
new file mode 100644 (file)
index 0000000..f531eb9
--- /dev/null
@@ -0,0 +1,27 @@
+From: "Jan Janak" <jan@ryngle.com>
+To: notmuch@notmuchmail.org
+Date: Tue, 17 Nov 2009 23:38:47 +0100
+Subject: [notmuch] What a great idea!
+In-Reply-To: <f35dbb950911171435ieecd458o853c873e35f4be95@mail.gmail.com>
+References: <f35dbb950911171435ieecd458o853c873e35f4be95@mail.gmail.com>
+Message-ID: <f35dbb950911171438k5df6eb56k77b6c0944e2e79ae@mail.gmail.com>
+
+On Tue, Nov 17, 2009 at 11:35 PM, Jan Janak <jan at ryngle.com> wrote:
+> Hello,
+>
+> First of all, notmuch is a wonderful idea, both the cmdline tool and
+> the emacs interface! Thanks a lot for writing it, I was really excited
+> when I read the announcement today.
+>
+> Have you considered sending an announcement to the org-mode mailing list?
+> http://org-mode.org
+
+Sorry, wrong URL, the correct one is: http://orgmode.org
+
+> Various ways of searching/referencing emails from emacs were discussed
+> there several times and none of them were as elegant as notmuch (not
+> even close). Maybe notmuch would attract some of the developers
+> there..
+
+  -- Jan
+
diff --git a/test/corpus/foo/cur/07:2, b/test/corpus/foo/cur/07:2,
new file mode 100644 (file)
index 0000000..7b1e2bb
--- /dev/null
@@ -0,0 +1,57 @@
+From: "Carl Worth" <cworth@cworth.org>
+To: notmuch@notmuchmail.org
+Date: Tue, 17 Nov 2009 09:13:27 -0800
+Subject: [notmuch] [PATCH 1/2] Close message file after parsing message
+ headers
+In-Reply-To: <1258471718-6781-1-git-send-email-dottedmag@dottedmag.net>
+References: <1258471718-6781-1-git-send-email-dottedmag@dottedmag.net>
+Message-ID: <87lji5cbwo.fsf@yoom.home.cworth.org>
+
+On Tue, 17 Nov 2009 21:28:37 +0600, Mikhail Gusarov <dottedmag at dottedmag.net> wrote:
+> Keeping unused files open helps to see "Too many open files" often.
+> 
+> Signed-off-by: Mikhail Gusarov <dottedmag at dottedmag.net>
+...
+On Tue, 17 Nov 2009 21:28:38 +0600, Mikhail Gusarov <dottedmag at dottedmag.net> wrote:
+> 
+> Signed-off-by: Mikhail Gusarov <dottedmag at dottedmag.net>
+> ---
+>  lib/message.cc |    2 ++
+>  1 files changed, 2 insertions(+), 0 deletions(-)
+
+Hi Mikhail,
+
+Welcome to notmuch, and thanks for these patches! I've pushed both of
+them out now.
+
+Keith ran into the same problem of "too many open files" and wrote a
+more complex fix, (which included what you did here). His code can be
+seen at:
+
+       git://keithp.com/git/notmuch
+
+I didn't apply Keith's fix yet, because I think I'd rather just fix the
+indexer to store the In-Reply-To header in a separate term prefix from
+the term used for the References header[*]. That will then let us lookup
+the in-reply-to value later for thread constructions without having to
+open the original email file at all.
+
+-Carl
+
+[*] Yes, this is my first post to our new mailing list and I'm already
+spouting off about "terms" and "prefixes" without any definitions. I
+apologize for that. I hope that people will ask questions freely here on
+the list whenever anything is not clear, and I'll be glad to explain
+things as needed. (Then when can shove answers into a HACKING document.)
+
+PS. This reply is a great example of a feature that notmuch *almost*
+supports already---repling to multiple messages at once. The "notmuch
+reply" command line does everything necessary to make this work, but we
+haven't yet hooked up any keybindings for this in the emacs client yet.
+Obviously, 'r' from the search view could reply to the entire thread.
+But when viewing a thread, anyone have a good keybinding suggestion?
+(There's obviously 'R' as opposed to 'r', but I think we'll probably
+want to distinguish "reply to sender" from "reply to all" before trying
+to distinguish "reply to message" from "reply to thread" (which I
+imagine is more rare of an operation).
+
diff --git a/test/corpus/foo/cur/08:2, b/test/corpus/foo/cur/08:2,
new file mode 100644 (file)
index 0000000..baf34d1
--- /dev/null
@@ -0,0 +1,87 @@
+Date: Tue, 17 Nov 2009 15:33:01 -0500
+From: Lars Kellogg-Stedman <lars@seas.harvard.edu>
+To: Mikhail Gusarov <dottedmag@dottedmag.net>
+Message-ID: <20091117203301.GV3165@dottiness.seas.harvard.edu>
+References: <20091117190054.GU3165@dottiness.seas.harvard.edu>
+       <87iqd9rn3l.fsf@vertex.dottedmag>
+MIME-Version: 1.0
+In-Reply-To: <87iqd9rn3l.fsf@vertex.dottedmag>
+User-Agent: Mutt/1.5.19 (2009-01-05)
+Cc: notmuch@notmuchmail.org
+Subject: Re: [notmuch] Working with Maildir storage?
+X-BeenThere: notmuch@notmuchmail.org
+X-Mailman-Version: 2.1.12
+Precedence: list
+List-Id: "Use and development of the notmuch mail system."
+       <notmuch.notmuchmail.org>
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,
+       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>
+List-Post: <mailto:notmuch@notmuchmail.org>
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,
+       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>
+Content-Type: multipart/mixed; boundary="===============0063752545=="
+Sender: notmuch-bounces@notmuchmail.org
+Errors-To: notmuch-bounces@notmuchmail.org
+
+
+--===============0063752545==
+Content-Type: multipart/signed; micalg=pgp-sha256;
+       protocol="application/pgp-signature"; boundary="GGxZz/e2pmGePzrA"
+Content-Disposition: inline
+
+
+--GGxZz/e2pmGePzrA
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: inline
+Content-Transfer-Encoding: quoted-printable
+
+> See the patch just posted here.
+
+Is the list archived anywhere?  The obvious archives
+(http://notmuchmail.org/pipermail/notmuch/) aren't available, and I
+think I subscribed too late to get the patch (I only just saw the
+discussion about it).
+
+It doesn't look like the patch is in git yet.
+
+-- Lars
+
+--=20
+Lars Kellogg-Stedman <lars@seas.harvard.edu>
+Senior Technologist, Computing and Information Technology
+Harvard University School of Engineering and Applied Sciences
+
+
+--GGxZz/e2pmGePzrA
+Content-Type: application/pgp-signature
+Content-Disposition: inline
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+
+iQEcBAEBCAAGBQJLAwh9AAoJENdGlQYxQazYHJMIAI+XTPOyBTZIxEGTdgVKd2fR
+k27ucKs6lXozfMIIGchNUDXQho+KmiuTfX1XFJeBkqOlhrd9zlGjBGoBM0YBq/Gs
+aStPdonREzsHORjmyQCCpjg4AcqCRTXFbDXzAeXlxMPOrZ3P0XNPzTEM1mVksbmg
+mBBDLdHncy4sSCfFgXwRGGgLv9z5Acqm8xGYr68c9PIXY939ozIKV9LVUhxiNz9g
+We2a9rLDhfwxUqDlGdiNwZZimiKvD/fsYSrBZMDb5HgIYkeNZ4SD8Xu+OgB550wN
+OFfwGi3o8WFK2AyDe5QJDh9Ub+euPNlVzePoGpkltZEHuCcLFJqCHv5XYpbxcjA=
+=GO2Q
+-----END PGP SIGNATURE-----
+
+--GGxZz/e2pmGePzrA--
+
+--===============0063752545==
+Content-Type: text/plain; charset="us-ascii"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Content-Disposition: inline
+
+_______________________________________________
+notmuch mailing list
+notmuch@notmuchmail.org
+http://notmuchmail.org/mailman/listinfo/notmuch
+
+--===============0063752545==--
+
diff --git a/test/corpus/foo/new/03:2, b/test/corpus/foo/new/03:2,
new file mode 100644 (file)
index 0000000..c154ac5
--- /dev/null
@@ -0,0 +1,93 @@
+Date: Tue, 17 Nov 2009 14:00:54 -0500
+From: Lars Kellogg-Stedman <lars@seas.harvard.edu>
+To: notmuch@notmuchmail.org
+Message-ID: <20091117190054.GU3165@dottiness.seas.harvard.edu>
+MIME-Version: 1.0
+User-Agent: Mutt/1.5.19 (2009-01-05)
+Subject: [notmuch] Working with Maildir storage?
+X-BeenThere: notmuch@notmuchmail.org
+X-Mailman-Version: 2.1.12
+Precedence: list
+List-Id: "Use and development of the notmuch mail system."
+       <notmuch.notmuchmail.org>
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,
+       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>
+List-Post: <mailto:notmuch@notmuchmail.org>
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,
+       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>
+Content-Type: multipart/mixed; boundary="===============1685355122=="
+Sender: notmuch-bounces@notmuchmail.org
+Errors-To: notmuch-bounces@notmuchmail.org
+
+
+--===============1685355122==
+Content-Type: multipart/signed; micalg=pgp-sha256;
+       protocol="application/pgp-signature"; boundary="5Dr6Wqe9hdyl7LAI"
+Content-Disposition: inline
+
+
+--5Dr6Wqe9hdyl7LAI
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: inline
+Content-Transfer-Encoding: quoted-printable
+
+I saw the LWN article and decided to take a look at notmuch.  I'm
+currently using mutt and mairix to index and read a collection of
+Maildir mail folders (around 40,000 messages total).
+
+notmuch indexed the messages without complaint, but my attempt at
+searching bombed out. Running, for example:
+
+  notmuch search storage
+
+Resulted in 4604 lines of errors along the lines of:
+
+  Error opening
+  /home/lars/Mail/read-messages.2008/cur/1246413773.24928_27334.hostname,U=
+=3D3026:2,S:
+  Too many open files
+
+I'm curious if this is expected behavior (i.e., notmuch does not work
+with Maildir) or if something else is going on.
+
+Cheers,
+
+--=20
+Lars Kellogg-Stedman <lars@seas.harvard.edu>
+Senior Technologist, Computing and Information Technology
+Harvard University School of Engineering and Applied Sciences
+
+
+--5Dr6Wqe9hdyl7LAI
+Content-Type: application/pgp-signature
+Content-Disposition: inline
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+
+iQEcBAEBCAAGBQJLAvLmAAoJENdGlQYxQazYRtcH/0usClQ1Z+EoTsA+URwIK6hD
+FsZUxFxRjMuOQRn2idZ/zhhg5jJj11ZaHjqxSkDvi2ywkTKUf1vX9LLzVy5hSR9M
+E6XQUd5QWAQXo1VsTeKkukIL0YqsPjdgrT8+Yt+OS2NvhEncql23oxnL2/pHkIFq
+r0NdTmVV5Jcar7w9J6X1Mi9m229a/9jV5FImsWISkIhIWznXU5SiU6zIw8xhP4E0
+xhvVSNJnFryjVHtva870aSQduhHfeLPzpYhqbkMPvlq+bcz6Q/Q2SwxJcGLNMPHa
+os9s9FGhCvFKUhVzezHWPgXNCcNT8qK89rcUldb5Oq4jaJb8RCZCYABplfoyaFs=
+=vO4s
+-----END PGP SIGNATURE-----
+
+--5Dr6Wqe9hdyl7LAI--
+
+--===============1685355122==
+Content-Type: text/plain; charset="us-ascii"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Content-Disposition: inline
+
+_______________________________________________
+notmuch mailing list
+notmuch@notmuchmail.org
+http://notmuchmail.org/mailman/listinfo/notmuch
+
+--===============1685355122==--
+
diff --git a/test/corpus/foo/new/09:2, b/test/corpus/foo/new/09:2,
new file mode 100644 (file)
index 0000000..26b51b1
--- /dev/null
@@ -0,0 +1,33 @@
+From: "Mikhail Gusarov" <dottedmag@dottedmag.net>
+To: notmuch@notmuchmail.org
+Date: Wed, 18 Nov 2009 02:50:48 +0600
+Subject: [notmuch] Working with Maildir storage?
+In-Reply-To: <20091117203301.GV3165@dottiness.seas.harvard.edu> (Lars
+       Kellogg-Stedman's message of "Tue, 17 Nov 2009 15:33:01 -0500")
+References: <20091117190054.GU3165@dottiness.seas.harvard.edu>
+       <87iqd9rn3l.fsf@vertex.dottedmag>
+       <20091117203301.GV3165@dottiness.seas.harvard.edu>
+Message-ID: <87fx8can9z.fsf@vertex.dottedmag>
+
+
+Twas brillig at 15:33:01 17.11.2009 UTC-05 when lars at seas.harvard.edu did gyre and gimble:
+
+ LK> Is the list archived anywhere?  The obvious archives
+ LK> (http://notmuchmail.org/pipermail/notmuch/) aren't available, and I
+ LK> think I subscribed too late to get the patch (I only just saw the
+ LK> discussion about it).
+
+ LK> It doesn't look like the patch is in git yet.
+
+Just has been pushed
+
+-- 
+  http://fossarchy.blogspot.com/
+-------------- next part --------------
+A non-text attachment was scrubbed...
+Name: not available
+Type: application/pgp-signature
+Size: 834 bytes
+Desc: not available
+URL: <http://notmuchmail.org/pipermail/notmuch/attachments/20091118/0e33d964/attachment.pgp>
+
diff --git a/test/corpus/foo/new/10:2, b/test/corpus/foo/new/10:2,
new file mode 100644 (file)
index 0000000..4211d73
--- /dev/null
@@ -0,0 +1,54 @@
+From: "Mikhail Gusarov" <dottedmag@dottedmag.net>
+To: notmuch@notmuchmail.org
+Date: Wed, 18 Nov 2009 02:51:18 +0600
+Subject: [notmuch] [PATCH] Handle rename of message file
+Message-ID: <1258491078-29658-1-git-send-email-dottedmag@dottedmag.net>
+
+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
+
+
diff --git a/test/corpus/new/04:2, b/test/corpus/new/04:2,
new file mode 100644 (file)
index 0000000..0ce678b
--- /dev/null
@@ -0,0 +1,84 @@
+From: Mikhail Gusarov <dottedmag@dottedmag.net>
+To: notmuch@notmuchmail.org
+References: <20091117190054.GU3165@dottiness.seas.harvard.edu>
+Date: Wed, 18 Nov 2009 01:02:38 +0600
+In-Reply-To: <20091117190054.GU3165@dottiness.seas.harvard.edu> (Lars
+       Kellogg-Stedman's message of "Tue, 17 Nov 2009 14:00:54 -0500")
+Message-ID: <87iqd9rn3l.fsf@vertex.dottedmag>
+User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux)
+MIME-Version: 1.0
+Subject: Re: [notmuch] Working with Maildir storage?
+X-BeenThere: notmuch@notmuchmail.org
+X-Mailman-Version: 2.1.12
+Precedence: list
+List-Id: "Use and development of the notmuch mail system."
+       <notmuch.notmuchmail.org>
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,
+       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>
+List-Post: <mailto:notmuch@notmuchmail.org>
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,
+       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>
+Content-Type: multipart/mixed; boundary="===============1958295626=="
+Sender: notmuch-bounces@notmuchmail.org
+Errors-To: notmuch-bounces@notmuchmail.org
+
+--===============1958295626==
+Content-Type: multipart/signed; boundary="=-=-=";
+       micalg=pgp-sha1; protocol="application/pgp-signature"
+
+--=-=-=
+Content-Transfer-Encoding: quoted-printable
+
+
+Twas brillig at 14:00:54 17.11.2009 UTC-05 when lars@seas.harvard.edu did g=
+yre and gimble:
+
+ LK> Resulted in 4604 lines of errors along the lines of:
+
+ LK>   Error opening
+ LK>   /home/lars/Mail/read-messages.2008/cur/1246413773.24928_27334.hostna=
+me,U=3D3026:2,S:
+ LK>   Too many open files
+
+See the patch just posted here.
+
+=2D-=20
+  http://fossarchy.blogspot.com/
+
+--=-=-=
+Content-Type: application/pgp-signature
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+
+iQIcBAEBAgAGBQJLAvNOAAoJEJ0g9lA+M4iIjLYQAKp0PXEgl3JMOEBisH52AsIK
+CzzfP4Fzd41K9VH/c1EdQWDYR6FCAA4IUSNICnJhITsYUb0eC5AKJiey3JP0+rmd
+s4qEFBKH2iuphv8Llltcv2Q8DyPuJBkVa3mO9XCCeABZ6v4UvnTSWRVG12csSEih
+ScgienU8sMrM9LwvvVI1ZB2flm2TzsH2hWi30jIgmtBntIKJaTgbFXB50FYFwULa
+gGL/oH3u+YpumedWzPZdCJrw2q7nMvYx8aQ29EDCNLZibAZe+6oDTa6Fv6/0ldpQ
+U+DptR0nJGbJTWa26OTSvmyeIORjAfM+TEI68n7KO9VHYPmVh6awcf0MNKYh2xWk
+eRQNBcKyQNWxeKyCCpT/rrTlpxBWahpvg+V8lkDH2W09wjRp6CUKvifK3Sz3am9m
+5ZUMpvXbwkZD6Ci6l/QytbYK50e8UpvFSu5DBaxBz59ykoypuNg2ayO5Kdi6IF5d
+T+Sw6wo8UKn9a33+vheIc0fkhZXbeSotEmDm7huazm6CgM3dcWXUpTuJvik1cSWp
+4buv98gY6IKWKoUTXODWUr+7VR4gei8du8qOsKem+QDfNX7tmaIRjhrbB24B91Wy
+td3MTJD7GjMNid0INqRY1CRMLo8YlPaq6NBZfcYtYgwa6gpJijz1/MAn8+GMrfhF
+9LI8b9jopNP+pMYBohLA
+=/ksP
+-----END PGP SIGNATURE-----
+--=-=-=--
+
+--===============1958295626==
+Content-Type: text/plain; charset="us-ascii"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Content-Disposition: inline
+
+_______________________________________________
+notmuch mailing list
+notmuch@notmuchmail.org
+http://notmuchmail.org/mailman/listinfo/notmuch
+
+--===============1958295626==--
+