diff options
Diffstat (limited to 'test/corpus/bar')
-rw-r--r-- | test/corpus/bar/17:2, | 23 | ||||
-rw-r--r-- | test/corpus/bar/18:2, | 12 | ||||
-rw-r--r-- | test/corpus/bar/baz/05:2, | 104 | ||||
-rw-r--r-- | test/corpus/bar/baz/23:2, | 145 | ||||
-rw-r--r-- | test/corpus/bar/baz/24:2, | 204 | ||||
-rw-r--r-- | test/corpus/bar/baz/cur/25:2, | 32 | ||||
-rw-r--r-- | test/corpus/bar/baz/cur/26:2, | 121 | ||||
-rw-r--r-- | test/corpus/bar/baz/new/27:2, | 21 | ||||
-rw-r--r-- | test/corpus/bar/baz/new/28:2, | 38 | ||||
-rw-r--r-- | test/corpus/bar/cur/19:2, | 360 | ||||
-rw-r--r-- | test/corpus/bar/cur/20:2, | 101 | ||||
-rw-r--r-- | test/corpus/bar/new/21:2, | 102 | ||||
-rw-r--r-- | test/corpus/bar/new/22:2, | 84 |
13 files changed, 1347 insertions, 0 deletions
diff --git a/test/corpus/bar/17:2, b/test/corpus/bar/17:2, new file mode 100644 index 00000000..d3b75685 --- /dev/null +++ b/test/corpus/bar/17:2, @@ -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 index 00000000..f522f69e --- /dev/null +++ b/test/corpus/bar/18:2, @@ -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 index 00000000..75b05fa4 --- /dev/null +++ b/test/corpus/bar/baz/05:2, @@ -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'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 index 00000000..9bb62d73 --- /dev/null +++ b/test/corpus/bar/baz/23:2, @@ -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 index 00000000..c8000207 --- /dev/null +++ b/test/corpus/bar/baz/24:2, @@ -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 index 00000000..7378f820 --- /dev/null +++ b/test/corpus/bar/baz/cur/25:2, @@ -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 index 00000000..f3c5f53d --- /dev/null +++ b/test/corpus/bar/baz/cur/26:2, @@ -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 index 00000000..7f0f045b --- /dev/null +++ b/test/corpus/bar/baz/new/27:2, @@ -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 index 00000000..83ce01bd --- /dev/null +++ b/test/corpus/bar/baz/new/28:2, @@ -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 index 00000000..1b7872b0 --- /dev/null +++ b/test/corpus/bar/cur/19:2, @@ -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 index 00000000..f08a3145 --- /dev/null +++ b/test/corpus/bar/cur/20:2, @@ -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 index 00000000..7ff55ccf --- /dev/null +++ b/test/corpus/bar/new/21:2, @@ -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: <expression> AND <expression><br> +A Xapian exception occurred: Syntax: <expression> AND <expression><br>A Xapian exception occurred: Syntax: <expression> AND <expression><br>A Xapian exception occurred: Syntax: <expression> AND <expression><br> +A Xapian exception occurred: Syntax: <expression> AND <expression><br>A Xapian exception occurred: Syntax: <expression> AND <expression><br>A Xapian exception occurred: Syntax: <expression> AND <expression><br> +A Xapian exception occurred: Syntax: <expression> AND <expression><br>A Xapian exception occurred: Syntax: <expression> AND <expression><br>A Xapian exception occurred: Syntax: <expression> AND <expression><br> +A Xapian exception occurred: Syntax: <expression> AND <expression><br>A Xapian exception occurred: Syntax: <expression> AND <expression><br>A Xapian exception occurred: Syntax: <expression> AND <expression><br> +A Xapian exception occurred: Syntax: <expression> AND <expression><br>A Xapian exception occurred: Syntax: <expression> AND <expression><br><br>I'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 index 00000000..08adada6 --- /dev/null +++ b/test/corpus/bar/new/22:2, @@ -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==-- + |