Kevin McCarthy [Sun, 7 Oct 2018 22:31:40 +0000 (15:31 -0700)]
Convert maildir_parse_dir to use struct Buffer.
Note: the uses of buf and tmp don't overlap, so we only use a single
struct Buffer.
Kevin McCarthy [Sun, 7 Oct 2018 22:18:34 +0000 (15:18 -0700)]
Convert buffy_maildir_check_dir to use struct Buffer.
Kevin McCarthy [Mon, 8 Oct 2018 17:36:13 +0000 (10:36 -0700)]
Convert mix_send_message to use buffer pool.
Kevin McCarthy [Mon, 8 Oct 2018 17:48:29 +0000 (10:48 -0700)]
Create mutt_buffer_add_printf().
Change mutt_buffer_printf() to overwrite the buffer contents, like
mutt_buffer_strcpy().
mutt_buffer_add*() functions append to the buffer contents.
Kevin McCarthy [Sat, 6 Oct 2018 22:07:27 +0000 (15:07 -0700)]
Convert imap_rename and pgp_invoke_list_keys to use buffer pool.
Kevin McCarthy [Sat, 6 Oct 2018 20:53:33 +0000 (13:53 -0700)]
Add buffer pool functions.
Also add a few helper functions: mutt_buffer_clear(),
mutt_buffer_strcpy(), and a macro mutt_b2s to grab the buffer data as
a const char *.
Pietro Cerutti [Tue, 9 Oct 2018 12:33:31 +0000 (12:33 +0000)]
Fix segfault when checking a mailbox after a disconnect (III)
Issue #1349
Richard Russon [Fri, 28 Sep 2018 15:16:39 +0000 (16:16 +0100)]
ImapAccountData
Even though it's attached to a Mailbox, this is Account data.
Richard Russon [Mon, 8 Oct 2018 16:20:17 +0000 (17:20 +0100)]
notmuch: use global settings for vfolder-from-query
Austin Ray [Sat, 6 Oct 2018 19:55:26 +0000 (15:55 -0400)]
notmuch: simplify uri creation logic
If `mdata` does not exist in `mailbox`, try to create a default instance
of `NmMboxData`. Using a default instance removes two conditionals from
`nm_uri_from_query(...)`, moving them to `nm_get_default_data(...)`.
This reduces the number of `snprintf(...)` to maintain, and allows query
parsing for type meta-data.
An extra variable keeps track of default data usage for freeing
allocated memory.
Josh Poimboeuf [Thu, 31 May 2018 21:58:02 +0000 (16:58 -0500)]
notmuch: use global settings for vfolder-from-query
When the <vfolder-from-query> command is run while already in a vfolder,
it takes the current vfolder as context. That means the global settings
(nm_query_type, nm_db_limit, nm_default_uri) are ignored in favor of the
current vfolder's settings. This is confusing behavior because the new
vfolder is otherwise independent from the old one.
Set the nm_uri_from_query() context to NULL so that it uses the global
settings instead.
Richard Russon [Mon, 8 Oct 2018 12:11:08 +0000 (13:11 +0100)]
fix index allocation
The `vcount` wasn't being reset, so the index overflowed later.
Richard Russon [Sun, 7 Oct 2018 14:46:25 +0000 (15:46 +0100)]
notmuch: fix variable used after its scope
The progress bar keeps a reference to `msgbuf`.
Stefano Zacchiroli [Sun, 23 Sep 2018 07:48:52 +0000 (09:48 +0200)]
notmuch: reconstruct thread on-the-fly upon entire-thread and no vfolder
Before this change <entire-thread> worked only if invoked from a virtual
folder.
Now <entire-thread> works also from regular folders, with the following
semantics:
- a notmuch search is done on the fly using as query the message-id of the
currently selected message
- mutt switches to the query result (a vfolder)
- <entire-thread> is invoked as before, expanding the thread of the original
message
Closes #1345
Richard Russon [Sat, 6 Oct 2018 10:57:15 +0000 (11:57 +0100)]
merge: trivial fixes
* clang-format
* cppcheck: reduce variable scope
* scan-build: fix errors
* replace strncpy with strfcpy
Richard Russon [Fri, 5 Oct 2018 22:04:14 +0000 (23:04 +0100)]
replace strncpy with strfcpy
strncpy isn't guaranteed to NUL-terminate strings
Richard Russon [Fri, 5 Oct 2018 17:14:09 +0000 (18:14 +0100)]
scan-build: fix errors
Richard Russon [Fri, 5 Oct 2018 16:17:42 +0000 (17:17 +0100)]
cppcheck: reduce variable scope
Richard Russon [Thu, 4 Oct 2018 14:56:10 +0000 (15:56 +0100)]
merge: notmuch: Allow type= statements in vfolder-from-query
* Implement case-insensitive substring search
* Implement substring removal function
* Testing: mutt_str_strcasestr
* Notmuch: Parse `type=` statements from query
Closes #1214
Closes #1319
Austin Ray [Sat, 18 Aug 2018 22:15:38 +0000 (18:15 -0400)]
Notmuch: Parse `type=` statements from query
Implemented a function that will parse `type=` statements from a notmuch
query and set the appropriate query type in `NmCtxData`.
This change allows a user to change the query type for a single query
without affecting other queries. The primary use is for executing
`vfolder-from-query`.
This commit ensures notmuch integration behavior conforms to NeoMutt's
notmuch documentation.
Austin Ray [Sat, 18 Aug 2018 22:38:53 +0000 (18:38 -0400)]
Testing: mutt_str_strcasestr
Included alongside this implementation are tests for NULL input, empty
string inputs, non-existent needles, and different size haystacks.
Austin Ray [Sat, 18 Aug 2018 22:14:04 +0000 (18:14 -0400)]
Implement substring removal function
Implemented a method that removes all instances of a substring from a
given string. The method has protections against trying to remove a
non-existent substring.
Austin Ray [Sat, 18 Aug 2018 21:21:14 +0000 (17:21 -0400)]
Implement case-insensitive substring search
Implemented a portable case-insensitive substring search since the C
standard does not provide one. A C implementation may include one as an
extension, but there is no way to ensure portability.
This implementation does a byte-by-byte in-place comparison so it will
return unspecified results for multibyte locales.
Included alongside this implementation are tests for NULL input, empty
string inputs, non-existent needles, and different size haystacks.
Richard Russon [Thu, 4 Oct 2018 14:20:09 +0000 (15:20 +0100)]
clang-format
x3nb63 [Fri, 27 Jul 2018 18:42:50 +0000 (20:42 +0200)]
add %Fp expando for plain from address
Austin Ray [Wed, 22 Aug 2018 03:06:17 +0000 (23:06 -0400)]
Notmuch: Change default window to be open ended
Change the default query window to be open ended, allowing for mail
from the future to appear in a query. This may occur if the sender's
time settings are improperly configured.
Signed-off-by: Austin Ray <austin@austinray.io>
Joey Pabalinas [Mon, 1 Oct 2018 21:30:59 +0000 (11:30 -1000)]
build: make samples reflect the provided libexecdir in ./configure
The /usr/libexec path is hardcoded in some of the samples. Run
sed on the installed versions to reflect the directory provided
in ./configure.
Fixes issue #1350
Signed-off-by: Joey Pabalinas <joeypabalinas@gmail.com>
Richard Russon [Tue, 2 Oct 2018 10:25:50 +0000 (11:25 +0100)]
fix mailbox crash
Mentioned in #1349
Thanks to @l29ah for the backtrace.
Richard Russon [Mon, 1 Oct 2018 21:33:52 +0000 (22:33 +0100)]
move functions into mbox library
Richard Russon [Mon, 1 Oct 2018 22:34:23 +0000 (23:34 +0100)]
merge: upstream fixes
* Increase buffer sizes for some IMAP commands.
* Change imap_rename_mailbox to use a BUFFER.
* Convert pgp_invoke_list_keys and mix_send_message to use BUFFERs.
Kevin McCarthy [Fri, 28 Sep 2018 22:08:19 +0000 (15:08 -0700)]
Convert pgp_invoke_list_keys and mix_send_message to use BUFFERs.
Both repetitively perform a lot of copying back in forth, which is
much cleaner with a BUFFER.
Note that in pgp_invoke_list_keys, if there are no hints uids->data
would be NULL. However, the pgp_invoke() checks and wraps all the
format substitutions with NONULL.
Kevin McCarthy [Fri, 28 Sep 2018 21:22:09 +0000 (14:22 -0700)]
Change imap_rename_mailbox to use a BUFFER.
Kevin McCarthy [Fri, 28 Sep 2018 00:29:16 +0000 (17:29 -0700)]
Increase buffer sizes for some IMAP commands.
Use to ensure assembled IMAP commands fit in the resultant buffer to
be imap_exec()'ed.
RFC2683 suggested a limit of 1000, but asked servers to accept up to
8000. Furthermore, RFC7162 bumped the client limit suggestion up to
8192. So I don't believe any issues will be caused by this.
Most of these are increases are just to remove theoretical truncation
warned about by the compiler; I don't believe we've had reports of
actual command truncation due to a mailbox 1024 characters long.
Kevin McCarthy [Wed, 26 Sep 2018 02:03:56 +0000 (19:03 -0700)]
Fix non-threaded $sort_aux "reverse-" sorting.
The secondary sort was looking at (Sort & SORT_REVERSE) instead
of (SortAux & SORT_REVERSE), so wasn't even performing the reverse
based on the correct flag.
Additionally, afterwards, the primary sort was improperly applying a
reverse when the secondary sort returned non-zero.
Change SORTCODE() to look at SortAux when we are inside a secondary
sort.
Change AUXSORT() to return the result if the secondary sort returns
non-zero. It is ugly to put a return inside the macro, but the check
for non-zero needs to be performed inside the AUXSORT if branch.
If the secondary sort returns 0, then the primary sort can still
compare index and apply a reverse as needed.
Richard Russon [Sat, 29 Sep 2018 23:14:38 +0000 (00:14 +0100)]
merge: minor tidying
* boolify: account_match
* rename header_cache_t vars
* move file_get_size
* docs: fix example
* doxy: comment remaining parse functions
* doxy: comment remaining connection functions
Richard Russon [Sat, 29 Sep 2018 21:44:21 +0000 (22:44 +0100)]
doxy: comment remaining connection functions
Richard Russon [Sat, 29 Sep 2018 18:44:06 +0000 (19:44 +0100)]
doxy: comment remaining parse functions
Richard Russon [Thu, 27 Sep 2018 19:37:43 +0000 (20:37 +0100)]
docs: fix example
Richard Russon [Thu, 27 Sep 2018 19:27:46 +0000 (20:27 +0100)]
move file_get_size
Richard Russon [Thu, 27 Sep 2018 19:20:20 +0000 (20:20 +0100)]
rename header_cache_t vars
Richard Russon [Thu, 27 Sep 2018 19:09:35 +0000 (20:09 +0100)]
boolify: account_match
Richard Russon [Fri, 28 Sep 2018 22:53:56 +0000 (23:53 +0100)]
merge: minor tidying
* sync mutt_parse_mailboxes to other parse functions
* refactor mutt_account_match
* refactor mutt_conn_new()
* mx_path_probe: export stat info
* tidy code
* add comments
Richard Russon [Fri, 28 Sep 2018 18:49:58 +0000 (19:49 +0100)]
add comments
Richard Russon [Fri, 28 Sep 2018 19:20:10 +0000 (20:20 +0100)]
tidy code
Richard Russon [Fri, 28 Sep 2018 18:46:57 +0000 (19:46 +0100)]
mx_path_probe: export stat info
Richard Russon [Fri, 28 Sep 2018 18:48:37 +0000 (19:48 +0100)]
refactor mutt_conn_new()
Richard Russon [Fri, 28 Sep 2018 19:10:53 +0000 (20:10 +0100)]
refactor mutt_account_match
Richard Russon [Fri, 28 Sep 2018 16:04:58 +0000 (17:04 +0100)]
sync mutt_parse_mailboxes to other parse functions
Richard Russon [Thu, 27 Sep 2018 00:03:26 +0000 (01:03 +0100)]
merge: tidy menu api functions
* rename functions
* document api functions
* rename functions
* unify api function params
Richard Russon [Wed, 26 Sep 2018 23:41:32 +0000 (00:41 +0100)]
menu: unify api function params
Richard Russon [Wed, 26 Sep 2018 23:14:57 +0000 (00:14 +0100)]
menu: rename functions
Richard Russon [Wed, 26 Sep 2018 23:01:30 +0000 (00:01 +0100)]
menu: document api functions
Richard Russon [Wed, 26 Sep 2018 18:28:11 +0000 (19:28 +0100)]
menu: rename functions
Richard Russon [Tue, 25 Sep 2018 13:03:59 +0000 (14:03 +0100)]
merge: upstream fixes
* Change imap_conn_find() to always return an authenticated conn.
* Free queries and alias_queries before exiting.
* Remove purpose checks in smime_keys.pl verify step.
* Send imap keepalives for interactive filters.
* Add output during smime_keys purpose flag checking.
* Increase user/pass field sizes in auth_login.
Kevin McCarthy [Sat, 22 Sep 2018 16:53:55 +0000 (09:53 -0700)]
Increase user/pass field sizes in auth_login.
account.pass was previously increased to 256 in
cd421c13. Also, the
buf should be bigger than the user+pass+"LOGIN", so bump it up too.
Kevin McCarthy [Sat, 22 Sep 2018 00:13:02 +0000 (17:13 -0700)]
Add output during smime_keys purpose flag checking.
Kevin McCarthy [Tue, 18 Sep 2018 02:40:22 +0000 (19:40 -0700)]
Send imap keepalives for interactive filters.
When viewing attachments externally with a (non-copiousoutput) mailcap
entry missing %s, the command is invoked as a filter, with the
attachment piped into stdin. However, unlike a filter, the user
interacts with the command, instead of just displaying the output in
the pager.
Just as with the mutt_system() command, Mutt needs to send imap
keepalives to keep those connections from closing during the
potentially extended invocation.
Thanks to John Hawkinson for the bug report, and his suggested patch,
which this commit is based upon.
Kevin McCarthy [Fri, 14 Sep 2018 21:23:04 +0000 (14:23 -0700)]
Remove purpose checks in smime_keys.pl verify step.
The purpose checks are subsequently performed, and added as a field to
the .index. In any case, it turns out passing multiple '-purpose'
arguments isn't even correct: openssl appears to just use the last
one.
Thanks to David J. Weller-Fahy for reporting the problem, and for
including a possible patch.
Kevin McCarthy [Fri, 14 Sep 2018 21:21:04 +0000 (14:21 -0700)]
Free queries and alias_queries before exiting.
Kevin McCarthy [Thu, 13 Sep 2018 01:23:00 +0000 (18:23 -0700)]
Change imap_conn_find() to always return an authenticated conn.
With the flag MUTT_IMAP_CONN_NONEW, it was already ensured the
connection would be authenticated. However, without that flag, an
error in opening the connection or authentication would still return
an idata.
The callers that didn't bother to check the state were still assuming
authenticated, because they were all subseqeuently issuing an
"authenticated state" command to the server.
Rather than add state checks to every caller, just change the function
to return NULL if the idata did not end up in an authenticated state.
Remove the now redundant state checks in imap_open_mailbox() and
imap_get_mailbox().
Richard Russon [Tue, 25 Sep 2018 11:31:01 +0000 (12:31 +0100)]
refactor/simplify status %f
Richard Russon [Mon, 17 Sep 2018 15:06:53 +0000 (16:06 +0100)]
boolify ImapMboxData data members
Richard Russon [Mon, 17 Sep 2018 15:04:33 +0000 (16:04 +0100)]
fix naming of ImapMboxData alloc/free functions
Richard Russon [Mon, 24 Sep 2018 09:50:40 +0000 (10:50 +0100)]
docs: fix 'hidden_tags' references
Fixes #1347
[ci skip]
Pietro Cerutti [Fri, 21 Sep 2018 12:15:26 +0000 (12:15 +0000)]
Fix segfault when checking a mailbox after a disconnect (II)
Pietro Cerutti [Fri, 21 Sep 2018 12:07:19 +0000 (12:07 +0000)]
Fix segfault when checking a mailbox after a disconnect
Richard Russon [Mon, 17 Sep 2018 13:11:11 +0000 (14:11 +0100)]
restore Mailbox order
Richard Russon [Mon, 17 Sep 2018 12:58:58 +0000 (13:58 +0100)]
rename socket-private data structs
Richard Russon [Mon, 17 Sep 2018 12:56:25 +0000 (13:56 +0100)]
reorg socket functions
Richard Russon [Sat, 15 Sep 2018 14:57:58 +0000 (15:57 +0100)]
add const to mutt_browser_select_dir
Richard Russon [Sat, 15 Sep 2018 14:52:14 +0000 (15:52 +0100)]
sidebar: drop unnec fn: mutt_sb_set_mailbox_stats
This used to copy stats from the Context to the Mailbox.
Now, the Context points to the Mailbox.
Richard Russon [Fri, 14 Sep 2018 09:59:41 +0000 (10:59 +0100)]
drop debugging code
Richard Russon [Thu, 13 Sep 2018 23:15:25 +0000 (00:15 +0100)]
merge: tidy private data usage
* rename Account to ConnAccount
* add config Account
* tidy notmuch
* reorg notmuch functions
* reorg pop functions
* tidy pop
* reorg imap functions
* reorg maildir functions
* reorg mbox functions
* reorg nntp functions
* tidy maildir
* rename maildir_flags()
* rename email include
* rename Header to Email
* Email doesn't begin with 'h'
* notmuch: tidy data naming
* notmuch: distinguish between Mailbox and Email data
* notmuch: fix header references
* nntp: tidy data naming
* pop: tidy data naming
* pop: separate email data
* imap: tidy data naming
* imap: more data tidying
* change free functions to use void**
Richard Russon [Thu, 13 Sep 2018 22:17:02 +0000 (23:17 +0100)]
change free functions to use void**
Richard Russon [Thu, 13 Sep 2018 18:09:00 +0000 (19:09 +0100)]
imap: more data tidying
Richard Russon [Thu, 13 Sep 2018 16:49:57 +0000 (17:49 +0100)]
imap: tidy data naming
Richard Russon [Thu, 13 Sep 2018 16:05:34 +0000 (17:05 +0100)]
pop: separate email data
Richard Russon [Thu, 13 Sep 2018 15:25:27 +0000 (16:25 +0100)]
pop: tidy data naming
Richard Russon [Thu, 13 Sep 2018 14:20:57 +0000 (15:20 +0100)]
nntp: tidy data naming
Richard Russon [Thu, 13 Sep 2018 13:09:02 +0000 (14:09 +0100)]
notmuch: fix header references
Richard Russon [Thu, 13 Sep 2018 12:59:20 +0000 (13:59 +0100)]
notmuch: distinguish between Mailbox and Email data
Richard Russon [Thu, 13 Sep 2018 12:04:38 +0000 (13:04 +0100)]
notmuch: tidy data naming
Richard Russon [Wed, 12 Sep 2018 20:43:56 +0000 (21:43 +0100)]
Email doesn't begin with 'h'
Richard Russon [Wed, 12 Sep 2018 20:05:46 +0000 (21:05 +0100)]
rename Header to Email
Richard Russon [Wed, 12 Sep 2018 19:41:33 +0000 (20:41 +0100)]
rename email include
Richard Russon [Wed, 12 Sep 2018 15:15:28 +0000 (16:15 +0100)]
rename maildir_flags()
Richard Russon [Tue, 11 Sep 2018 19:18:15 +0000 (20:18 +0100)]
tidy maildir
Richard Russon [Tue, 11 Sep 2018 16:49:47 +0000 (17:49 +0100)]
reorg nntp functions
Richard Russon [Tue, 11 Sep 2018 16:49:40 +0000 (17:49 +0100)]
reorg mbox functions
Richard Russon [Tue, 11 Sep 2018 16:49:34 +0000 (17:49 +0100)]
reorg maildir functions
Richard Russon [Tue, 11 Sep 2018 16:49:24 +0000 (17:49 +0100)]
reorg imap functions
Richard Russon [Tue, 11 Sep 2018 16:00:42 +0000 (17:00 +0100)]
tidy pop
Richard Russon [Tue, 11 Sep 2018 16:03:05 +0000 (17:03 +0100)]
reorg pop functions
Richard Russon [Tue, 11 Sep 2018 15:42:16 +0000 (16:42 +0100)]
reorg notmuch functions
Richard Russon [Tue, 11 Sep 2018 15:29:17 +0000 (16:29 +0100)]
tidy notmuch
Richard Russon [Sun, 26 Aug 2018 23:54:08 +0000 (00:54 +0100)]
add config Account
Richard Russon [Tue, 21 Aug 2018 19:34:25 +0000 (20:34 +0100)]
rename Account to ConnAccount
Richard Russon [Wed, 12 Sep 2018 12:01:49 +0000 (13:01 +0100)]
maildir: alloc mem for headers
Fixes #1337
Pietro Cerutti [Tue, 11 Sep 2018 08:40:37 +0000 (08:40 +0000)]
Fix segfault introduced by
5e8cb63
Richard Russon [Mon, 10 Sep 2018 20:39:31 +0000 (21:39 +0100)]
boolify
- be_edit_header
- boolify mutt_file_lock
The parameters were only being used as bools.
- boolify maildir_delayed_parsing