Commit graph

3710 commits

Author SHA1 Message Date
Austin Clements
750231bae8 lib: Only synchronize maildir flags for messages in maildirs
Previously, we synchronized flags to tags for any message that looked
like it had maildir flags in its file name, regardless of whether it
was in a maildir-like directory structure.  This was asymmetric with
tag-to-flag synchronization, which only applied to messages in
directories named new/ and cur/ (introduced by 95dd5fe5).

This change makes our interpretation stricter and addresses this
asymmetry by only synchronizing flags to tags for messages in
directories named new/ or cur/.  It also prepares us to treat messages
in new/ as maildir messages, even though they lack maildir flags.
2012-06-10 20:13:58 -03:00
Austin Clements
93ab4c7d11 lib: Move _filename_is_in_maildir
This way notmuch_message_maildir_flags_to_tags can call it.  It makes
more sense for this to be just above all of the maildir
synchronization code rather than mixed in the middle.
2012-06-10 20:13:45 -03:00
Austin Clements
b0d0dab22a test: Add broken test for tag synchronization on files delivered to new/
Currently, notmuch new only synchronizes maildir flags to tags for
files that have an "info" part.  However, in maildir, new mail doesn't
gain the info part until it moves from new/ to cur/.  Hence, even
though mail in new/ doesn't have an info part, it is still a maildir
message and thus has maildir flags (though none of them set).

The most visible effect of not synchronizing maildir flags for
messages in new/ is that newly delivered messages don't get the unread
tag (unless it is assigned by some other mechanism, like new.tags).

This patch does *not* modify the test for messages in cur/ that do not
have an "info" part.  Unlike a message in new/, a message in cur/
without an info part is no longer a maildir message, and thus
shouldn't be subject to maildir flag synchronization.
2012-06-10 20:13:19 -03:00
Jameson Graef Rollins
e04b18cf36 cli: use new notmuch_crypto_get_context in mime-node.c
This has the affect of lazily creating the crypto contexts only when
needed.  This removes code duplication from notmuch-show and
notmuch-reply, and should speed up these functions considerably if the
crypto flags are provided but the messages don't have any
cryptographic parts.
2012-06-10 20:09:42 -03:00
Jameson Graef Rollins
b2c8fdee53 cli: new crypto verify flag to handle verification
Use this flag rather than depend on the existence of an initialized
gpgctx, to determine whether we should verify a multipart/signed.  We
will be moving to create the ctx lazily, so we don't want to depend on
it being previously initialized if it's not needed.
2012-06-10 20:09:09 -03:00
Jameson Graef Rollins
90822ffdb8 cli: modify mime_node_context to use the new crypto struct
This simplifies some more interfaces.
2012-06-10 20:08:56 -03:00
Jameson Graef Rollins
429ebf5d20 cli: modify mime_node_open to take new crypto struct as argument
This simplifies the interface considerably.
2012-06-10 20:06:48 -03:00
Jameson Graef Rollins
c3eba1c3f8 cli: modify show and reply to use new crypto struct
notmuch_show_params_t is modified to use the new notmuch_crypto_t, and
notmuch-show and notmuch-reply are modified accordingly.
2012-06-10 20:05:12 -03:00
Jameson Graef Rollins
e3be5afbad cli: new crypto structure to store crypto contexts and parameters, and functions to support it
This new structure, notmuch_crypto_t, keeps all relevant crypto
contexts and parameters together, and will make it easier to pass the
stuff around and clean it up.  The name of the crypto context inside
this new struct will change, to reflect that it is actually a GPG
context, which is a sub type of Crypto context.  There are other types
of Crypto contexts (Pkcs7 in particular, which we hope to support) so
we want to be clear.

The new crypto.c contains functions to return the proper context from
the struct for a given protocol (and initialize it if needed), and to
cleanup a struct by releasing the crypto contexts.
2012-06-10 20:05:02 -03:00
Jameson Graef Rollins
25c3140e13 cli: use new typedef to deal with gmime 2.4/2.6 context incompatibility
gmime 2.4 defines GMimeCipherContext, while 2.6 defines
GMimeCryptoContext.  typedef them both to notmuch_crypto_context_t to
cover this discrepancy and remove a bunch of #ifdefs.
2012-06-10 20:04:50 -03:00
Jani Nikula
0ff57e75cf emacs: only strip "re:" in the beginning of subject
Fix notmuch-show-strip-re by matching "re:" only in the beginning of
the input string.
2012-06-07 23:28:17 -03:00
Jani Nikula
627f7b27f9 test: add test for emacs notmuch-show-strip-re function
The function is used for stripping "re:" from subjects to generate
"bare subjects". Include broken test for having "re:" in the middle of
the subject.
2012-06-07 23:26:26 -03:00
Tomi Ollila
a114ac8b77 nmbug: check whether every forked process exit with (non)zero value
If any of the forked process exits with nonzero value, terminate
current operation -- nonzero exit value indicates failure and
then there is no point continuing.
2012-06-03 13:45:28 -03:00
Tomi Ollila
00a8581e4d uncrustify.cfg: comments and more types
Changes to devel/uncrustify.cfg:

* Updated header comment to state this is config file for *notmuch*.
* Added comment about the reason of 'type' keyword used.
* Added some more custom types woth 'type' keyword.
* Have (every) multiline comment lines start with '*'.
2012-06-03 13:39:57 -03:00
Austin Clements
44224b6259 emacs: Suppress warnings about using cl at runtime
It was decided in the thread starting at [0] that it is okay for
notmuch to use 'cl runtime functions.  However, by default, these
produce byte compiler warnings.  This suppresses those using
file-local variables.

[0] id:"m262g864dz.fsf@wal122.wireless-pennnet.upenn.edu"
2012-06-03 13:27:07 -03:00
Jameson Graef Rollins
12772b6762 config: add quoting to fix IFS bug
Without proper quoting the DEFAULT_IFS was getting set incorrectly,
which was causing problems with the storage of some variables later in
the script.  Quoting fixes the problem.
2012-06-03 13:26:44 -03:00
David Bremner
5973881b77 notmuch 0.13.2 release
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.12 (GNU/Linux)
 
 iJwEAAECAAYFAk/LdWUACgkQTiiN/0Um85mL8AP/UosXwRabmZT8WjsJ/tPT0N2s
 zIBguJM7jNwnODZ1kFuS5AjxslbsA3SVubWI1rB5CZwINoF0+f+zc1pHHjAjy61R
 XAbSIQsI+2XvnfvDFnLYzyZb6xUX/Q1vczoJ4o2ngLMW5+kkERWYN+T6Ee291c/D
 MTPvV4fuHxvnFAX+Oig=
 =DiJS
 -----END PGP SIGNATURE-----

Merge tag '0.13.2'

notmuch 0.13.2 release
2012-06-03 11:38:08 -03:00
David Bremner
2ef24acf03 debian: changelog stanza for 0.13.2-1 2012-06-02 18:17:42 -03:00
David Bremner
b9effbba38 NEWS: update for 0.13.2 2012-06-02 18:15:06 -03:00
David Bremner
9d5f73db7a version: update to 0.13.2 2012-06-02 18:10:55 -03:00
Austin Clements
c92e2bcd1c notmuch-deliver: Update to new notmuch_database_open API
Commit 5fddc07 changed this API, but missed this use of it.
2012-06-01 11:31:26 -03:00
Stefano Zacchiroli
981a87f735 notmuch-mutt: lookup notmuch-search-terms(7) when asked for help
When asked for interactive help, lookup notmuch-search-terms(7)
instead of notmuch(1). Syntax of notmuch queries used to be described
in the latter, but has recently been moved to the former.

Closes: #675073 (in the Debian BTS)
2012-05-29 18:18:07 -03:00
David Bremner
d99f15d7ee Merge branch 'release' 2012-05-29 09:07:31 -03:00
David Bremner
dd4c9b4cb6 NEWS: add item about ruby bindings.
Corrections or clarifications welcome.
2012-05-28 20:43:09 -03:00
Felipe Contreras
5946aba519 Revert "ruby: Add workarounds to use in-tree build not the installed one"
This reverts commit 82b73ffd73.

Only leave the copyright changes.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
(cherry picked from commit 35cb1c95cc)
2012-05-28 10:21:37 -03:00
Jameson Graef Rollins
fae97b1013 configure: add help note about gmime version 2012-05-25 21:40:55 -03:00
Jameson Graef Rollins
dc2877b232 cli: fix documentation about --decrypt for show
Forgot to mention that it implies --verify.
2012-05-25 21:40:31 -03:00
Dmitry Kurochkin
0bef41bf10 test: remove "Testing" from test description in emacs-hello and emacs-show
"Testing" is printed by test/test-lib.sh, so having "Testing" in test
description results in duplicate "Testing" in console output.
2012-05-25 21:38:54 -03:00
David Bremner
97527b0a66 debian: changelog stanza for 0.13.1 2012-05-25 21:25:29 -03:00
David Bremner
df96c93239 version: bump to 0.13.1 2012-05-25 21:17:54 -03:00
David Bremner
393afbfa61 fix release date for 0.13.1 2012-05-25 21:13:19 -03:00
Austin Clements
541ba7f94f NEWS for directory function fixes 2012-05-25 21:05:34 -03:00
Felipe Contreras
35cb1c95cc Revert "ruby: Add workarounds to use in-tree build not the installed one"
This reverts commit 82b73ffd73.

Only leave the copyright changes.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
2012-05-25 15:11:31 +02:00
Jani Nikula
2f1a11268f test: add tests for notmuch reply From guessing
Add tests for picking up user's From address from fallback headers
Envelope-To, X-Original-To, and Delivered-To.

Signed-off-by: Jani Nikula <jani@nikula.org>
2012-05-24 21:56:35 -03:00
Jani Nikula
22a18fc921 cli: also use Delivered-To header to figure out the reply from address
Add another fallback header Delivered-To for guessing the user's from
address for notmuch reply before using the Received
headers. Apparently some MTAs use Delivered-To instead of
X-Original-To (which already exists as a fallback).

Reported-by: Michael Hudson-Doyle <michael.hudson@canonical.com>
Signed-off-by: Jani Nikula <jani@nikula.org>
2012-05-24 21:56:21 -03:00
Austin Clements
308107e5ff Recommend libgmime-2.6-dev in INSTALL
Given that everything prefers 2.6 over 2.4, it seems appropriate to
suggest that people install the 2.6 dev package instead of 2.4.
2012-05-24 21:54:30 -03:00
Austin Clements
4ca36441a8 new: Unify add_files and add_files_recursive
Since starting at the top of a directory tree and recursing within
that tree are now identical operations, there's no need for both
add_files and add_files_recursive.  This eliminates add_files (which
did nothing more than call add_files_recursive after the previous
patch) and renames add_files_recursive to add_files.
2012-05-24 21:53:38 -03:00
Austin Clements
da170ee657 new: Merge error checks from add_files and add_files_recursive
Previously, add_files_recursive could have been called on a symlink to
a non-directory.  Hence, calling it on a non-directory was not an
error, so a separate function, add_files, existed to fail loudly in
situations where the path had to be a directory.

With the new stat-ing logic, add_files_recursive is always called on
directories, so the separation of this logic is no longer necessary.
Hence, this patch moves the strict error checking previously done by
add_files into add_files_recursive.
2012-05-24 21:53:19 -03:00
Austin Clements
d99270c450 new: Centralize file type stat-ing logic
This moves our logic to get a file's type into one function.  This has
several benefits: we can support OSes and file systems that do not
provide dirent.d_type or always return DT_UNKNOWN, complex
symlink-handling logic has been replaced by a simple stat fall-through
in one place, and the error message for un-stat-able file is more
accurate (previously, the error always mentioned directories, even
though a broken symlink is not a directory).
2012-05-24 21:53:08 -03:00
Austin Clements
72c944655f test: Test notmuch new with a broken symlink 2012-05-24 21:52:53 -03:00
Tomi Ollila
c2f6c2a407 NEWS: started 0.13.1 stanza: fix decoding of text/plain parts in reply
NEWS item for forthcoming 0.13.1 bug fix release: UTF-8 characters were
incorrectly decoded when inserting reply content from text/plain parts.
2012-05-24 21:43:20 -03:00
David Bremner
6d44c5af65 Merge branch 'release'
merge 0.13.1 bugfix patches back to master, fixes for emacs reply and
spurious directory document creation.
2012-05-23 22:48:16 -03:00
Jani Nikula
4c526fe351 cli: clean up user address matching code in guess_from_received_header()
Get rid of user address matching code duplication in
guess_from_received_header() by using the new address matching
helpers.

No functional changes.

Signed-off-by: Jani Nikula <jani@nikula.org>
2012-05-23 22:47:51 -03:00
Jani Nikula
e03ed64c8f cli: add user address matching helpers for notmuch reply
Add a multi-purpose address_match() function for matching strings
against user's configured primary and other email addresses. Add thin
wrappers user_address_in_string() and string_in_user_address() for
ease of use, and also convert existing address_is_users() to wrapper
for the same.

No functional changes.

Signed-off-by: Jani Nikula <jani@nikula.org>
2012-05-23 22:47:51 -03:00
Austin Clements
d9f61c26a1 lib: Don't needlessly create directory docs in _notmuch_message_remove_filename
Previously, if passed a filename with a directory that did not exist
in the database, _notmuch_message_remove_filename would needlessly
create that directory document.  Fix it so that doesn't happen.
2012-05-23 22:32:12 -03:00
Austin Clements
54508eb78d python: Remove find_message_by_filename workaround
Now that notmuch_database_find_message_by_filename works on read-only
databases, remove the workaround that disabled it on read-write
databases.

This also adds a regression test for find_message_by_filename.
2012-05-23 22:32:02 -03:00
Austin Clements
cdd698f969 lib: Make notmuch_database_find_message_by_filename not crash on read-only databases
Previously, _notmuch_database_filename_to_direntry would abort with an
internal error when called on a read-only database.  Now that creating
the directory document is optional,
notmuch_database_find_message_by_filename can disable directory
document creation (as it should) and, as a result, not abort on
read-only databases.
2012-05-23 22:31:47 -03:00
Austin Clements
f1f1e39639 python: Update Database.get_directory documentation
notmuch_database_get_directory no longer returns an error for
read-only databases, so remove ReadOnlyDatabaseError from the list of
get_directory exceptions.
2012-05-23 22:31:36 -03:00
Austin Clements
3f3c446c40 new: Remove workaround for detecting newly created directory objects
Previously, notmuch_database_get_directory did not indicate whether or
not the returned directory object was newly created, which required a
workaround to distinguish newly created directory objects with no
child messages from directory objects that had no mtime set but did
have child messages.  Now that notmuch_database_get_directory
distinguishes whether or not the directory object exists in the
database, this workaround is no longer necessary.
2012-05-23 22:31:10 -03:00
Austin Clements
fe1ca14104 lib: Make notmuch_database_get_directory return NULL if the directory is not found
Using the new support from _notmuch_directory_create, this makes
notmuch_database_get_directory a read-only operation that simply
returns the directory object if it exists or NULL otherwise.  This
also means that notmuch_database_get_directory can work on read-only
databases.

This change breaks the directory mtime workaround in notmuch-new.c by
fixing the exact issue it was working around.  This permits mtime
update races to prevent scans of changed directories, which
non-deterministically breaks a few tests.  The next patch fixes this.
2012-05-23 22:30:55 -03:00