David Bremner [Mon, 20 Jun 2011 22:05:53 +0000 (19:05 -0300)]
debian: update changelog for upload 0.6~254, bump standards version to 3.9.2
David Bremner [Wed, 22 Jun 2011 00:49:39 +0000 (21:49 -0300)]
debian: remove Xapian exceptions symbols from libnotmuch1.symbols
These were never intended to be public, since the library exports only
a C API.
David Bremner [Tue, 21 Jun 2011 17:31:21 +0000 (14:31 -0300)]
debian: split off vim interface to its own package
So far the package does notthing fancy with vim-addon-manager.
David Bremner [Tue, 21 Jun 2011 01:00:44 +0000 (22:00 -0300)]
debian: split off emacs interface into its own package.
- rename emacsen-install/remove files, and change embedded package
name
- split notmuch.install, notmuch.dirs
- add Breaks/Replaces for previous notmuch packages with overlapping
files.
David Bremner [Mon, 20 Jun 2011 21:52:58 +0000 (18:52 -0300)]
debian: Build depend on emacs-nox instead of emacs.
Nothing in the build process needs X, and the number of dependencies
that need to be installed is much smaller.
David Bremner [Sun, 19 Jun 2011 18:09:46 +0000 (15:09 -0300)]
debian: build package for python-bindings.
This uses dh_python2 (included with sufficiently recent versions of
the python/python-all packages). python-all brings in all of the
supported versions of python. The double calls to dh_auto_install and
friends are to avoid looping over python versions ourselves.
David Bremner [Wed, 22 Jun 2011 11:58:01 +0000 (08:58 -0300)]
tests: add a test for symbol hiding side effects
The worry here is that a binary linking with libnotmuch might lose
access to Xapian::Error symbols because libnotmuch hides them.
We are careful here to create ./fakedb/.notmuch in order to trigger a
Xapian exception, and not just a missing file check.
Thanks to jrollins and amddragon for suggestions.
(cherry picked from commit
66f37f5f6864a988f94ddb893e3a176af57f6c8e)
David Bremner [Wed, 22 Jun 2011 00:25:06 +0000 (21:25 -0300)]
libnotmuch: add linker script to declare only notmuch_* symbols as global.
This is closely tied to gcc and particularly gnu ld, but I guess the
shared library linking code would need to be adjusted to work on a
non-gnu linker anyay.
I had to make a few not-obviously related changes to the
lib/Makefile.local to make this work: libnotmuch_modules is defined
with := and used in place of $^
(cherry picked from commit
014bf85b1c06ff49be2bde5a26433d2cf376cf70)
David Bremner [Sat, 18 Jun 2011 13:14:53 +0000 (10:14 -0300)]
debian: add changlog stanza for new snapshot 0.6~237
(cherry picked from commit
17daa480e435ad4c1d8f4f18447eff1ff36dbe00)
David Bremner [Sat, 4 Jun 2011 11:52:20 +0000 (08:52 -0300)]
debian: Changelog stanza for new git snapshot 0.6~215
(cherry picked from commit
b85a415a7bd91c360c0acd453ead39be854f63f7)
David Bremner [Wed, 1 Jun 2011 00:45:35 +0000 (21:45 -0300)]
debian: update symbols file for libnotmuch1
One of the Xapian exception symbols has gone missing. Hopefully this
doesn't mean we should be bumping the SONAME.
(cherry picked from commit
e8260d63f1f5a37094801ecd5d110bf48f22ee45)
David Bremner [Wed, 1 Jun 2011 00:17:40 +0000 (21:17 -0300)]
debian: Changelog stanza for new snapshot 0.6~180
(cherry picked from commit
54a3983d3c38830e2b609be0a96c5cf6dc6de054)
David Bremner [Sat, 28 May 2011 11:53:03 +0000 (08:53 -0300)]
debian: update symbols file for libnotmuch1
This re-exports three symbols from Xapian.
(cherry picked from commit
f36c36ddd13486d1e38b4dd0efa717108f56c4f9)
David Bremner [Sat, 28 May 2011 11:48:34 +0000 (08:48 -0300)]
debian: Override RPATH_LDFLAGS
Probably there is a nicer way to do this; perhaps it should be a
configure option.
(cherry picked from commit
387dc520dd68cc805e390f3a1399f85b5d5bd83a)
David Bremner [Sat, 28 May 2011 10:26:50 +0000 (07:26 -0300)]
debian: Add changelog stanza for new snapshot 0.6~171
After some debate, we settled on 0.6~$num as a snapshot version
number, at least until 0.6 is released. This has the needed property
of sorting after 0.5+nmu$num.
(cherry picked from commit
54f7766febc3fa3c9dc475f6ec6718c5e87a189e)
David Bremner [Sat, 28 May 2011 16:31:26 +0000 (13:31 -0300)]
debian: Add myself (David Bremner) as an uploader
This avoids having to mark every upload as a non-maintainer upload.
(cherry picked from commit
e849851d2d38cbf985f3fd884226100b93f3044f)
David Bremner [Sat, 28 May 2011 10:03:31 +0000 (07:03 -0300)]
debian: Incorporate changelog entries from post 0.5 uploads
These uploads added the timeout to the tests to fix build failures.
(cherry picked from commit
0901faabd90a689728d8079b3163bd76b29d29aa)
Jameson Graef Rollins [Thu, 23 Jun 2011 01:14:12 +0000 (18:14 -0700)]
emacs: Show all multipart/alternative parts by default.
This is patch is a temporary work-around for a slight regression that
popped up in the part handling reorganization. Currently, text/plain
parts are always preferred, if present, over other non-text/plain
parts in multipart/alternative. However, this means that if there is
a blank text/plain part, no content will be displayed.
One way to get around this is to set the
"notmuch-show-all-multipart/alternative-parts" customization variable
to True ('t'), which will cause all parts to always be displayed.
Since we want to move forward with the next release, we're going to
set this variable true by default, to make sure that no content is
unretrievably hidden from the user. Once we come up with a better
solution for easy display of hidden parts we can set this back to a
default value of 'nil'.
Carl Worth [Tue, 21 Jun 2011 21:54:10 +0000 (14:54 -0700)]
smtp-dummy: Prefer return rather than exit() in main.
The main() function should be written as just another function with a
return value. This allows for more reliable code reuse. Imagine that
main() grows too large and needs to be factored into multiple
functions. At that point, exit() is probably the wrong thing, yet can
also be hard to notice as it's in less-frequently-tested exceptional
cases.
Dmitry Kurochkin [Thu, 16 Jun 2011 10:32:08 +0000 (14:32 +0400)]
Fix compilation warnings in test/smtp-dummy.c.
* Remove unused variables in main(): buf, bytes and greeting.
* Replace return with no value in main() with exit(3).
David Bremner [Tue, 21 Jun 2011 12:03:19 +0000 (09:03 -0300)]
debian: Generate version from debian/changelog
This avoids patching the version file once per Debian upload.
Original version file is saved and restored.
(cherry picked from commit
2938a98bf4c4abe0426caee4555d889d655bc0df)
David Bremner [Sat, 28 May 2011 09:50:11 +0000 (06:50 -0300)]
tests: Add optional use of timeout utility, if present.
Each top level test (basic, corpus, etc...) is run with a fixed
timeout of 2 minutes.
The goal here is to treat a hung test as a failure. The emacs test for
sending mail is known to be problematic on the Debian
autobuilders. This is both a bandaid fix for that, and a sensible long
term feature.
(cherry picked from commit
5f99c80e02736c90495558d9b88008a768876b29)
David Bremner [Sun, 19 Jun 2011 19:53:43 +0000 (16:53 -0300)]
Do not import notmuch in setup.py.
Importing notmuch loads the notmuch shared library. When building
without a system install of notmuch, this requires e.g. setting
LD_LIBRARY_PATH for building and fails completely for cleaning.
Sebastian Spaeth [Thu, 16 Jun 2011 15:33:47 +0000 (17:33 +0200)]
Simplify (& fix) Message().__str__()
We were still using len(self.get_replies()) for the __str__ summary of a
mail, but 1) len(Messages()) has just gone away 2) the number of replies
can not be retrieved when we got the message via search_messages()
anyway, and 3) it is likely quite expensive to pull all replies for all
messages that we display a summary of.
So we fix this by simplifying str(Message()) to omit the number of replies.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Thu, 16 Jun 2011 13:51:13 +0000 (15:51 +0200)]
python: Bulletproof Database() path parameter
libnotmuch (and python) crashed when I accidently passed in an invalid
value as path argument to the Database() instantiation.
Therefore, we now check via assert that the handed in path is actually a
real string (or None).
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Thu, 16 Jun 2011 13:41:48 +0000 (15:41 +0200)]
python: Improve API documentation
Various API doc cleanups and improvements. No code change.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Thu, 16 Jun 2011 12:41:02 +0000 (14:41 +0200)]
Implement Message.tags_to_maildir_flags
and also maildir_flags_to_tags. The methods will be invoked by
db.add_message() and also (if not overridden via function parameter) by
add|remove_tag and remove_all_tags. Documentation on the usage has been
updated.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Wed, 15 Jun 2011 19:36:26 +0000 (21:36 +0200)]
python: Improve documentation
Improve the documentation with regard to the new __cmp__ and __hash__
methods and the implications of doing set arithmetic with Messages()
objects.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Dmitry Kurochkin [Wed, 15 Jun 2011 11:12:14 +0000 (15:12 +0400)]
Fix indentation in guess_from_received_header().
Dmitry Kurochkin [Wed, 15 Jun 2011 11:12:13 +0000 (15:12 +0400)]
Fix memory leak in guess_from_received_header().
Mta variable was not free()d in one case.
Dmitry Kurochkin [Wed, 15 Jun 2011 11:12:12 +0000 (15:12 +0400)]
Fix double free in guess_from_received_header().
Before the change, the last loop in guess_from_received_header()
did not reset domain and tld variables to NULL. This leads to
double free error in some cases and possibly other bugs.
Dmitry Kurochkin [Wed, 25 May 2011 22:10:16 +0000 (02:10 +0400)]
Simplify message and headers visibility code in notmuch-show view.
Before the change, headers and message visibility functions took
extra care to correctly set `buffer-invisibility-spec'. This was
needed because headers overlay `invisible' property had only
headers' invisibility spec. So visibility of headers was
determined only by the headers invisibility spec. The patch sets
headers overlay `invisible' property a list with both the headers
and the message invisibility spec. This makes headers invisible
if either of them is added to the `buffer-invisibility-spec' and
allows to simplify the code.
Dmitry Kurochkin [Wed, 25 May 2011 22:10:15 +0000 (02:10 +0400)]
Set higher priority for headers and hidden citation overlays.
Before the patch, message, headers and hidden citation overlays
had zero priority. All these overlay have `invisible' property.
Emacs documentation says that we should not make assumptions
about which overlay will prevail when they have the same priority
[1]. It happens to work as we need, but we should not rely on
undocumented behavior.
[1] http://www.gnu.org/s/emacs/manual/html_node/elisp/Overlay-Properties.html
Dmitry Kurochkin [Wed, 25 May 2011 22:10:14 +0000 (02:10 +0400)]
Fix hiding a message while some citations are shown in notmuch-show view.
Before the change, message and citation invisibility overlays
conflicted: if some citation is made visible and then the whole
message is hidden, that citation remained visible. This happened
because the citation's overlay has an invisible property which
takes priority over the message overlay. The message
invisibility spec does not affect citation visibility, it is
determined solely by the citation overlay invisibility spec.
Hence, if citation is made visible, it is not hidden by message
invisibility spec.
The patch changes citation overlay invisibility property to be a
list which contains both the citation and the message
invisibility specs. This makes the citation invisible if either
of them is added to the `buffer-invisibility-spec'. Note that
all citation visibility states are "restored" when the message
hidden and shown again.
Dmitry Kurochkin [Wed, 25 May 2011 22:10:13 +0000 (02:10 +0400)]
Set message invisibility spec properties before inserting the body.
This would allow body-inserting code (in particular, wash
button-inserting code) to use message invisibility specs.
Dmitry Kurochkin [Wed, 25 May 2011 22:10:12 +0000 (02:10 +0400)]
Pass message to the `notmuch-show-insert-text/plain-hook' hook.
Before the change, the `notmuch-show-insert-text/plain-hook' was
given only the `depth' argument. The patch adds another one -
the message. Currently, the new message argument is not used by
any on the hooks. But it will be used later to get access to
message invisibility specs when wash buttons are inserted.
Dmitry Kurochkin [Sat, 28 May 2011 01:29:17 +0000 (05:29 +0400)]
Workaround for Emacs bug #8721.
The emacs bug is that isearch cannot search through invisible text
when the 'invisible' property is a list.
The patch adds `notmuch-isearch-range-invisible' function which
is the same as `isearch-range-invisible' but with fixed Emacs bug
#8721. Advice added for `isearch-range-invisible' which calls
`notmuch-isearch-range-invisible' instead of the original
`isearch-range-invisible' when in `notmuch-show-mode'.
Dmitry Kurochkin [Thu, 26 May 2011 21:38:34 +0000 (01:38 +0400)]
test emacs: Add tests for hiding messages in notmuch-show view
This test is expected to fail as it exposes a current bug, (which we
hope to fix soon).
Sebastian Spaeth [Wed, 15 Jun 2011 13:05:47 +0000 (15:05 +0200)]
python: Implement Message.__cmp__ and __hash__
We can now do: if msg1 == msg2, and we can use set arithmetic on
Messages():
s1, s2= msgs1, msgs2
s1.union(s2)
s2 -= s1
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Wed, 15 Jun 2011 12:25:33 +0000 (14:25 +0200)]
python: Remove Messages().__len__
Messages.__len__() exhausted the iterator and list() inherently calls
len(), so we could not invoke list(msgs) without getting errors. Fix
this by implementing __nonzero__ but removing __len__ on Messages.
Use Query.count_messages() or len(list(msgs)) if you need to know the
number.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Carl Worth [Sat, 11 Jun 2011 00:18:27 +0000 (17:18 -0700)]
test: Fix from-guessing to actually span Received headers over multiple lines
The intent was always to make these Received headers span multiple
lines. But the escapes were causing the shell to ignore the newlines,
so that the result instead was long Received headers on a single line
each.
Fixing the intent here doesn't actually change the test-suite results
at all.
Stewart Smith [Tue, 17 May 2011 02:10:32 +0000 (12:10 +1000)]
Fix appending of Received headers
We're not properly concatenating the Received headers if we parse them
while requesting a header that isn't Received.
this fixes notmuch-reply address detection in a bunch of situations.
Carl Worth [Fri, 10 Jun 2011 23:53:45 +0000 (16:53 -0700)]
test: Extend from-guessing test with a test with multiple Received headers
This is much more realistic, as most messages in the wild will have multiple
Received headers. Also, this demonstrates a current bug in the Received
header parsing, (multiple Received headers are not properly concatenated
depending on the order in which headers are parsed in a message).
Carl Worth [Fri, 10 Jun 2011 23:28:26 +0000 (16:28 -0700)]
test: Add test that emacs detects and hides top-post quotes of original messages
This tests the recently-added detection/hiding of top-posted quotations and
in the testing, it takes advantage of the less-recently-added
visible-buffer-string function for emitting only the visible text
from a buffer.
David Bremner [Wed, 24 Feb 2010 18:30:06 +0000 (14:30 -0400)]
notmuch.el: hide original message in top posted replies.
This code treats top posted copies essentially like signatures, except
that it doesn't sanity check their length, since neither do their
senders.
New user-visible variables:
notmuch-wash-button-original-hidden-format
notmuch-wash-button-original-visible-format
Rebased-by: Carl Worth <cworth@cworth.org>
Daniel Kahn Gillmor [Fri, 3 Jun 2011 23:57:46 +0000 (19:57 -0400)]
Use stock GMimeSession by default
Our use of GMimeSession was unneeded boilerplate, and we weren't doing
anything with it. This simplifies and clarifies that assumption.
If we want to do anything fancier later, the examples in the gmime
source are a reasonable source to work from in defining a new
GMimeSession derivative.
Since GMimeSession is going away in GMime 2.6, though, i don't
recommend using it.
Jameson Graef Rollins [Sat, 28 May 2011 21:52:00 +0000 (14:52 -0700)]
show: Avoid inadvertently closing stdout
GMime has a nasty habit of taking ownership by default of any FILE*
handed to it va g_mime_stream_file_new. Specifically it will close the
FILE* when the stream is destroyed---even though GMime didn't open the
file itself.
To avoid this bad behavior, we have to carefully set_owner(FALSE)
after calling g_mime_stream_file_new. In the format_part_content_text
function, since commit
d92146d3a6809f8ad940302af49cd99a0820665e we've
been calling g_mime_stream_file_new unconditionally, but only calling
g_mime_stream_file_set_owner(FALSE) conditionally.
This led to the FILE* being closed early when notmuch show output was
redirected to a file.
Fixing this fixes the test-suite cases that broke with the previous
commit, (which added redirected "notmuch show" calls to the test suite
to expose this bug).
Edited-by: Carl Worth <cworth@cworth.org> with a new commit message to
explain the bug and fix.
Jameson Graef Rollins [Sat, 28 May 2011 21:16:30 +0000 (14:16 -0700)]
test: modify multipart test to use test_expect_equal_file
Again, this is a much cleaner and more thorough test, and in fact
exposes a bug in the format=text output, that will be fixed the next
commit. Because of this, some of the multipart tests currently fail.
Jameson Graef Rollins [Sat, 28 May 2011 20:46:24 +0000 (13:46 -0700)]
test: update emacs test to use test_expect_equal_file
This is a much cleaner way to do the emacs tests, since we're actually
comparing output against existing files with expected output. We also
won't miss any trailing newlines this way.
And speaking of which, one of the expected output files was actually
missing a trailing blank line that was actually in one of the original
messages, so this was fixed.
Dmitry Kurochkin [Thu, 12 May 2011 13:56:25 +0000 (17:56 +0400)]
Make `notmuch-show-clean-address' parsing-error-proof.
Mail-header-parse-address may fail for an invalid address.
Before the change, this would result in empty notmuch-show buffer
with an error message like: Scan error: "Unbalanced parentheses".
The patch wraps the function in condition-case and returns
unchanged address in case of error.
Dmitry Kurochkin [Thu, 12 May 2011 13:56:26 +0000 (17:56 +0400)]
test: add "notmuch-show for message with invalid From" test
Thomas Jost [Sat, 28 May 2011 21:51:56 +0000 (14:51 -0700)]
emacs: Cleaner interface when prompting for sender address
Most of the time, every entry in the list of identities has the same user name
part. It can then be filled in automatically, and the user can only be prompted
for the email address, which makes the interface much cleaner.
Thomas Jost [Sat, 28 May 2011 21:51:55 +0000 (14:51 -0700)]
emacs: Don't always prompt for the "From" address when replying
When replying, the From: address is already filled in by notmuch reply, so most
of the time there is no need to prompt the user for it.
Jameson Graef Rollins [Sat, 28 May 2011 21:51:54 +0000 (14:51 -0700)]
emacs: fix notmuch-show-part-button to not include newline
This makes the button cleaner, so that it doesn't include the entire
rest of the line that the button is on.
Austin Clements [Sat, 28 May 2011 21:51:53 +0000 (14:51 -0700)]
Fix misspelling in search output sanitization test.
A simple spelling fix in the text description.
Signed-off-by: Jameson Graef Rollins <jrollins@finestructure.net>
Daniel Kahn Gillmor [Sat, 28 May 2011 21:51:52 +0000 (14:51 -0700)]
avoid segfault when calling sanitize_string() on NULL
Signed-off-by: Jameson Graef Rollins <jrollins@finestructure.net>
Anton Khirnov [Sat, 28 May 2011 21:51:51 +0000 (14:51 -0700)]
lib/message-file: plug three memleaks.
Signed-off-by: Jameson Graef Rollins <jrollins@finestructure.net>
Dmitry Kurochkin [Sat, 28 May 2011 21:51:50 +0000 (14:51 -0700)]
Use message-field-value instead of message-fetch-field in FCC header setup.
For message-fetch-field the buffer is expected to be narrowed to
just the header of the message. That is not the case when
notmuch-fcc-header-setup is run, hence a wrong header value may be
returned. E.g. when forwarding an
email, (message-fetch-field "From") returns the From header value
of the forwarded email.
Message-field-value is the same as message-fetch-field, only
narrows the buffer to the headers first.
Signed-off-by: Jameson Graef Rollins <jrollins@finestructure.net>
Sebastian Spaeth [Thu, 2 Jun 2011 15:44:23 +0000 (17:44 +0200)]
bindings/python: Bump bindings version to 0.6
To match the upcoming release, and with the updated API to match the
current libnotmuch, bump the python version number (notmuch.__VERSION__)
to 0.6.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Thu, 2 Jun 2011 15:28:50 +0000 (17:28 +0200)]
bindings/python: Implement Tags().__nonzero__()
Analog to Threads.__nonzero__ this allows us to perform list() on a Threads() object and to repeatedly call "if Tags():" or "bool(Tags())" without implicitly invoking len(), thus exhausting our iterator.
While touching this code, I added a small micro-optimization to the Tag next() function. There is no need to explicitly check _is_valid, as _get implicitly does check for validness and returns None, if there is no more Tag to fetch. This avoids some roundtrips into the library when iterating through Tags.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Thu, 2 Jun 2011 14:28:00 +0000 (16:28 +0200)]
bindings/python: implement Threads().__nonzero__
__nonzero__ checks if Threads() contains at least one more valid thread
The existence of this function makes 'if Threads(): foo' work, as that
previously implicitely called len() exhausting the iterator. This
function makes `bool(Threads())` work repeatedly.
For further info, see http://docs.python.org/reference/datamodel.html.
Credits for the hint go to Brian May.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Thu, 2 Jun 2011 07:20:56 +0000 (09:20 +0200)]
bindings/python: Include the new get_filenames in the API docs
They had accidentally been left out, so we should also include the
function docs for get_messages in the API docs.
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Sebastian Spaeth [Thu, 2 Jun 2011 06:56:03 +0000 (08:56 +0200)]
bindings/python: Implement Message().get_filenames()
Message().get_filenames() will return a generator that allows to
iterator over the recorded filenames for a certain Message. Do ntoe that
as all generators, these are one-time use only. You will have to reget
them to perform various actions. So this works::
len(Message().get_filenames())
list(Message().get_filenames())
for n in Message().get_filenames():
print n
But this won't::
names = Message().get_filenames()
len(names) #uses up the iterator
list(names) #outch, already used up...
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Pieter Praet [Sun, 20 Mar 2011 10:06:22 +0000 (11:06 +0100)]
emacs: Use "message-cited-text" instead of "message-cited-text-face"
(describe-face 'message-cited-text-face)
> message-cited-text-face is an alias for the face `message-cited-text'.
> This face is obsolete since 22.1; use `message-cited-text' instead.
Signed-off-by: Pieter Praet <pieter@praet.org>
Signed-off-by: Jameson Graef Rollins <jrollins@finestructure.net>
Jameson Graef Rollins [Sun, 8 May 2011 23:55:07 +0000 (16:55 -0700)]
test: cleanup search-output test names (no functional change)
Signed-off-by: Jameson Graef Rollins <jrollins@finestructure.net>
Florian Friesdorf [Sun, 8 May 2011 23:13:15 +0000 (01:13 +0200)]
test: add test for sanitized notmuch-search output
This feature was recently added, so it of course needs a test now.
Signed-off-by: Jameson Graef Rollins <jrollins@finestructure.net>
Edited-by: Carl Worth <cworth@cworth.org> Fixed test to use
notmuch_search_sanitize in order to be robust against unpredictable
thread ID numbers, (due to unpredictable order in which the filesystem
presents files).
Andreas Amann [Sun, 8 May 2011 21:14:33 +0000 (23:14 +0200)]
Sanitize "Subject:" and "Author:" fields to not contain control characters in notmuch-search
When a Subject field contained encoded CRLF sequences, these sequences
would appear unfiltered in the output of notmuch search. This confused
the notmuch emacs interface leading to "Unexpected Output"
messages. This is now fixed by replacing all characters with ASCII
code less than 32 with a question mark.
Signed-off-by: Jameson Graef Rollins <jrollins@finestructure.net>
Thomas Jost [Wed, 30 Mar 2011 22:31:04 +0000 (00:31 +0200)]
emacs: Define several faces for the crypto-status button
Signed-off-by: Jameson Graef Rollins <jrollins@finestructure.net>
jrollins modified this patch to conform to recent changes in the
crypto processing since this patch was originally sent in.
Florian Friesdorf [Mon, 18 Apr 2011 17:41:39 +0000 (19:41 +0200)]
test: Create and set temporary home directory
In the master branch in test/emacs two tests access the build users home
directory, so does emacs_deliver_message in the crypto branch.
The tests should not touch the build user's home directory. The patch
creates a directory in the temporary test directory and sets home
accordingly.
In case of a non-existent home directory, the tests are failing without
this patch.
Signed-off-by: Jameson Graef Rollins <jrollins@finestructure.net>
Jameson Graef Rollins [Sun, 8 May 2011 21:13:05 +0000 (14:13 -0700)]
test: remove json test for search null result, since it's being more properly tested in search-output
The test in json was inferior to the one in search-output, since it
wasn't properly testing for the presence of a trailing newline.
Jameson Graef Rollins [Sun, 8 May 2011 21:04:47 +0000 (14:04 -0700)]
test: move utf-8 subject search test from json to search test script
This test doesn't have anything to do with json, and has everything to
do with testing search capability, so I'm not sure why it was in the
wrong place.
Jameson Graef Rollins [Fri, 6 May 2011 18:57:16 +0000 (11:57 -0700)]
test: Move a test from search to search-output, and add a similar json test
The "Search for non-existent message prints nothing" test fits better
with the existing tests in search-output, so move it there. Also add a
similar test for the --format=json case.
These tests also use the new test_expect_equal_file function, (to ensure
that the presence of a trailing newline is correctly tested).
Jameson Graef Rollins [Fri, 6 May 2011 19:03:04 +0000 (12:03 -0700)]
Fix missing final newline in notmuch search output
A previous commit to fix json formatting for null results
(
0b1ddc5f6652bde99d63d9d553777b3d926694cf) accidentally introduced a
regression that removed trailing newlines for non-json output. (There
wasn't a good test for this previously, but there is now). The
problem is due to the fundamental differences in formatting between
the json and non-json outputs. The only way to fix this was to add a
new formatting field that represents the string to output at the end
of a null result.
All output formatting tests should pass now, (in particular, the 4
recent test failures introduced to show this bug).
Jameson Graef Rollins [Fri, 6 May 2011 18:52:10 +0000 (11:52 -0700)]
test: modify search-output test to use the new test_expect_equal_file function
These test now properly test for the presence of a newline at the end
of all output. Right now some of these test will fail because the
search output is currently broken to *not* produce proper newlines in
some cases.
Jameson Graef Rollins [Thu, 5 May 2011 16:38:38 +0000 (09:38 -0700)]
add note about updating the debian symbols file to the RELEASE file
Carl Worth [Wed, 1 Jun 2011 20:02:58 +0000 (13:02 -0700)]
configure: Fix detection of libdir in ldconfig configuration
Ever since commit
b4b5e9ce4dac62111ec11da6d22b7e618056801f the
detection of libdir in the ldconfig configuration has been broken,
resulting in RPATH being set when not needed and not wanted.
The cause was a change from an IFS setting of:
IFS="$(printf '\n\t')"
to a new setting of:
IFS="$(printf '\n')"
That looks desirable since we want to split the output of ldconfig
based on newlines, (and not split on any filename that might have an
embedded tab in it). The subtle bug in the above is that the shell
trims any trailing newlines when performing command substitution so
the final statement above was equivalent to:
IFS=''
which prevented any splitting of the ldconfig output at all.
Fix this by avoiding command substitution and just using a literal
newline in the source file for setting this variable.
Felipe Contreras [Sun, 6 Feb 2011 12:10:53 +0000 (14:10 +0200)]
vim: add delete commands
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Felipe Contreras [Thu, 9 Dec 2010 19:19:44 +0000 (21:19 +0200)]
vim: add support for delete in search view
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Felipe Contreras [Thu, 9 Dec 2010 19:15:43 +0000 (21:15 +0200)]
vim: add support to mark as read in search view
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Felipe Contreras [Wed, 16 Jun 2010 22:38:47 +0000 (01:38 +0300)]
vim: add support to mark as read in show view
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Carl Worth [Tue, 31 May 2011 23:20:56 +0000 (16:20 -0700)]
Rename signerstatustostring to signer_status_to_string
Otherwise, it's fartoohardformetoreadthis code.
Carl Worth [Tue, 31 May 2011 23:18:45 +0000 (16:18 -0700)]
Reduce some excessive indentation.
I prefer checking a condition and returning early rather than making
large blocks of code within a function conditional.
Carl Worth [Tue, 31 May 2011 23:16:04 +0000 (16:16 -0700)]
show: Remove some dead code from show_text_part_content
Now that this function registers an internal error if called with a
non-text part, we can remove the conditions for multipart and
message-part content types.
Carl Worth [Tue, 31 May 2011 23:13:21 +0000 (16:13 -0700)]
notmuch show: Don't do text conversions for non-text parts
This fixes the recently-added test case (in test/multipart)
demonstrating corruption of binary parts that happen to contain CRLF
pairs.
We restore the original code from show_one_part_content to
format_part_content_raw. Then, for good measure, we rename
show_part_content to the more descriptive show_text_part_content and
add an internal error if it is ever called with a non-text part.
Carl Worth [Tue, 31 May 2011 22:39:26 +0000 (15:39 -0700)]
test: Add test showing notmuch corrupts a part with a CRLF pair in it
Since commit
2f8871df6ea3c0b44f85a0fc1b4f58a6b70b0a0e notmuch has been
using a function (show_part_content) originally written only for text
parts to save all MIME parts. The problem with this is that this
function converts CRLF pairs to LF only and optionally converts to
UTF-8 encoding. These two conversions have the potential to corrupt
binary data when passed through the function.
This test demonstrates that corruption, and so fails currently, until
we fix the bug.
Carl Worth [Tue, 31 May 2011 22:19:12 +0000 (15:19 -0700)]
test: Fix a misspelling in one of our test cases.
Not that it affects the correctness of the test, but it's nice to use
proper spelling. This kind of change could invalidate a signature on the
test message, but I think that would have happened previously when the
HTML part was added in the first place.
Dmitry Kurochkin [Tue, 10 May 2011 03:30:51 +0000 (07:30 +0400)]
test: add test for saving attachments using notmuch-show-save-part
Use .gz filenames for saved attachments in the tests to check
that Emacs does not re-compress the file.
Use test_expect_equal_file instead of test_expect_equal to avoid
binary output on the console.
Dmitry Kurochkin [Tue, 10 May 2011 03:30:50 +0000 (07:30 +0400)]
test: copy files in test_expect_equal_file instead of moving them
Before the change, test_expect_equal_file moved files it compared
in case of failure. The patch changes it to copy the files
instead. This allows testing non-temporary files which are
stored in git.
Note: the change should not result in new temporary files left
after the tests. Test_expect_equal_file used to move files only
on failure, so callers had to cleanup them anyway.
Dmitry Kurochkin [Mon, 9 May 2011 23:33:55 +0000 (03:33 +0400)]
Don't re-compress .gz & al. in notmuch-show-save-part.
Write-region handles some file names specially, see Emacs Lisp
manual section 25.11 Making Certain File Names "Magic" [1]. This
is a nice feature for normal text editing, but it is not
desirable if we need to save raw file content (e.g. attachment).
In particular, this affects archives and may result in corrupted
attachments saved with notmuch-show-save-part (attachment button
click handler).
Turns out, smart GNUS folks encountered the same problem and
implemented write-region wrapper which inhibits some file name
handlers. In particular, this wrapper is used in mm-save-part,
which is why notmuch-save-attachments that uses it works fine
with archives.
The patch replaces write-region with mm-write-region in
notmuch-show-save-part. Also it removes coding-system-for-write
and require-final-newline setting in notmuch-show-save-part. The
former is set in mm-write-region. The latter seems to be
unneeded because mm-save-part does not use it.
[1] http://www.gnu.org/s/emacs/manual/html_node/elisp/Magic-File-Names.html
Jameson Graef Rollins [Fri, 27 May 2011 18:52:19 +0000 (11:52 -0700)]
emacs: Give mutlipart/{signed, encrypted} their own part handler.
This is the best way to make the displayed output for
decrypted/verified messages clearer. The special sigstatus and
encstatus buttons are now displayed under the part header button. The
part header button is also tweaked to provide information to user
about how to proces crypto.
Jameson Graef Rollins [Fri, 27 May 2011 10:27:38 +0000 (03:27 -0700)]
emacs: Do not attempt to render arbitrary application parts.
We probably shouldn't have been doing this anyway, but we do it here
specifically because we don't want the content of the
application/pgp-encrypted parts to be displayed and cluttering the
message show.
Jameson Graef Rollins [Fri, 27 May 2011 10:27:37 +0000 (03:27 -0700)]
Render all parts of multipart/encrypted when decrypting.
The primary goal here is to keep the decrypted output as similarly
structured as undecrypted output as possible. Now, when decrypting
parts, only the original encrypted part is replaced by the it's
decrypted content. If this part isn't itself a multipart, then all
part numbering should remain consistent during decryption.
The only draw back here is that the useless application/pgp-encrypted
sub-part of the multipart/encrypted part is also emitted. But this
part can be easily ignored by clients.
Jameson Graef Rollins [Fri, 27 May 2011 10:27:36 +0000 (03:27 -0700)]
Do not replace multipart/signed part with content part when doing verification.
Some folks have complained about the part renumbering that occurs when
the entire multipart/signed part is replaced with the part contents
after verification. This is primarily because it incurs an additional
computational cost to retrieve individual parts, since verification
has to be performed again to ensure that part numbering is consistent.
This patch simply leaves the full multipart/signed part as is.
The emacs crypto test is also updated to reflect this change.
Jameson Graef Rollins [Thu, 26 May 2011 01:01:20 +0000 (18:01 -0700)]
tag signed/encrypted during notmuch new
This patch adds the tag "signed" to messages with any multipart/signed
parts, and the tag "encrypted" to messages with any
multipart/encrypted parts. This only occurs when messages are indexed
during notmuch new, so a database rebuild is required to have old
messages tagged.
Jameson Graef Rollins [Thu, 26 May 2011 01:01:19 +0000 (18:01 -0700)]
emacs: Add support for PGP/MIME verification/decryption
A new emacs configuration variable "notmuch-crypto-process-mime"
controls the processing of PGP/MIME signatures and encrypted parts.
When this is set true, notmuch-query will use the notmuch show
--decrypt flag to decrypt encrypted messages and/or calculate the
sigstatus of signed messages. If sigstatus is available, notmuch-show
will place a specially color-coded header at the begining of the
signed message.
Also included is the ability to switch decryption/verification on/off
on the fly, which is bound to M-RET in notmuch-search-mode.
Jameson Graef Rollins [Thu, 26 May 2011 01:01:18 +0000 (18:01 -0700)]
Add decryption of PGP/MIME-encrypted parts with --decrypt.
This adds support for decrypting PGP/MIME-encrypted parts to
notmuch-show and notmuch-reply. The --decrypt option implies
--verify. Once decryption (and possibly signature verification) is
done, a new part_encstatus formatter is emitted, the part_sigstatus
formatter is emitted, and the entire multipart/encrypted part is
replaced by the contents of the encrypted part.
At the moment only a json part_encstatus formatting function is
available, even though decryption is done for all formats. Emacs
support to follow.
Jameson Graef Rollins [Thu, 26 May 2011 01:01:17 +0000 (18:01 -0700)]
Add signature verification of PGP/MIME-signed parts with --verify.
This is primarily for notmuch-show, although the functionality is
added to show-message. Once signatures are processed a new
part_sigstatus formatter is emitted, and the entire multipart/signed
part is replaced with the contents of the signed part.
At the moment only a json part_sigstatus formatting function is
available. Emacs support to follow.
The original work for this patch was done by
Daniel Kahn Gillmor <dkg@fifthhorseman.net>
whose help with this functionality I greatly appreciate.
Jameson Graef Rollins [Thu, 26 May 2011 01:01:16 +0000 (18:01 -0700)]
test: add crypto tests for signature verification and decryption
This adds a new "crypto" test script to the test suite to test
PGP/MIME signature verification and message decryption. Included here
is a test GNUPGHOME with a test secret key (passwordless), and test
for:
* signing/verification
* signing/verification with full owner trust
* verification with signer key unavailable
* encryption/decryption
* decryption failure with missing key
* encryption/decryption + signing/verfifying
* reply to encrypted message
* verification of signature from revoked key
These tests are not expected to pass now, but will as crypto
functionality is included.
Jameson Graef Rollins [Thu, 26 May 2011 01:01:15 +0000 (18:01 -0700)]
test: add notmuch_show_sanitize_all function that is a little more aggressive.
The old notmuch_show_sanitize function only scrubed part of the
filename. This one scrubs the full filename, as well as the message
id.
Jameson Graef Rollins [Thu, 26 May 2011 01:01:14 +0000 (18:01 -0700)]
test: new test-lib function to test for equality between files
We need to be able to test for the presence of a newline at the end of
output. There's no good way to capture trailing newlines in bash, so
redirecting output to a file is the next best thing. This new
function should be used when testing for output that is expected to
have trailing newlines.
The next commit will demonstrate the use of this.