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.
David Bremner [Tue, 14 Mar 2017 11:10:07 +0000 (08:10 -0300)]
rename libutil.a to libnotmuch_util.a
Apparently some systems (MacOS?) have a system library called libutil
and the name conflict causes problems. Since this library is quite
notmuch specific, rename it to something less generic.
David Bremner [Sun, 19 Mar 2017 00:02:42 +0000 (21:02 -0300)]
Merge branch 'release'
Merge in memory fixes
Tomi Ollila [Fri, 17 Mar 2017 22:28:48 +0000 (00:28 +0200)]
lib/message.cc: 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.
David Bremner [Sat, 18 Mar 2017 17:46:42 +0000 (14:46 -0300)]
cli/show: unref crlf filter.
Mimic the handling of the other filter g_objects. This cleans up a
fair sized memory leak.
David Bremner [Sat, 18 Mar 2017 17:33:50 +0000 (14:33 -0300)]
cli/show: fix usage of g_mime_content_type_to_string
It returns an "allocated string", which needs to be freed.
David Bremner [Sat, 18 Mar 2017 17:07:45 +0000 (14:07 -0300)]
cli/show: fix some memory leaks in format_part_text
Mimic Jeff Stedfast's changes to format_headers_sprinter, clean up use
of internet_address_list_to_string and
g_mime_message_get_date_as_string.
Jeffrey Stedfast [Thu, 16 Mar 2017 16:53:47 +0000 (16:53 +0000)]
fix memory leaks in notmuch-show.c:format_headers_sprinter()
Internet_address_list_to_string() and
g_mime_message_get_date_as_string() return allocated string buffers
and not const, so from what I can tell from taking a look at the
sprinter-sexp.c’s sexp_string() function, the code leaks the
recipients_string as well as the date string.
David Bremner [Sat, 18 Mar 2017 19:35:51 +0000 (16:35 -0300)]
perf-test/mem: add simple memory tests for notmuch search
Just copy and replace from the show tests. Currently these show no
major leaks.
David Bremner [Sat, 18 Mar 2017 16:40:25 +0000 (13:40 -0300)]
perf-test: add simple memory tests for notmuch-show
These are probably too slow to run with the full corpus
David Bremner [Sat, 18 Mar 2017 16:34:32 +0000 (13:34 -0300)]
perf-test: use 'eval' in memory_run
This allows the use of redirection in the tests
Tomi Ollila [Sun, 12 Mar 2017 12:59:33 +0000 (14:59 +0200)]
test-databases: use wget or curl to download test databases
Often Linux systems are shipped with wget(1) by default (and no curl).
Many BSDs, macOS, and e.g. some Linux minimal/container images
comes with curl(1) (and no wget).
Attempting to download with curl if wget is not available increases
the likelihood for this to succeed.
David Bremner [Sun, 12 Mar 2017 12:51:01 +0000 (09:51 -0300)]
lib: clamp return value of g_mime_utils_header_decode_date to >=0
For reasons not completely understood at this time, gmime (as of
2.6.22) is returning a date before 1900 on bad date input. Since this
confuses some other software, we clamp such dates to 0,
i.e. 1970-01-01.
David Bremner [Sun, 12 Mar 2017 12:51:00 +0000 (09:51 -0300)]
lib: add known broken test for parsing bad dates.
This reproduces the symptoms of bug report
id:
20150422065630.6330.90536@hoothoot
John Byrnes [Sun, 12 Mar 2017 19:26:16 +0000 (21:26 +0200)]
emacs: use epg-gpg-program
Adjusted notmuch-crypto gpg call-process function to respect
the GPG program set by the EasyPG epg-gpg-program variable.
This is to correct a problem observed on NixOS where only gpg2 is
installed by default. The Notmuch Emacs frontend fails when trying to
access someone's key to verify their signature when it cannot find the
GPG binary.
David Bremner [Mon, 13 Mar 2017 01:43:11 +0000 (22:43 -0300)]
Merge branch 'release'
final 0.24 release
David Bremner [Mon, 13 Mar 2017 01:31:16 +0000 (22:31 -0300)]
build: replace remaining uses of SHA1_FILE
oops. If only there was some editor facility that allowed replacing
all instances of a string.
David Bremner [Mon, 13 Mar 2017 01:15:05 +0000 (22:15 -0300)]
debian: changelog stanza for 0.24-1
David Bremner [Mon, 13 Mar 2017 01:10:36 +0000 (22:10 -0300)]
NEWS: set release date
David Bremner [Mon, 13 Mar 2017 01:08:54 +0000 (22:08 -0300)]
version: bump to 0.24
Tomi Ollila [Sun, 12 Mar 2017 11:59:14 +0000 (13:59 +0200)]
fix out of tree tests
Use $NOTMUCH_SRCDIR/ instead of $TEST_DIRECTORY/../ (in those 2 places)
where reference to source directory instead of build directory is
required.
Tomi Ollila [Sun, 12 Mar 2017 11:59:13 +0000 (13:59 +0200)]
fix out of tree build
In addition to use ${srcdir} and deliver ${NOTMUCH_SRCDIR} where needed,
source from ruby bindings had to be copied to the out-of-tree target
directory -- if the source files in source directory were referenced
in build and there were also built object files there, those could have
been considered as target files (and then not found when attempting
to create bindings/ruby/notmuch.so).
Tomi Ollila [Sun, 12 Mar 2017 11:59:12 +0000 (13:59 +0200)]
configure: add ${NOTMUCH_SRCDIR} -- absolute path to notmuch source
The ${srcdir} -- usually relative path to notmuch source -- works fine
in current ./configure and all makefiles. To have simple access to
notmuch source in tests and out of tree builds holding absolute path to
the source directory is useful.
Jani Nikula [Sat, 17 Dec 2016 16:26:54 +0000 (18:26 +0200)]
lib/database: reduce try block scope to things that really need it
No need to maintain the pure C stuff within a try block, it's arguably
confusing. This also reduces indent for a bunch of code. No functional
changes.
Tomi Ollila [Wed, 4 Jan 2017 14:53:47 +0000 (16:53 +0200)]
test: atomicity.py: improve exit probability on failure
Some gdb python exceptions on some os environments (e.g. macOS
Sierra, non-codesigned gdb) do not make gdb exit (but to drop down
to nonexistent command line?).
Mitigate this chance by explict SystemExit on all exceptions.
The contents of output file 'gdb.out' is unchanged.
Tomi Ollila [Mon, 16 Jan 2017 18:04:48 +0000 (20:04 +0200)]
support make goals after initial {'', dist, data}clean goal(s)
Now make goal combinations starting with *clean goals,
ending with *clean coals, and having non-*clean goals in between
should work. What does not expected to work are
non-*clean - *clean - *non-clean goal combinations.
Also, if first goals are *clean goals, re-creation of Makefile.config
is inhibited when Makefile.config exists and ./configure is newer.
Jani Nikula [Fri, 6 Jan 2017 20:14:50 +0000 (22:14 +0200)]
cli: do not initialize zero values with designated initializers
Let the language initialize defaults to zero when some values are
initialized to non-zero values. No functional changes.
Jani Nikula [Fri, 6 Jan 2017 20:14:49 +0000 (22:14 +0200)]
cli: simplify mime node walk
The function is more straighforward to read when it's clear that the
only non-NULL return is at one place. No functional changes.
Jani Nikula [Fri, 6 Jan 2017 20:14:48 +0000 (22:14 +0200)]
cli/show: move formatter structs closer to where they're needed
The formatter structs are only needed for the formatter array
initialization. Move them closer to use. This also lets us drop some
forward declarations. No functional changes.
Jani Nikula [Fri, 6 Jan 2017 20:14:47 +0000 (22:14 +0200)]
cli/show: group --entire-thread option handling into one place
The --entire-thread option handling is split around, making the logic
harder to follow than necessary. Put it in one place. While at it,
make the true/false values match notmuch_bool_t values for
simplicity. No functional changes.
Jani Nikula [Fri, 6 Jan 2017 20:14:46 +0000 (22:14 +0200)]
cli/show: rename format_sel to simply format
Now that the format pointer is a temporary variable, and named
formatter, shorten format_sel to format. No functional changes.
Jani Nikula [Fri, 6 Jan 2017 20:14:45 +0000 (22:14 +0200)]
cli/show: use a table for choosing the formatter
Continue detangling format pointer and format selection variables. No
functional changes.
Jani Nikula [Fri, 6 Jan 2017 20:14:44 +0000 (22:14 +0200)]
cli/show: consistently use format_sel for checking the format
The mixed use of the format pointer and the format selection variables
is confusing. Add more clarity by using format_sel alone. No
functional changes.
Jani Nikula [Fri, 6 Jan 2017 20:14:43 +0000 (22:14 +0200)]
cli/show: remove unused raw member from show parameters struct
The raw member has been unused since
b1130bc71c02 ("show: Convert raw
format to the new self-recursive style, properly support interior
parts"). Good riddance. No functional changes.
Jani Nikula [Fri, 6 Jan 2017 20:14:42 +0000 (22:14 +0200)]
cli/show: detangle overloading of params.part for single message display
The use of params.part has become rather convoluted in notmuch
show. Add another variable for selecting single message display to
make the code easier to read. No functional changes.
Gaute Hope [Thu, 9 Mar 2017 13:32:28 +0000 (14:32 +0100)]
bindings/python: test python Database.get_revision ()
Here is a test for Database.get_revision (), based on
the first part of T570-revision-tracking.sh.
Gaute Hope [Mon, 6 Mar 2017 16:37:34 +0000 (17:37 +0100)]
bindings/python: add bindings for notmuch_database_get_revision
Database.get_revision () returns a tuple with the current database
revision and the UUID string representing the database.
Tomi Ollila [Sun, 5 Mar 2017 21:03:27 +0000 (23:03 +0200)]
configure: removed $zlib_(cflags|ldflags) from compat code build
When pkg-config does not find configure, a compat version of the
zlib.pc is created. In creation of that configure attempted to
read values of $zlib_cflags and $zlib_ldflags. In the usual case
those were undefined, and with `set -a` now in the beginning of
configure, configure broke.
Even if $zlib_cflags and $zlib_ldflags had values which were used
to create zlib.pc, the values were overwritten (with static content)
a few lines later in next pkg-config --cflags and --libs run. These
values would not be different and probably useless -- the following
boild would probably fail.
But instead of using those, CPATH and LIBRARY_PATH environment
variables can be used successfully (both while configuring and
building).
Łukasz Stelmach [Thu, 2 Mar 2017 12:22:01 +0000 (13:22 +0100)]
cli/new: Avoid printing "\033[K" to non-terminal output
Jani Nikula [Sun, 26 Feb 2017 13:43:01 +0000 (15:43 +0200)]
test: require test_begin_subtest before test_expect_code
Unify the subtests by requiring test_begin_subtest before
test_expect_code. (Similar change for test_expect_success has already
been done.)
This increases clarity in the test scripts by having a separate line
for the start of the subtest with the heading, and makes it possible
to simplify the test infrastructure by making all subtests similar.
Jani Nikula [Sun, 26 Feb 2017 13:43:00 +0000 (15:43 +0200)]
test: require test_begin_subtest before test_expect_success
Unify the subtests by requiring test_begin_subtest before
test_expect_success. (Similar change for test_expect_code will
follow.)
This increases clarity in the test scripts by having a separate line
for the start of the subtest with the heading, and makes it possible
to simplify the test infrastructure by making all subtests similar.
Jani Nikula [Sun, 26 Feb 2017 13:42:59 +0000 (15:42 +0200)]
test: drop the implicit prereq check mechanism from test_expect_*
The only place where we use the implicit prereq check is T000-basic.sh
where we check that it works. It's an added complication that we don't
use. Remove it.
The test_have_prereq function can still be used for the same effect in
subtests that use test_begin_subtest. For now, this will make it
impossible to have prereqs in one-line subtests that don't require
test_begin_subtest. This will be fixed in follow-up work.
Jani Nikula [Sun, 26 Feb 2017 13:42:58 +0000 (15:42 +0200)]
test: ensure test_begin_subtest has been called before test_expect_*
This is the expectation, increase robustness of the test suite by
requiring it.
Jani Nikula [Sun, 26 Feb 2017 13:42:57 +0000 (15:42 +0200)]
test: only accept short and long options, not silly in-betweens
It's not notmuch style to accept sloppy parameter names.
Jani Nikula [Sun, 26 Feb 2017 13:42:56 +0000 (15:42 +0200)]
test: remove unused and no-op --long-tests parameter
It's been unused since its introduction in commit
0083854b1204 ("Copy
test framework from Git").
Jani Nikula [Sun, 26 Feb 2017 13:42:55 +0000 (15:42 +0200)]
test: remove unused test_external and test_external_without_stderr
They've been unused since their introduction in commit
0083854b1204
("Copy test framework from Git"), only causing maintenance burden.
Jani Nikula [Sun, 26 Feb 2017 13:42:54 +0000 (15:42 +0200)]
test: remove unused filter functions
They've been unused since their introduction in commit
0083854b1204
("Copy test framework from Git").
Jani Nikula [Sun, 26 Feb 2017 13:42:53 +0000 (15:42 +0200)]
test: remove unused regexp convenience variables
They've been unused since their introduction in commit
0083854b1204
("Copy test framework from Git").
Jani Nikula [Sun, 26 Feb 2017 17:36:50 +0000 (19:36 +0200)]
test: suppress diff for broken test without V=1
Known broken tests are, well, known broken. Do not print the result
diff for them unless V=1 is specified. Now that the test description
is printed also when known broken tests fail, the user can also skip
to running the individual failing tests.
Jani Nikula [Sun, 26 Feb 2017 17:36:49 +0000 (19:36 +0200)]
test: print test description also for failing known broken tests
With the test description, the user can see the test script name, and
debug with that alone.
David Bremner [Wed, 8 Mar 2017 12:31:51 +0000 (08:31 -0400)]
Merge branch 'release'
new release candidate, with regexp fix
David Bremner [Wed, 8 Mar 2017 12:10:11 +0000 (08:10 -0400)]
debian: changelog stanza for 0.24~rc1-1
David Bremner [Wed, 8 Mar 2017 12:04:42 +0000 (08:04 -0400)]
version: bump version to 0.24~rc1
Olly Betts [Tue, 7 Mar 2017 12:52:39 +0000 (08:52 -0400)]
lib: Fix RegexpPostingSource
Remove incorrect skipping to first match from init(), and add explicit
skip_to() and check() methods to work around xapian-core bug (the
check() method will also improve speed when filtering by one of
these).
David Bremner [Tue, 7 Mar 2017 13:12:22 +0000 (09:12 -0400)]
Merge branch 'release'
NEWS and doc changes
Jani Nikula [Mon, 6 Mar 2017 19:27:01 +0000 (21:27 +0200)]
NEWS: notmuch-emacs-mua and desktop integration
Jani Nikula [Mon, 6 Mar 2017 19:27:00 +0000 (21:27 +0200)]
NEWS: external subcommand handling
Jani Nikula [Mon, 6 Mar 2017 19:26:59 +0000 (21:26 +0200)]
man: document external subcommand handling in notmuch(1)
The documentation for this was overlooked when adding the subcommand
handling. This seems like the proper place for it.
Mark Walters [Mon, 6 Mar 2017 08:49:20 +0000 (08:49 +0000)]
NEWS for emacs
David Bremner [Mon, 6 Mar 2017 00:32:20 +0000 (20:32 -0400)]
Merge tag '0.24_rc0'
notmuch 0.24~rc0 release
David Bremner [Mon, 6 Mar 2017 00:13:06 +0000 (20:13 -0400)]
debian: add two new exception symbols.
It seems these need to be exported from the library in order for
exception handling to work.
David Bremner [Sun, 5 Mar 2017 23:44:33 +0000 (19:44 -0400)]
NEWS: start NEWS for 0.24
David Bremner [Sun, 5 Mar 2017 23:33:50 +0000 (19:33 -0400)]
debian: start changelog stanza for 0.24~rc0-1
David Bremner [Sun, 5 Mar 2017 23:30:21 +0000 (19:30 -0400)]
version: bump to 0.24~rc0
Jani Nikula [Sun, 26 Feb 2017 17:36:48 +0000 (19:36 +0200)]
test: shrink T590-thread-breakage test decription to one line
The test description is used for log output, I think the intention is
to keep it as a one-liner. Leave the rest of the long description as a
comment.
Mark Walters [Sat, 4 Mar 2017 20:42:14 +0000 (20:42 +0000)]
emacs: compat: backport fix for folding long headers when sending
This backports the fix from emacs master (commit
77bbca8c82f6e553c42abbfafca28f55fc995d00) to notmuch-emacs to wrap
long headers.
This fixes the test introduced in the previous changeset.
Mark Walters [Sat, 4 Mar 2017 20:42:13 +0000 (20:42 +0000)]
Test: emacs: test for folding long headers.
Headers of more than 998 characters should be folded when sending.
However, until recently, emacs did not do this.
This adds a (known broken) test for this when sending messages in
emacs. We will backport the fix to notmuch-emacs in the next
changeset.
David Bremner [Sat, 25 Feb 2017 16:09:13 +0000 (12:09 -0400)]
lib: query make exclude handling non-destructive
We filter added exclude at add time, rather than modifying the query by
count search. As noted in the comments, there are several ignored
conditions here.
David Bremner [Sat, 25 Feb 2017 16:09:11 +0000 (12:09 -0400)]
lib: centralize query parsing, store results.
The main goal is to prepare the way for non-destructive (or at least
less destructive) exclude tag handling. It does this by having a
pre-parsed query available for further processing. This also allows us
to provide slightly more precise error messages.
Jani Nikula [Sat, 4 Mar 2017 17:38:41 +0000 (19:38 +0200)]
lib: use delete[] to free buffer allocated using new[]
Fix warning caught by clang:
lib/regexp-fields.cc:41:2: warning: 'delete' applied to a pointer that was allocated
with 'new[]'; did you mean 'delete[]'? [-Wmismatched-new-delete]
delete buffer;
^
[]
lib/regexp-fields.cc:37:17: note: allocated with 'new[]' here
char *buffer = new char[len];
^
David Bremner [Mon, 27 Feb 2017 02:34:21 +0000 (22:34 -0400)]
lib: add mid: as a synonym for id:
mid: is the url scheme suggested by URL 2392. We also plan to
introduce more flexible searches for mid: than are possible with
id: (in order not to break assumptions about the special behaviour of
id:, e.g. identifying at most one message).
David Bremner [Mon, 27 Feb 2017 02:34:20 +0000 (22:34 -0400)]
lib: regexp matching in 'subject' and 'from'
the idea is that you can run
% notmuch search subject:/<your-favourite-regexp>/
% notmuch search from:/<your-favourite-regexp>/
or
% notmuch search subject:"your usual phrase search"
% notmuch search from:"usual phrase search"
This feature is only available with recent Xapian, specifically
support for field processors is needed.
It should work with bindings, since it extends the query parser.
This is easy to extend for other value slots, but currently the only
value slots are date, message_id, from, subject, and last_mod. Date is
already searchable; message_id is left for a followup commit.
This was originally written by Austin Clements, and ported to Xapian
field processors (from Austin's custom query parser) by yours truly.
David Bremner [Mon, 27 Feb 2017 02:34:19 +0000 (22:34 -0400)]
lib: create field processors from prefix table
This is a bit more code than hardcoding the two existing field
processors, but it should make it easy to add more.
David Bremner [Thu, 2 Mar 2017 00:44:47 +0000 (20:44 -0400)]
build: use sha256sum instead of sha1sum to sign releases
Jani Nikula [Sat, 25 Feb 2017 09:25:40 +0000 (11:25 +0200)]
emacs/desktop: update to use notmuch-emacs-mua and handle mailto
With the mailto: handling in notmuch-emacs-mua, we can update the
desktop file to advertize we can be set as the default application to
handle email. While at it, add GenericName and Comment to be more
informative.
With --hello, notmuch-emacs-mua will run (notmuch) if mailto: url is
not given.
Jani Nikula [Sat, 25 Feb 2017 09:25:39 +0000 (11:25 +0200)]
completion: complete notmuch emacs-mua
With subcommand handling for external commands we can easily complete
'notmuch emacs-mua' using the existing completion system.
David Bremner [Wed, 1 Mar 2017 01:21:07 +0000 (21:21 -0400)]
Merge branch 'release'
Second gnugpg test suite fix
David Bremner [Wed, 1 Mar 2017 00:49:24 +0000 (20:49 -0400)]
update version to 0.23.7
David Bremner [Wed, 1 Mar 2017 00:46:53 +0000 (20:46 -0400)]
NEWS: add news for 0.23.7
David Bremner [Tue, 28 Feb 2017 00:07:52 +0000 (20:07 -0400)]
add changelog stanza for 0.23.7-1
Tomi Ollila [Sun, 26 Feb 2017 19:12:39 +0000 (21:12 +0200)]
notmuch-config: ENOENT vs generic handling when file open fails.
When opening configuration file fails, ENOENT (file not found) is
handled specially -- in setup missing file is ok (often expected),
and otherwise user can be informed to run notmuch setup.
In any other case the the reason is unknown, so there is no other
option but to print generic error message to stderr.
Jani Nikula [Sun, 26 Feb 2017 19:12:38 +0000 (21:12 +0200)]
cli/config: don't try to open config file for 'notmuch help'
The help command does not really need to try to open the config
file. So don't.
David Bremner [Tue, 28 Feb 2017 12:06:42 +0000 (08:06 -0400)]
Merge tag '0.23.6'
notmuch 0.23.6 release
Jani Nikula [Sun, 26 Feb 2017 18:33:48 +0000 (20:33 +0200)]
cli/show: add content-disposition to structured output message parts
Help the clients decide how to display parts.
Test updates by Mark Walters <markwalters1009@gmail.com>.
One more test fix by db
Jani Nikula [Sun, 26 Feb 2017 18:33:47 +0000 (20:33 +0200)]
cli/show: abstract get content disposition
Reduce duplication in follow-up work. As a side effect, handle error
returns from g_mime_content_disposition_get_disposition() without
segfaulting.
David Bremner [Mon, 27 Feb 2017 23:53:56 +0000 (19:53 -0400)]
test: move GNUPGHOME to TEST_TMPDIR
We already use this directory for dtach sockets, so it makes sense to
put gnupg sockets there as well. There doesn't seem to be a clean way
to put a fully functional socket in a different location than
GNUPGHOME.
David Bremner [Mon, 27 Feb 2017 22:27:49 +0000 (18:27 -0400)]
Revert "configure: add test for gpgconf --create-socketdir"
This reverts commit
12f7d4e61d30fb9a5c99e128ab1aab0bf069cdb4.
Since we're not using gpgconf anymore, drop the unneeded test in
configure.
David Bremner [Mon, 27 Feb 2017 22:26:47 +0000 (18:26 -0400)]
Revert "test: use gpgconf --create-socketdir if available"
This reverts commit
e7b88e8b0a93ca83d807edc00e0c97af54c5b5f1.
It turns out that this does not work well in environments without a
running systemd (or some other provider of /run/user)
David Bremner [Mon, 27 Feb 2017 10:58:07 +0000 (06:58 -0400)]
debian: set upload date and suite
David Bremner [Mon, 27 Feb 2017 10:57:42 +0000 (06:57 -0400)]
NEWS: set release date
David Bremner [Sun, 26 Feb 2017 12:16:45 +0000 (08:16 -0400)]
test: make T640 compatible with old C compilers
Apparently our test system does not use the same flags for compiling
tests as it does for compiling notmuch. Make the test compatible with
C89. Also remove one unused loop index.
Jani Nikula [Sat, 17 Dec 2016 10:50:49 +0000 (12:50 +0200)]
completion: add bash completion for query: and property:
Add prefix completion for query and property, with value completion
for query. Apparently there's no way to get at the available
properties in the cli.
Mark Walters [Sat, 28 Jan 2017 09:47:42 +0000 (09:47 +0000)]
emacs: show: stop display of application/* parts
Gnus seems to display application/zip and application/tar by
default. This doesn't seem desirable so we override it.
We only override if the user has not customized
mm-inline-override-types themselves.
Jani Nikula [Sat, 25 Feb 2017 13:31:32 +0000 (15:31 +0200)]
test: test format version difference between v2 and v3
Schemata v3 changed message filename field to a list. Test both
versions 2 and 3.
Jani Nikula [Sat, 25 Feb 2017 13:31:31 +0000 (15:31 +0200)]
cli/show: list all filenames of a message in the formatted output
Instead of just having the first filename for the message, list all
duplicate filenames of the message as a list in the formatted
outputs. This bumps the format version to 3.
Jani Nikula [Sun, 26 Feb 2017 09:28:30 +0000 (11:28 +0200)]
emacs: use (system-name) instead of system-name
Fix the deprecation warning:
In notmuch-maildir-fcc-make-uniq-maildir-id:
emacs/notmuch-maildir-fcc.el:279:53:Warning: ‘system-name’ is an obsolete
variable (as of 25.1); use (system-name) instead
I've used (system-name) since at least 2011, so it must have been
around quite a while.
David Bremner [Fri, 24 Feb 2017 18:33:07 +0000 (14:33 -0400)]
lib/message.cc: use view number to invalidate cached metadata
Currently the view number is incremented by notmuch_database_reopen
David Bremner [Sat, 18 Feb 2017 01:28:05 +0000 (21:28 -0400)]
lib: handle DatabaseModifiedError in _n_message_ensure_metadata
The retries are hardcoded to a small number, and error handling aborts
than propagating errors from notmuch_database_reopen. These are both
somewhat justified by the assumption that most things that can go
wrong in Xapian::Database::reopen are rare and fatal. Here's the brief
discussion with Xapian upstream:
24-02-2017 08:12:57 < bremner> any intuition about how likely
Xapian::Database::reopen is to fail? I'm catching a
DatabaseModifiedError somewhere where handling any further errors is
tricky, and wondering about treating a failed reopen as as "the
impossible happened, stopping"
24-02-2017 16:22:34 < olly> bremner: there should not be much scope for
failure - stuff like out of memory or disk errors, which are probably a
good enough excuse to stop
David Bremner [Fri, 24 Feb 2017 01:38:24 +0000 (21:38 -0400)]
lib: add _notmuch_database_reopen
The main expected use is to recover from a Xapian::DatabaseChanged
exception.
David Bremner [Sat, 25 Feb 2017 02:57:40 +0000 (22:57 -0400)]
test: add known broken test for uncaught DatabaseModifiedError
There are several of these to track down, but one that is in quite a
few code paths is _notmuch_message_ensure_metadata.