David Bremner [Sun, 4 Jun 2017 12:32:26 +0000 (09:32 -0300)]
lib: factor out message-id parsing to separate file.
This is really pure C string parsing, and doesn't need to be mixed in
with the Xapian/C++ layer. Although not strictly necessary, it also
makes it a bit more natural to call _parse_message_id from multiple
compilation units.
David Bremner [Sun, 4 Jun 2017 12:32:25 +0000 (09:32 -0300)]
lib/n_d_add_message: refactor test for new/ghost messages
The switch is easier to understand than the side effects in the if
test. It also potentially allows us more flexibility in breaking up
this function into smaller pieces, since passing private_status around
is icky.
David Bremner [Sun, 4 Jun 2017 12:32:24 +0000 (09:32 -0300)]
lib: isolate n_d_add_message and helper functions into own file
'database.cc' is becoming a monster, and it's hard to follow what the
various static functions are used for. It turns out that about 1/3 of
this file notmuch_database_add_message and helper functions not used
by any other function. This commit isolates this code into it's own
file.
Some side effects of this refactoring:
- find_doc_ids becomes the non-static (but still private)
_notmuch_database_find_doc_ids
- a few instances of 'string' have 'std::' prepended, avoiding the
need for 'using namespace std;' in the new file.
David Bremner [Sat, 29 Jul 2017 11:52:28 +0000 (07:52 -0400)]
Merge tag 'debian/0.25-2'
uploaded to unstable
David Bremner [Wed, 26 Jul 2017 14:51:59 +0000 (10:51 -0400)]
debian: update gmime dependencies
- build against gmime 3.0 by preference
- drop gmime-2.4-dev, no longer supported upstream
David Bremner [Wed, 26 Jul 2017 14:02:16 +0000 (10:02 -0400)]
Merge tag 'debian/0.25-1'
notmuch Debian 0.25-1 upload (same as 0.25)
David Bremner [Tue, 25 Jul 2017 11:30:24 +0000 (07:30 -0400)]
debian: add changelog entry for 0.25
David Bremner [Tue, 25 Jul 2017 11:24:11 +0000 (07:24 -0400)]
NEWS: set date
David Bremner [Tue, 25 Jul 2017 11:21:29 +0000 (07:21 -0400)]
version: bump to 0.25
David Bremner [Tue, 25 Jul 2017 11:16:20 +0000 (07:16 -0400)]
NEWS: formatting fixups
These are from Tomi, split from the previous commit
Tomi Ollila [Sun, 23 Jul 2017 19:38:14 +0000 (22:38 +0300)]
NEWS for release 0.25: Emacs: support for stashing message timestamp
David Bremner [Tue, 11 Jul 2017 11:19:37 +0000 (08:19 -0300)]
emacs: Add commentary for MELPA users
We have a steady trickle of people using notmuch-emacs from melpa with
distro packages of notmuch, and then being confused when it doesn't
work. Try to warn people what a foot-gun this is; this commentary
should be copied to the melpa web site.
David Bremner [Tue, 18 Jul 2017 22:48:12 +0000 (19:48 -0300)]
debian: changelog for 0.25~rc1-2
David Bremner [Tue, 18 Jul 2017 10:06:04 +0000 (07:06 -0300)]
debian: finalize changelog for 0.25~rc1-1
David Bremner [Tue, 18 Jul 2017 10:04:29 +0000 (07:04 -0300)]
version: bump to 0.25~rc1
David Bremner [Mon, 17 Jul 2017 15:06:12 +0000 (12:06 -0300)]
debian: allow emacs25 as a build depend
It's a bit crazy to require emacs 24 installed just to build, when it
isn't required to run.
David Bremner [Mon, 17 Jul 2017 15:06:11 +0000 (12:06 -0300)]
emacs: convert remaining format-versions from 3 to 4
This is needed for consistent beheviour between notmuch built against
gmime-2.6 and gmime-3.0 w.r.t. error reporting.
Daniel Kahn Gillmor [Mon, 17 Jul 2017 22:16:05 +0000 (00:16 +0200)]
fix the generated documentation output
Daniel Kahn Gillmor [Mon, 17 Jul 2017 22:16:02 +0000 (00:16 +0200)]
Fix orthography
Daniel Kahn Gillmor [Mon, 17 Jul 2017 22:16:06 +0000 (00:16 +0200)]
use modern debian/copyright
Daniel Kahn Gillmor [Mon, 17 Jul 2017 22:16:04 +0000 (00:16 +0200)]
avoid false lintian warning about "iff"
Daniel Kahn Gillmor [Mon, 17 Jul 2017 22:16:03 +0000 (00:16 +0200)]
resolve lintian tag debhelper-but-no-misc-depends notmuch-emacs
This is likely not strictly necessary given that notmuch-emacs is a
transitional package. But having a simple consistency until we
eventually remove the transitional notmuch-emacs package seems ok too,
and fewer arbitrary lintian warnings will make real lintian warnings
more visible.
Daniel Kahn Gillmor [Mon, 17 Jul 2017 22:16:01 +0000 (00:16 +0200)]
fix Python capitalization
Daniel Kahn Gillmor [Mon, 17 Jul 2017 22:16:00 +0000 (00:16 +0200)]
explicitly mark notmuch-emacs as transitional
Daniel Kahn Gillmor [Mon, 17 Jul 2017 22:15:59 +0000 (00:15 +0200)]
Bump standards version to 4.0.0 (no changes needed)
Some things that might be interesting (and are acceptable and
supported under 4.0.0, though not required) are:
* supporting DEB_BUILD_OPTIONS tag nodoc wihle tagging build-deps (we
could put python-sphinx into <!nodoc>, for example)
* splitting out Build-Depends-Arch from Build-Depends
Daniel Kahn Gillmor [Mon, 17 Jul 2017 22:15:58 +0000 (00:15 +0200)]
Drop duplicate Section header for notmuch-vim
Resolves lintian binary-control-field-duplicates-source
David Bremner [Tue, 18 Jul 2017 09:36:31 +0000 (06:36 -0300)]
NEWS: drop redundant mention of dump fix
This actually happened in 0.24.x.
David Bremner [Mon, 17 Jul 2017 12:20:10 +0000 (09:20 -0300)]
Merge tag 'debian/0.25_rc0-2'
merge 32 bit compilation fix
David Bremner [Mon, 17 Jul 2017 11:50:08 +0000 (08:50 -0300)]
debian: changelog stanza for 0.25~rc0-2
David Bremner [Mon, 17 Jul 2017 11:47:18 +0000 (08:47 -0300)]
util: make g_mime_utils_header_decode_date_unix match prototype
The problem shows up on 32 bit architectures where sizeof(time_t) !=
sizeof(gint64). Upcasting the 32 bit time_t to a 64 bit integer
should hopefully be safe.
David Bremner [Mon, 17 Jul 2017 01:43:11 +0000 (22:43 -0300)]
NEWS: Initial writeup for my contributions to 0.25
David Bremner [Sun, 16 Jul 2017 12:08:39 +0000 (09:08 -0300)]
Merge tag '0.25_rc0'
notmuch 0.25~rc0 release
David Bremner [Sun, 16 Jul 2017 11:49:06 +0000 (08:49 -0300)]
debian: note two closed bugs in changelog
David Bremner [Sun, 16 Jul 2017 11:45:55 +0000 (08:45 -0300)]
debian: don't create obsolete bash completion dir
David Bremner [Sun, 16 Jul 2017 11:20:15 +0000 (08:20 -0300)]
debian: set distribution to experimental, finalize changelog
David Bremner [Sun, 16 Jul 2017 11:18:19 +0000 (08:18 -0300)]
debian: add more c++ gunk to symbols file
David Bremner [Sun, 16 Jul 2017 11:08:18 +0000 (08:08 -0300)]
debian: bump changelog version, mention SONAME bump
David Bremner [Sun, 16 Jul 2017 11:02:51 +0000 (08:02 -0300)]
NEWS: start entry for 0.25
David Bremner [Sun, 16 Jul 2017 11:01:42 +0000 (08:01 -0300)]
version: bump version to 0.25~rc0
David Bremner [Sat, 15 Jul 2017 23:01:46 +0000 (01:01 +0200)]
crypto: clean up unused definitions in gmime 3.0
based on the same patch from dkg as the previous commit.
David Bremner [Sat, 15 Jul 2017 23:01:45 +0000 (01:01 +0200)]
crypto: Avoid explicit handling of GMimeCryptoContext in gmime 3
gmime 3.0 knows how to select the correct GMimeCryptoContext
automatically, so a bunch of the code in notmuch can be dropped in
that case.
The #ifdef removal of the crypto stuff is better than #define aliasing
in gmime-extra.h for this stuff. When built against gmime 3.0:
* it reduces compiled code, and
* it avoids initializing unused gpgme contexts
(based on a patch from dkg)
David Bremner [Sat, 15 Jul 2017 23:01:44 +0000 (01:01 +0200)]
cli/crypto: eliminated compiler warnings about unused arguments
These are due to (excessively?) fancy macro definitions in gmime-extra.h
David Bremner [Sat, 15 Jul 2017 23:01:43 +0000 (01:01 +0200)]
cli/crypto: treat failure to create a crypto context as fatal.
Silently ignoring signed/encrypted parts seems like the wrong idea,
and it also complicates future gmime-3.0 compatibility changes.
David Bremner [Wed, 12 Jul 2017 10:48:18 +0000 (07:48 -0300)]
emacs: change default for notmuch-crypto-process-mime to t
There are some cases like remote usage where this might cause
problems, but those users can easily customize the variable. The
inconvenience seems to be outweighed by the security benefit for most
users.
Tomi Ollila [Thu, 13 Jul 2017 17:35:34 +0000 (20:35 +0300)]
NEWS: a few formatting updates for 0.24 news items (wiki compatibility)
- removed 7 trailing dots -- to make those lines subsection headers
- converted some (mime type) text to monospace
- removed one extra space
Daniel Kahn Gillmor [Fri, 14 Jul 2017 13:12:01 +0000 (15:12 +0200)]
clean up use of constants in g_mime_multipart_ wrappers
When compiling as C code (instead of C++) against gmime 3.0, gcc gives
errors like the following:
error: invalid conversion from ‘int’ to ‘GMimeDecryptFlags’ [-fpermissive]
so use explicit *_NONE values instead.
Daniel Kahn Gillmor [Fri, 14 Jul 2017 13:12:00 +0000 (15:12 +0200)]
config: deprecate/drop crypto.gpg_path under gmime 2.6/3.0
gmime 3.0 no longer offers a means to set the path for gpg.
Users can set $PATH anyway if they want to pick a
differently-installed gpg (e.g. /usr/local/bin/gpg), so this isn't
much of a reduction in functionality.
The one main difference is for people who have tried to use "gpg2" to
make use of gpg 2.1, but that isn't usefully co-installable anyway.
Daniel Kahn Gillmor [Fri, 14 Jul 2017 20:14:23 +0000 (22:14 +0200)]
Add additional munged reply-to tests
The reply-to munging code might behave differently whether there's an
exact match on the strings or not, or whether the string is a raw
addr-spec instead of an name-addr. These tests cover those variations
(i also had to tweak json output further below when this new test was
added).
Daniel Kahn Gillmor [Fri, 14 Jul 2017 20:14:22 +0000 (22:14 +0200)]
Ensure that "notmuch reply" succeeds during testing.
In some (bad!) cases, "notmuch reply" might fail, or might even
segfault. If this happens, it indicates a bug, and the test suite
should notice it.
David Bremner [Sat, 3 Jun 2017 00:19:04 +0000 (21:19 -0300)]
cli: wrap getting uid
Apparently it moved from "name" to "key_id" in gmime-3.0
David Bremner [Fri, 2 Jun 2017 23:57:01 +0000 (20:57 -0300)]
cli: make keyid from fingerprint in gmime 3.0
The "key_id" field seems to used for userid in gmime-3.0, while the
keyid is dropped in the fingerprint field if the full fingerprint is
not available.
David Bremner [Sat, 20 May 2017 12:05:22 +0000 (09:05 -0300)]
lib: paper over allocation difference
In gmime 3.0 this function is "transfer none", so no deallocation is
needed (or permitted)
David Bremner [Wed, 17 May 2017 10:40:09 +0000 (07:40 -0300)]
lib: add version of _n_m_f_get_combinded_header for gmime 3.0
The iterator is gone, so we need a new loop structure.
David Bremner [Wed, 17 May 2017 10:18:55 +0000 (07:18 -0300)]
lib: refactor _notmuch_messsage_file_get_combined_header
We need to rewrite the loop for gmime-3.0; move the loop body to its
own function to avoid code duplication. Keep the common exit via
"goto DONE" to make this pure code movement. It's important to note
that the existing exit path only deallocates the iterator.
David Bremner [Wed, 17 May 2017 01:59:54 +0000 (22:59 -0300)]
lib: wrap use of g_mime_utils_header_decode_date
This changes return type in gmime 3.0
David Bremner [Sun, 14 May 2017 17:51:38 +0000 (14:51 -0300)]
cli: hide rename of GMimeCertificateTrust
Both the enum and the values are renamed in GMime 3.0.
David Bremner [Sun, 14 May 2017 17:49:31 +0000 (14:49 -0300)]
cli: generalize use of GMIME_SIGNATURE_{ERROR,STATUS} to gmime-3
The ERROR enum is merged into to the STATUS enum, and the set of flags
is different.
David Bremner [Sat, 6 May 2017 11:54:32 +0000 (08:54 -0300)]
util: fake gmime-2.6 compatible API for gmime-3.0
Several functions have added arguments which accept NULL and provide
hopefully sensible defaults. Use macros to minimize source changes.
David Bremner [Sat, 6 May 2017 11:41:14 +0000 (08:41 -0300)]
cli: replace use of g_mime_message_get_recipients
This function, and associated enum, have been renamed and generalized
in gmime-3.0.
David Bremner [Sat, 6 May 2017 02:26:57 +0000 (23:26 -0300)]
lib/cli: replace use of g_mime_message_get_sender
This function changes semantics in gmime-3.0 so make a new function
that provides the same functionality in both
David Bremner [Thu, 4 May 2017 18:59:37 +0000 (14:59 -0400)]
cli: replace use of g_mime_message_get_reply_to
This function changes signature in gmime 3.0, so we provide two new
functions, one for each signature.
David Bremner [Thu, 4 May 2017 12:48:44 +0000 (08:48 -0400)]
cli: replace use of g_mime_message_get_date_as_string
This function goes away in gmime-3.0. Also, the memory management is
apparently error prone, witness the memory leak in notmuch-reply.
David Bremner [Sat, 3 Jun 2017 00:29:25 +0000 (21:29 -0300)]
test/crypto: mark extra space in userid as a bug in gmime-2.6
I can't see the space in the output of gpg -K --with-colons
David Bremner [Sat, 1 Jul 2017 15:18:45 +0000 (12:18 -0300)]
cli: add space separator for keyword, string, and int arguments
Defer the complication of optional boolean arguments for later (never?).
David Bremner [Sat, 1 Jul 2017 15:18:44 +0000 (12:18 -0300)]
cli: change api of parse_option
The idea is to allow it (in a future commit) advance to the next argv
element to get a value
David Bremner [Sat, 1 Jul 2017 15:18:43 +0000 (12:18 -0300)]
cli/show: convert keyword options to booleans
There are two keyword options here that impliment boolean options. It
is simpler to use the built-in boolean argument handling, and also
more robust against divergence in parsing boolean and keyword arguments.
Kyle Meyer [Sat, 8 Jul 2017 01:01:59 +0000 (21:01 -0400)]
emacs: tree: drop repeated "of" from docstring
David Bremner [Thu, 6 Jul 2017 11:30:09 +0000 (08:30 -0300)]
debian: drop notmuch-dbg
notmuch-dbgsym should be auto generated now.
David Bremner [Sat, 3 Jun 2017 17:47:40 +0000 (14:47 -0300)]
test/crypto: add test for corrupted signatures
Have an empty list of signatures is not the nicest mechanism to signal
complete failure to verify, but it's the one we currently have.
David Bremner [Sat, 3 Jun 2017 17:47:39 +0000 (14:47 -0300)]
test: add test for modified pgp/mime signed message
This is a good thing to test in any case, but particularly as we hit
the dark corners of the gmime crypto API.
David Bremner [Sat, 3 Jun 2017 17:47:37 +0000 (14:47 -0300)]
test: mark test as broken in gmime 3.0
Currently I'm not sure what the intent of this test is, so it's not
clear if the new answer is better or worse than the old one.
David Bremner [Sat, 3 Jun 2017 17:47:36 +0000 (14:47 -0300)]
test: mark inclusion of headers as broken in gmime-2.x
The output of headers here reflects an underlying bug / quirk of
gmime-2.6.
David Bremner [Sat, 3 Jun 2017 17:47:35 +0000 (14:47 -0300)]
test/multipart: reorganize creation of multipart message
We want to have the bodies of the multipart available in a file on
their own for planned modifications to tests.
David Bremner [Sat, 3 Jun 2017 17:47:34 +0000 (14:47 -0300)]
cli: implement structured output version 4
Since the error field is unused by the emacs front end, no changes are
needed other than bumping the format version number.
As it is, this is a bit overengineered, but it will reduce duplication
when we support gmime 3.0
David Bremner [Sat, 3 Jun 2017 17:47:33 +0000 (14:47 -0300)]
devel/schemata: describe version 4
Replace numeric errors with human readable flags. Not all sig_error
keys will necessarily be generated with a given version of gmime.
Drop status "none" as it's currrently unused and I don't know what
it's for.
David Bremner [Sat, 3 Jun 2017 17:47:32 +0000 (14:47 -0300)]
emacs: convert to use format-version 3
Keeping the emacs interface running old format-versions makes it
impossible to test new format-versions or deprecate old ones.
David Bremner [Tue, 4 Jul 2017 00:35:05 +0000 (21:35 -0300)]
Merge branch 'release'
David Bremner [Sun, 2 Jul 2017 15:49:06 +0000 (12:49 -0300)]
debian: upload 0.24.2-2
Just a no-change rebuild.
David Bremner [Sun, 2 Jul 2017 13:50:17 +0000 (10:50 -0300)]
Merge branch 'debian'
merge in changes from 0.23.7-3 debian upload
David Bremner [Thu, 8 Jun 2017 02:11:49 +0000 (23:11 -0300)]
lib/index: add simple html filter
The filter just drops all (HTML) tags. As an enabling change, pass the
content type to the filter constructor so we can decide which scanner
to user.
David Bremner [Thu, 8 Jun 2017 02:11:48 +0000 (23:11 -0300)]
lib/index.cc: generalize filter state machine
To match things more complicated than fixed strings, we need states
with multiple out arrows.
David Bremner [Thu, 8 Jun 2017 02:11:47 +0000 (23:11 -0300)]
lib/index: separate state table definition from scanner.
We want to reuse the scanner definition with a different table. This
is mainly code movement, and making the state table part of the filter
struct/class.
David Bremner [Thu, 8 Jun 2017 02:11:46 +0000 (23:11 -0300)]
lib/index: generalize name of indexing filter
In followup commits we will generalize the functionality of this
filter to deal with other types of non-indexable content.
Tom Hinton [Thu, 29 Jun 2017 14:08:25 +0000 (14:08 +0000)]
Fix minor mistake where indentation width is ignored
Damien Cassou [Sun, 18 Jun 2017 10:04:35 +0000 (12:04 +0200)]
Add indentation to imenu in notmuch-show
Piotr Trojanek [Fri, 16 Jun 2017 12:57:05 +0000 (13:57 +0100)]
remove extra space in Emacs prompt
Trivial: fix extra space in the "Insert failed" Emacs prompt message.
Piotr Trojanek [Fri, 16 Jun 2017 22:50:25 +0000 (23:50 +0100)]
fix wrong printf formatting of signed/unsigned integers
Piotr Trojanek [Fri, 16 Jun 2017 22:50:24 +0000 (23:50 +0100)]
remove ineffective assignments
Detected by cppcheck.
Piotr Trojanek [Fri, 16 Jun 2017 22:50:23 +0000 (23:50 +0100)]
fix leaks due to missing invocations of va_end
As the Linux man page states: "Each invocation of va_start() must be
matched by a corresponding invocation of va_end() in the same
function." Detected by cppcheck.
Piotr Trojanek [Fri, 16 Jun 2017 22:50:22 +0000 (23:50 +0100)]
minor whitespace cleanups
Damien Cassou [Mon, 12 Jun 2017 13:30:10 +0000 (15:30 +0200)]
Add Emacs' imenu support in notmuch-show and notmuch-search
Emacs' major modes can facilitate navigation in their buffers by
supporting Imenu. In such major modes, launching Imenu (M-x imenu)
makes Emacs display a list of items (e.g., function definitions in a
code buffer). Selecting an item from this list moves point to this
item.
This patch adds Imenu support to both notmuch-show and notmuch-search
buffers:
* in notmuch-show, Imenu will present a list of all messages in the
currently visible thread;
* in notmuch-search, Imenu will present a list of all messages in the
search buffer.
David Bremner [Thu, 1 Jun 2017 10:54:38 +0000 (07:54 -0300)]
Merge branch 'release'
David Bremner [Thu, 1 Jun 2017 10:32:10 +0000 (07:32 -0300)]
fixup! NEWS: news for 0.24.2
David Bremner [Thu, 1 Jun 2017 10:25:56 +0000 (07:25 -0300)]
debian: changelog for 0.24.2-1
David Bremner [Thu, 1 Jun 2017 10:19:46 +0000 (07:19 -0300)]
NEWS: news for 0.24.2
David Bremner [Thu, 1 Jun 2017 10:13:00 +0000 (07:13 -0300)]
version: bump to 0.24.2
David Bremner [Mon, 8 May 2017 01:44:23 +0000 (22:44 -0300)]
cli/dump: don't include tags when not asked for
Add in the analogous test for tags that is given for properties a few
lines below.
David Bremner [Mon, 8 May 2017 01:44:22 +0000 (22:44 -0300)]
test: add known broken test --include=properties
Reported in [1], --include=properties currently implies
--include=tags, but it should not.
[1] id:87y3u8vjbo.fsf@tethera.net
David Bremner [Sat, 27 May 2017 16:51:18 +0000 (13:51 -0300)]
test: define GMime version dependant breakage
We have some tests where the gmime 3 behaviour seems like a bug fix,
others where it's less clear, so we allow both possibilities.
David Bremner [Sat, 27 May 2017 16:51:17 +0000 (13:51 -0300)]
configure: add optional support for gmime-3.0
This is only the changes to make configure work; it won't compile with
gmime-3.0 yet.