5 years agocli: replace use of g_mime_message_get_recipients
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.

5 years agolib/cli: replace use of g_mime_message_get_sender
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

5 years agocli: replace use of g_mime_message_get_reply_to
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.

5 years agocli: replace use of g_mime_message_get_date_as_string
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.

5 years agotest/crypto: mark extra space in userid as a bug in gmime-2.6
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

5 years agocli: add space separator for keyword, string, and int arguments
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?).

5 years agocli: change api of parse_option
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

5 years agocli/show: convert keyword options to booleans
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.

5 years agoemacs: tree: drop repeated "of" from docstring
Kyle Meyer [Sat, 8 Jul 2017 01:01:59 +0000 (21:01 -0400)]
emacs: tree: drop repeated "of" from docstring

5 years agodebian: drop notmuch-dbg
David Bremner [Thu, 6 Jul 2017 11:30:09 +0000 (08:30 -0300)]
debian: drop notmuch-dbg

notmuch-dbgsym should be auto generated now.

5 years agotest/crypto: add test for corrupted signatures
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.

5 years agotest: add test for modified pgp/mime signed message
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.

5 years agotest: mark test as broken in gmime 3.0
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.

5 years agotest: mark inclusion of headers as broken in gmime-2.x
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

5 years agotest/multipart: reorganize creation of multipart message
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.

5 years agocli: implement structured output version 4
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

5 years agodevel/schemata: describe version 4
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.

5 years agoemacs: convert to use format-version 3
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.

5 years agoMerge branch 'release'
David Bremner [Tue, 4 Jul 2017 00:35:05 +0000 (21:35 -0300)]
Merge branch 'release'

5 years agodebian: upload 0.24.2-2 debian/0.24.2-2
David Bremner [Sun, 2 Jul 2017 15:49:06 +0000 (12:49 -0300)]
debian: upload 0.24.2-2

Just a no-change rebuild.

5 years agoMerge branch 'debian'
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

5 years agolib/index: add simple html filter
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.

5 years agolib/ generalize filter state machine
David Bremner [Thu, 8 Jun 2017 02:11:48 +0000 (23:11 -0300)]
lib/ generalize filter state machine

To match things more complicated than fixed strings, we need states
with multiple out arrows.

5 years agolib/index: separate state table definition from scanner.
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

5 years agolib/index: generalize name of indexing filter
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.

5 years agoFix minor mistake where indentation width is ignored
Tom Hinton [Thu, 29 Jun 2017 14:08:25 +0000 (14:08 +0000)]
Fix minor mistake where indentation width is ignored

5 years agoAdd indentation to imenu in notmuch-show
Damien Cassou [Sun, 18 Jun 2017 10:04:35 +0000 (12:04 +0200)]
Add indentation to imenu in notmuch-show

5 years agoremove extra space in Emacs prompt
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.

5 years agofix wrong printf formatting of signed/unsigned integers
Piotr Trojanek [Fri, 16 Jun 2017 22:50:25 +0000 (23:50 +0100)]
fix wrong printf formatting of signed/unsigned integers

5 years agoremove ineffective assignments
Piotr Trojanek [Fri, 16 Jun 2017 22:50:24 +0000 (23:50 +0100)]
remove ineffective assignments

Detected by cppcheck.

5 years agofix leaks due to missing invocations of va_end
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.

5 years agominor whitespace cleanups
Piotr Trojanek [Fri, 16 Jun 2017 22:50:22 +0000 (23:50 +0100)]
minor whitespace cleanups

5 years agoAdd Emacs' imenu support in notmuch-show and notmuch-search
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

This patch adds Imenu support to both notmuch-show and notmuch-search

* 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.

5 years agoMerge branch 'release'
David Bremner [Thu, 1 Jun 2017 10:54:38 +0000 (07:54 -0300)]
Merge branch 'release'

5 years agofixup! NEWS: news for 0.24.2 0.24.2 debian/0.24.2-1
David Bremner [Thu, 1 Jun 2017 10:32:10 +0000 (07:32 -0300)]
fixup! NEWS: news for 0.24.2

5 years agodebian: changelog for 0.24.2-1
David Bremner [Thu, 1 Jun 2017 10:25:56 +0000 (07:25 -0300)]
debian: changelog for 0.24.2-1

5 years agoNEWS: news for 0.24.2
David Bremner [Thu, 1 Jun 2017 10:19:46 +0000 (07:19 -0300)]
NEWS: news for 0.24.2

5 years agoversion: bump to 0.24.2
David Bremner [Thu, 1 Jun 2017 10:13:00 +0000 (07:13 -0300)]
version: bump to 0.24.2

5 years agocli/dump: don't include tags when not asked for
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.

5 years agotest: add known broken test --include=properties
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.


5 years agotest: define GMime version dependant breakage
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.

5 years agoconfigure: add optional support for gmime-3.0
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.

5 years agotest/thread-naming: remove excess escaping from sender address.
David Bremner [Sat, 27 May 2017 16:51:16 +0000 (13:51 -0300)]
test/thread-naming: remove excess escaping from sender address.

This is another case where the behaviour of gmime-2.6 and gmime-3.0
seems to differ. It may be that we prefer the more lax parsing of the
previous version, but that should be tested separately.

5 years agocli/reply: fix two memory leaks, document a third
David Bremner [Sat, 27 May 2017 16:51:15 +0000 (13:51 -0300)]
cli/reply: fix two memory leaks, document a third

internet_address_list_to_string returns an allocated string, which
needs to be freed with g_free. g_free can handle a NULL argument, so
we follow the usage elsewhere of calling it unconditionally.

The third leak we leave as it would require restructuring of
add_recipients_from_message, and is fixed by later gmime-3.0 porting.

5 years agoperf-test: add memory test for reply
David Bremner [Sat, 27 May 2017 16:51:14 +0000 (13:51 -0300)]
perf-test: add memory test for reply

Looking at the code for notmuch-reply, there seems to be several gmime
related memory leaks. This test is supposed to help eliminate those.

5 years agocli/show: use single stream for printf / gmime object output
David Bremner [Sat, 27 May 2017 16:51:13 +0000 (13:51 -0300)]
cli/show: use single stream for printf / gmime object output

This is again motivated by the need to transition away from
GMimeStreamFile for output to stdout.

format_part_mbox is left alone for now, as this cannot be mixed in
with output using gmime object output.

5 years agocli/reply: direct all output for text format to gmime stream
David Bremner [Sat, 27 May 2017 16:51:12 +0000 (13:51 -0300)]
cli/reply: direct all output for text format to gmime stream

Interleaving printfs with writes to the gmime stream worked when the
gmime stream was backed by the FILE *stdout, but that is no longer the
case.  Create one stream and pass it into the two functions where
needed, as well well as replacing printfs with g_mime_stream_printf.

5 years agoutil: convenience function to create gmime stream for stdout
David Bremner [Sat, 27 May 2017 16:51:11 +0000 (13:51 -0300)]
util: convenience function to create gmime stream for stdout

It turns out that our use of GMimeStreamPipe has only succeeded
because gmime has been ignoring some seek failures; this will no
longer be the case in gmime 3.0, so we use a GMimeStreamPipe, which
does not assume seekability, wrapped in a buffering stream.

5 years agoemacs: with prefix argument, notmuch-show-stash-date stashes timestamp
Tomi Ollila [Sat, 8 Apr 2017 18:33:43 +0000 (21:33 +0300)]
emacs: with prefix argument, notmuch-show-stash-date stashes timestamp

Using timestamp of a message is useful in many Xapian queries.

5 years agoexit lingering gpg agents at the end of relevant tests
Tomi Ollila [Tue, 23 May 2017 18:54:25 +0000 (21:54 +0300)]
exit lingering gpg agents at the end of relevant tests

Since gnupg 2.1.20, gpg-agent no longer shut itself down when
$GNUPGHOME directory is removed.

Add exit hooks to the test modules which execute `gpgconf --kill all`

Add exit hooks to execute `gpgconf --kill all` in the modules that
create $GNUPGHOME for gpg to work with.

5 years add "atexit" functionality
Tomi Ollila [Tue, 23 May 2017 18:54:24 +0000 (21:54 +0300)] add "atexit" functionality

New function at_exit_function registers given function to be called
at script termination.

Functions so registered are called in the reverse order of their
registration; no arguments are passed.

Function is called only once; re-adding with function name already
registered will remove previous registration.

New function rm_exit_function can be used to remove registration.

Modules (and possibly functions) in future commits will
register such functions.

5 years agoMerge branch 'release'
David Bremner [Sat, 13 May 2017 11:51:10 +0000 (08:51 -0300)]
Merge branch 'release'

Emacs bug fix from Mark

5 years agoemacs: tree: bugfix: specify --format-version
Mark Walters [Sat, 15 Apr 2017 15:49:46 +0000 (16:49 +0100)]
emacs: tree: bugfix: specify --format-version

Previously notmuch tree did not specify the format-version when
calling notmuch. This meant that when the structured output was
slightly changed (in commit 14c60cf168ac3b0f277188c16e6012b7ebdadde7)
stash filename broke. This fixes this breakage by specifying the

5 years agobuild: visibility=default for library structs is no longer needed
Jani Nikula [Wed, 10 May 2017 19:42:12 +0000 (22:42 +0300)]
build: visibility=default for library structs is no longer needed

Commit d5523ead90b6 ("Mark some structures in the library interface
with visibility=default attribute.") fixed some mixed visibility
issues with structs. With the symbol default visibility reversed, this
is no longer a problem.

5 years agobuild: switch to hiding libnotmuch symbols by default
Jani Nikula [Wed, 10 May 2017 19:42:11 +0000 (22:42 +0300)]
build: switch to hiding libnotmuch symbols by default

The dynamic generation of the linker version script for libnotmuch
exports has grown rather complicated.

Reverse the visibility control by hiding symbols by default using
-fvisibility=hidden, and explicitly exporting symbols in notmuch.h
using #pragma GCC visibility. (We could also use __attribute__
((visibility ("default"))) for each exported function, but the pragma
is more convenient.)

The above is not quite enough alone, as it would "leak" a number of
weak symbols from Xapian and C++ standard library. Combine it with a
small static version script that filters out everything except the
notmuch_* symbols that we explicitly exposed, and the C++ RTTI
typeinfo symbols for exception handling.

Finally, as the symbol hiding test can no longer look at the generated
symbol table, switch the test to parse the functions from notmuch.h.

5 years agocompat: don't include compat.h from the feature test source
Jani Nikula [Wed, 10 May 2017 19:42:10 +0000 (22:42 +0300)]
compat: don't include compat.h from the feature test source

The feature test code should test the build environment, and none of
the compat code should interfere with that. Don't include compat.h
from the feature test source. There should be no functional changes
here, but this is just the right thing to do.

5 years agobuild: do not export compat functions from lib
Jani Nikula [Wed, 10 May 2017 19:42:09 +0000 (22:42 +0300)]
build: do not export compat functions from lib

Commits 9db214527213 ("lib/gen-version-script.h: add getline and
getdelim to notmuch.sym if needed") and 3242e29e57ac ("build: add
canonicalize_file_name to symbols exported from")
started exporting compat functions from libnotmuch so that the cli
could use them. But we shouldn't export such functions from the
library. They are not part of our ABI. Instead, the cli should include
its own copies of the compat functions.

5 years agolib: Add regexp expansion for for tags and paths
David Bremner [Wed, 8 Mar 2017 02:32:26 +0000 (22:32 -0400)]
lib: Add regexp expansion for for tags and paths

From a UI perspective this looks similar to what was already provided
for from, subject, and mid, but the implementation is quite
different. It uses the database's list of terms to construct a term
based query equivalent to the passed regular expression.

5 years agolib: Add regexp searching for mid: prefix
David Bremner [Wed, 15 Feb 2017 12:58:28 +0000 (08:58 -0400)]
lib: Add regexp searching for mid: prefix

The bulk of the change is passing in the field options to the regexp
field processor, so that we can properly handle the
fallback (non-regexp case).

5 years agotest: add known broken test for indexing html
David Bremner [Wed, 22 Mar 2017 11:23:00 +0000 (08:23 -0300)]
test: add known broken test for indexing html

'quite' on IRC reported that notmuch new was grinding to a halt during
initial indexing, and we eventually narrowed the problem down to some
html parts with large embedded images. These cause the number of terms
added to the Xapian database to explode (the first 400 messages
generated 4.6M unique terms), and of course the resulting terms are
not much use for searching.

The second test is sanity check for any "improved" indexing of HTML.

5 years agoReplace index(3) with strchr(3)
Fredrik Fornwall [Thu, 6 Apr 2017 23:06:20 +0000 (01:06 +0200)]
Replace index(3) with strchr(3)

The index(3) function has been deprecated in POSIX since 2001 and
removed in 2008, and most code in notmuch already calls strchr(3).

This fixes a compilation error on Android whose libc does not have

5 years agoemacs/notmuch.el: don't use 'function' as variable name.
David Bremner [Sat, 8 Apr 2017 17:03:29 +0000 (14:03 -0300)]
emacs/notmuch.el: don't use 'function' as variable name.

In principle this should work, but at least in some pre-release
versions of emacs26, this causes problems inside lexical let [1].


5 years agoMakefile.local: have all files in release tarball be owned by root
Tomi Ollila [Sat, 8 Apr 2017 19:00:17 +0000 (22:00 +0300)]
Makefile.local: have all files in release tarball be owned by root

The tar content `git archive` creates (reproducibly) have owner and
group set to 'root'. (GNU) tar writes user ids to the added file
`version` by default. The contents of tar archive looks better and
more consistent when owner and group in all files are the same.

While at it, split this long command line to multiple lines.

5 years agoconfigure: Be more verbose when compiler sanity checks fail
Tomi Ollila [Sat, 8 Apr 2017 19:23:32 +0000 (22:23 +0300)]
configure: Be more verbose when compiler sanity checks fail

When configure could not get past initial compiler sanity check
the user was left with no explanation why this happened (usually
the reason is that compilers are not installed).

By printing the executed command line and re-executing it without
output redirection user gets better information how to proceed
(or ask for help) to resolve this problem.

The shell builtin 'printf' is used to print the executed command
line to ensure verbatim output.

5 years agotest: add 'lkml' corpus
David Bremner [Tue, 11 Apr 2017 02:25:39 +0000 (23:25 -0300)]
test: add 'lkml' corpus

These 210 messages are in several long threads, which is good for
testing our threading code, and may be useful just as a larger test
corpus in the future.

5 years agotest: remove debugging "output"
David Bremner [Wed, 5 Apr 2017 00:36:30 +0000 (21:36 -0300)]
test: remove debugging "output"

5 years agotest: standardize argument order to test_expect_equal_file
David Bremner [Wed, 5 Apr 2017 00:36:29 +0000 (21:36 -0300)]
test: standardize argument order to test_expect_equal_file

It is annoying to debug failing tests when the interpretation of the
diffs is reversed for some tests.

5 years agodebian: changelog for 0.23.7-3 debian/stretch debian/0.23.7-3
David Bremner [Sun, 2 Apr 2017 00:10:16 +0000 (21:10 -0300)]
debian: changelog for 0.23.7-3

5 years agocli/dump: bump dump format version to 3
David Bremner [Fri, 31 Mar 2017 10:55:17 +0000 (07:55 -0300)]
cli/dump: bump dump format version to 3

No changes to the format of the body, but the header format was
fixed, and version 2 headers probably shouldn't be relied on.

5 years agocli/dump: fix bug in dump header
David Bremner [Tue, 28 Mar 2017 11:09:03 +0000 (08:09 -0300)]
cli/dump: fix bug in dump header

Fix copy paste error.

(cherry picked from commit 1f3c7916f82774cacbfbb0fbc9d0e0aaae9399b3)
(changes to missing test dropped)

5 years agoMerge branch 'release'
David Bremner [Sat, 1 Apr 2017 12:36:34 +0000 (09:36 -0300)]
Merge branch 'release'

Final 0.24.1 release

5 years agoNEWS: set release date 0.24.1 debian/0.24.1-1
David Bremner [Sat, 1 Apr 2017 12:29:38 +0000 (09:29 -0300)]
NEWS: set release date

5 years agoMerge branch 'debian' into release
David Bremner [Sat, 1 Apr 2017 12:20:44 +0000 (09:20 -0300)]
Merge branch 'debian' into release

Merge in changelog stanza from debian upload targeted at stretch

5 years agodebian: finalize changelog for 0.24.1-1
David Bremner [Sat, 1 Apr 2017 12:18:56 +0000 (09:18 -0300)]
debian: finalize changelog for 0.24.1-1

5 years agoNEWS: note dump header fix
David Bremner [Sat, 1 Apr 2017 12:15:30 +0000 (09:15 -0300)]
NEWS: note dump header fix

5 years agocli/dump: bump dump format version to 3
David Bremner [Fri, 31 Mar 2017 10:55:17 +0000 (07:55 -0300)]
cli/dump: bump dump format version to 3

No changes to the format of the body, but the header format was
fixed, and version 2 headers probably shouldn't be relied on.

5 years agocli/dump: fix bug in dump header
David Bremner [Tue, 28 Mar 2017 11:09:03 +0000 (08:09 -0300)]
cli/dump: fix bug in dump header

Fix copy paste error.

5 years agotest: add known broken test for dump header
David Bremner [Tue, 28 Mar 2017 11:09:02 +0000 (08:09 -0300)]
test: add known broken test for dump header

Apparently nobody uses the list of "what was included in the dump"

5 years agotest: add known broken test for dump header
David Bremner [Tue, 28 Mar 2017 11:09:02 +0000 (08:09 -0300)]
test: add known broken test for dump header

Apparently nobody uses the list of "what was included in the dump"

5 years agoMerge branch 'release'
David Bremner [Wed, 29 Mar 2017 23:58:34 +0000 (20:58 -0300)]
Merge branch 'release'

Another regexp search fix.

5 years agoNEWS: initial NEWS changes for 0.24.1
David Bremner [Sat, 25 Mar 2017 14:35:28 +0000 (11:35 -0300)]
NEWS: initial NEWS changes for 0.24.1

Also add a missed note to the 0.24 release notes.

5 years agolib: handle empty string in regexp field processors
David Bremner [Fri, 24 Mar 2017 22:52:51 +0000 (19:52 -0300)]
lib: handle empty string in regexp field processors

The non-field processor behaviour is is convert the corresponding
queries into a search for the unprefixed terms. This yields pretty
surprising results so I decided to generate a query that would match
the terms (i.e. none with that prefix) generated for an empty header.

5 years agotest: add known broken test for null from: and subject: query
David Bremner [Fri, 24 Mar 2017 22:52:50 +0000 (19:52 -0300)]
test: add known broken test for null from: and subject: query

These queries currently fail with field processors enabled because the
code expects a non-empty string.

5 years agoconfigure: change default bash completion location to /usr/share
David Bremner [Sun, 12 Mar 2017 17:24:52 +0000 (14:24 -0300)]
configure: change default bash completion location to /usr/share

At least Fedora and Debian now use
/usr/share/bash-completion/completions now. Apparently
/etc/bash_completion.d will be phased out at some point in the future.

5 years agoMerge branch 'release'
David Bremner [Sat, 25 Mar 2017 14:51:03 +0000 (11:51 -0300)]
Merge branch 'release'

wildcard search fixes, plus release busywork

5 years agodebian: start changelog for 0.24.1-1
David Bremner [Sat, 25 Mar 2017 14:22:55 +0000 (11:22 -0300)]
debian: start changelog for 0.24.1-1

5 years agoversion: bump to 0.24.1
David Bremner [Sat, 25 Mar 2017 14:20:56 +0000 (11:20 -0300)]
version: bump to 0.24.1

The release is not yet finalized, but start the busywork needed.

5 years agotests: add compatibility layer
Mikhail [Thu, 9 Mar 2017 13:32:43 +0000 (09:32 -0400)]
tests: add compatibility layer

Make load test-lib-<$PLATFORM>.sh to create
additional shim for platform specifics.

Use to call GNU utilities instead of native ones.

- amended by db following Tomi's suggestions

5 years agolib: only trigger phrase processing for regexp fields when needed
David Bremner [Sat, 18 Mar 2017 02:23:51 +0000 (23:23 -0300)]
lib: only trigger phrase processing for regexp fields when needed

The argument is that if the string passed to the field processor has
no spaces, then the added quotes won't have any benefit except for
disabling wildcards. But disabling wildcards doesn't seem very useful
in the normal Xapian query parser, since they're stripped before
generating terms anyway. It does mean that the query 'from:"foo*"' will
not be precisely equivalent to 'from:foo' as it is for the non
field-processor version.

5 years agotest: add known broken tests wildcard search in from and subject
David Bremner [Fri, 17 Mar 2017 12:17:48 +0000 (09:17 -0300)]
test: add known broken tests wildcard search in from and  subject

This was broken by the addition of regexp searching. The detection of
wildcards is not currently done in the recursive call to parse_query,
because of quoting issues.

5 years agodebian rename libnotmuch4 to libnotmuch5
David Bremner [Wed, 22 Mar 2017 12:00:20 +0000 (09:00 -0300)]
debian rename libnotmuch4 to libnotmuch5

follow the SONAME bump

5 years agopython: bump SOVERSION to 5
David Bremner [Wed, 22 Mar 2017 12:19:02 +0000 (09:19 -0300)]
python: bump SOVERSION to 5

Otherwise hilarity ensues when the python bindings try to use the new
API against the old shared library.

5 years agolib: make notmuch_query_add_tag_exclude return a status value
David Bremner [Sat, 18 Feb 2017 15:08:04 +0000 (11:08 -0400)]
lib: make notmuch_query_add_tag_exclude return a status value

Since this is an ABI breaking change, but we already bumped the SONAME
for the next release

5 years agolib: replace deprecated n_q_count_threads with status returning version
David Bremner [Sun, 26 Feb 2017 21:21:35 +0000 (17:21 -0400)]
lib: replace deprecated n_q_count_threads with status returning version

This function was deprecated in notmuch 0.21.  We re-use the name for
a status returning version, and deprecate the _st name.

5 years agolib: replace deprecated n_q_count_messages with status returning version
David Bremner [Sun, 26 Feb 2017 21:21:34 +0000 (17:21 -0400)]
lib: replace deprecated n_q_count_messages with status returning version

This function was deprecated in notmuch 0.21.  We re-use the name for
a status returning version, and deprecate the _st name. One or two
remaining uses of the (removed) non-status returning version fixed at
the same time

5 years agolib: replace deprecated n_q_search_messages with status returning version
David Bremner [Sun, 26 Feb 2017 21:21:32 +0000 (17:21 -0400)]
lib: replace deprecated n_q_search_messages with status returning version

This function was deprecated in notmuch 0.21.  We re-use the name for
a status returning version, and deprecate the _st name.

5 years agolib: replace n_query_search_threads with status returning version
David Bremner [Sun, 26 Feb 2017 21:21:31 +0000 (17:21 -0400)]
lib: replace n_query_search_threads with status returning version

This function was deprecated in notmuch 0.21. We finally remove the
deprecated API, and rename the status returning version to the simpler
name. The status returning is kept as a deprecated alias.

5 years agolib: bump SONAME to libnotmuch5
David Bremner [Sun, 26 Feb 2017 21:21:30 +0000 (17:21 -0400)]
lib: bump SONAME to libnotmuch5

We plan a sequence of ABI breaking changes. Put the SONAME change in a
separate commit to make reordering easier.

5 years agodebian: changelog stanza for 0.23.7-2 debian/0.23.7-2
David Bremner [Sun, 19 Mar 2017 12:39:06 +0000 (09:39 -0300)]
debian: changelog stanza for 0.23.7-2

5 years agolib/ fix Coverity finding (use after free)
Tomi Ollila [Fri, 17 Mar 2017 22:28:48 +0000 (00:28 +0200)]
lib/ fix Coverity finding (use after free)

The object where pointer to `data` was received was deleted before
it was used in _notmuch_string_list_append().

Relevant Coverity messages follow:

3: extract
Assigning: data = std::__cxx11::string(message->doc.()).c_str(),
which extracts wrapped state from temporary of type std::__cxx11::string.

4: dtor_free
The internal representation of temporary of type std::__cxx11::string
is freed by its destructor.

5: use after free:
Wrapper object use after free (WRAPPER_ESCAPE)
Using internal representation of destroyed object local data.

(cherry picked from commit 06adc276682d1d5f73d78df2e898ad4191eb4499)