Kevin McCarthy [Tue, 14 Jun 2016 20:11:56 +0000 (13:11 -0700)]
Reset buffy->new for the current mailbox in IMAP.
1f840760e6e0 moved the buffy->new reset inside the STATUS processor.
Since the current mailbox is not STATUS'ed, it needs to be reset in
imap_buffy_check().
Thanks to Aaron Schrab for reporting this issue (and for helping test
tip).
Richard Russon [Wed, 6 Jul 2016 22:05:03 +0000 (23:05 +0100)]
merge: mutt-1.6.2
* Fix infinite loop when help is bound to a named key combination.
* Check $pgp_autoinline and $pgp_replyinline if oppenc is set. (closes #3846)
* automatic post-release commit for mutt-1.6.2
Richard Russon [Wed, 6 Jul 2016 11:20:49 +0000 (12:20 +0100)]
Temporary compatibility workaround
There have been some changes upstream to the way the Sidebar displays
itself. This commit hides those changes, for now. It will be reverted
next release.
Upstream changes:
* SidebarRefreshTime - obsolete
* mail_check_stats - enable extra mailbox checks
* sidebar_format - Simplified to reduce load
Richard Russon [Mon, 4 Jul 2016 14:08:29 +0000 (15:08 +0100)]
merge: sidebar
* Sidebar clean up: building and drawing logic.
* Fix sidebar check_sec.sh warnings.
* Clean up the sidebar manual.
* Various fixes to the sidebar logic.
* Start to fix sidebar buffy modifications.
* Corrected OPS.SIDEBAR filename in EXTRA_DIST.
* Change the default for sidebar_format to use %n.
* Make extended buffy independent of the sidebar.
* Combine the basic and extended buffy functions.
* Add documentation to the "New Mail Detection" section of the manual.
* Change sidebar next/prev-new to look at buffy->new too.
* Change sidebar to consistently use realpath for context and buffy comparison.
* Remove $sidebar_refresh_time from Sample Sidebar Config
* Remove unused SORT_DESC.
* Fix missing sidebar documentation links. (closes #3847)
* Decouple the sidebar from the Buffy list.
* Fix sidebar "unsorted" order to match Buffy list order.
* Add R_SIDEBAR to redraw sidebar when its settings change.
* Fix the documented sort methods for sidebar_sort_method.
* Add cols parameter to mutt_FormatString()
Richard Russon [Sun, 3 Jul 2016 14:41:03 +0000 (15:41 +0100)]
merge: bugs-common
* Set COLUMNS to MuttIndexWindow->cols in mutt_create_filter_fd. (closes #3837)
* Fix infinite loop when help is bound to a named key combination.
* Add real prototype for re_match_2_internal in regex.c
* Clarify oppenc option documention. (closes #3846)
* Include ncurses tinfo library if found.
* Fix cppflags and muttlibs duplication with --with-gss.
* Check $pgp_autoinline and $pgp_replyinline if oppenc is set. (closes #3846)
Kevin McCarthy [Thu, 28 Apr 2016 00:56:59 +0000 (17:56 -0700)]
Add cols parameter to mutt_FormatString()
Continuing with the conversion to using windows for screen drawing,
mutt_FormatString() was directly using COLS for right justification
and similar formatting. Instead pass in a parameter, cols.
This change involved seeding the parameter through callback functions
too, as many of them call mutt_FormatString() back.
Kevin McCarthy [Sat, 2 Jul 2016 19:24:25 +0000 (12:24 -0700)]
Fix sidebar "unsorted" order to match Buffy list order.
Since the previous commit decoupled the sidebar from the Buffy list,
we can now restore the order to match the buffy list when
sidebar_sort_method is set (back) to "unsorted".
Kevin McCarthy [Sat, 2 Jul 2016 19:22:51 +0000 (12:22 -0700)]
Decouple the sidebar from the Buffy list.
Change the sidebar to use an array of SBENTRY* instead. Move the
"is_hidden" into SBENTRY. Remove the added "prev" pointer from BUFFY.
This way, sorting the sidebar doesn't affect the BUFFY list order, and
we don't need elements inside BUFFY just for the sidebar presentation.
Fix sidebar-next for the case where the mailboxes are unsorted and
$sidebar_new_mail_only is set. Change sorting not to clump hidden
mailboxes at the bottom, instead simply skip over hidden mailboxes in
sidebar-next/prev.
USE_SIDEBAR needed to be set in doc/makedoc-defs.h so that the sidebar
option documentation is generated whether mutt is configured with the
sidebar or not.
Remove $sidebar_refresh_time from Sample Sidebar Config
The $sidebar_refresh_time option was removed with the changeset 1f840760e6e0. Remove it from the sample sidebar configuration as well,
so that anyone using that file in its entirety won't have to deal with "unknown
variable" errors.
Kevin McCarthy [Thu, 23 Jun 2016 19:38:07 +0000 (12:38 -0700)]
Change sidebar to consistently use realpath for context and buffy comparison.
The original sidebar patch contained a half-implemented attempt to use
realpath() mailbox paths for comparison. (Presumably so the open mailbox
remains highlighted despite symlink issues).
Add realpath to the Context, and set it when opening a mailbox.
Remove sidebar ifdef for the buffy member, and always set it there too.
Change the sidebar to use the realpath for comparison everywhere.
mutt_buffy_check() is using stat device and inode for comparison.
Perhaps this can be changed to use realpath instead, but that's beyond
the scope of this patch.
Kevin McCarthy [Fri, 17 Jun 2016 17:30:30 +0000 (10:30 -0700)]
Combine the basic and extended buffy functions.
Add a check_stats parameter to the mbox, maildir, and mh buffy
functions. Use that parameter to determine whether to also count
total, new, and flagged messages.
This makes the functions a bit more complicated, but improves
efficiency (for maildir and mh).
Also includes the following cleanup/fixes:
* Move the orig-value counter reset to the beginnining of the loop,
(before tmp->new is set to 0).
* Change trashed maildir messages to not be counted in msg_count
* Remove an incorrect setting of mailbox->new based on msg_count in
maildir. (I missed this one for 1f840760e6e0)
* Change mbox to use the context->mtime for stats_last_checked,
removing a race condition.
* Fix mh to actually count the messages in order to generate msg_count.
mh_sequences only covers the range of messages with some sort of
flag.
Kevin McCarthy [Tue, 7 Jun 2016 22:02:58 +0000 (15:02 -0700)]
Make extended buffy independent of the sidebar.
Add new boolean option $mail_check_stats (default off) and
$mail_check_stats_interval. The first turns extended buffy on. The
second sets the amount of time in between extended buffy checks
(defaulting to 60 seconds).
Remove the option $sidebar_refresh_time.
Change mutt_buffy_check() to only notify the sidebar to redraw if a
mailbox buffy value changes.
Remove the #ifdefs around the extended buffy functions. The next
patch will merge these functions with the basic functions and pass a
parameter instead.
Imap is a special case, because it sends out the status in one batch.
Change this to perform the comparisons inside cmd_parse_status() and
flag the sidebar there. It was previously directly assigning the
status counters (unsigned int) to the buffy->new (short). Change this
to assign 1/0.
Kevin McCarthy [Wed, 8 Jun 2016 21:43:35 +0000 (14:43 -0700)]
Change the default for sidebar_format to use %n.
The next series of patches is going to create a new option,
$mail_check_stats defaulting off. When off, the extended buffy which
calculates total/new/flagged messages won't be run. To help reduce
"sidebar is broken" bug reports, this changes the default format to
something not requiring extended buffy.
The previous default is documented in the option and preserved in the
sample sidebar muttrc in contrib.
Kevin McCarthy [Sat, 4 Jun 2016 18:32:12 +0000 (11:32 -0700)]
Start to fix sidebar buffy modifications.
The extended buffy for mh had incorrect placement of the loop
brackets. The counters weren't being incremented in the loop.
Fix extended buffy for maildir to count a maildir message as new if it
doesn't have the info delimeter.
Remove shortcircuits added to the basic buffy stating there is new
mail when (msg_unread > 0). This is not necessarily true, depending
on $mail_check_recent.
Note: the extended buffy still needs more fixes, which will be done
when it is refactored into its own option.
Kevin McCarthy [Sat, 4 Jun 2016 18:32:09 +0000 (11:32 -0700)]
Various fixes to the sidebar logic.
Use strfcpy instead of strncpy. The current logic could write past
the end of the buffer.
Don't mess with BUFFY next pointers during removal. The
mutt_parse_mailboxes() is fine, but this is still not something that
should be done inside sidebar.c.
On removal, set next->prev since we can.
Fix unmailboxes logic:
* only fix the prev pointers once.
* if we unmailbox the open mailbox, set it to NULL.
Kevin McCarthy [Sat, 4 Jun 2016 18:32:07 +0000 (11:32 -0700)]
Clean up the sidebar manual.
Remove the introduction section. It's a nice effort, but reads more
like a tutorial than something that belongs in section 2. Will
probably put in on the website instead.
Remove references to a "patch", neomutt, and the history.
Kevin McCarthy [Fri, 1 Jul 2016 20:33:20 +0000 (13:33 -0700)]
Check $pgp_autoinline and $pgp_replyinline if oppenc is set. (closes #3846)
The first oppenc call takes place after the initial checks of
$pgp_autoline and $pgp_replyinline, and doesn't go through the pgp
menu.
Therefore, check for $pgp_autoline and $pgp_replyinline if oppenc is
set too, to avoid oppenc enabling encryption without INLINE being set
in those cases.
a6a4d6ed0f19 previously cleaned things up so that it is safe
to set INLINE even if encryption isn't enabled.
Kevin McCarthy [Thu, 30 Jun 2016 01:58:53 +0000 (18:58 -0700)]
Fix cppflags and muttlibs duplication with --with-gss.
When krb5-config was found, MUTT_AM_PATH_GSSAPI included CFLAGS in
GSSAPI_CFLAGS and MUTTLIBS in GSSAPI_LIBS. However, configure.ac
afterwards sets:
CPPFLAGS="$CPPFLAGS $GSSAPI_CFLAGS"
MUTTLIBS="$MUTTLIBS $GSSAPI_LIBS"
This caused the flags and libs to be duplicated.
Kevin McCarthy [Thu, 30 Jun 2016 01:58:48 +0000 (18:58 -0700)]
Include ncurses tinfo library if found.
Thanks to Fabian Groffen for reporting this issue and providing a
couple possible patches. From Fabian's report:
For some time now, ncurses can be built in a mode where the low level
terminfo functionality lives in a separate lib called libtinfo.
Because some people do, this means Mutt needs to include this
library in that case to avoid linking errors [...]
Kevin McCarthy [Tue, 24 May 2016 19:08:46 +0000 (12:08 -0700)]
Fix infinite loop when help is bound to a named key combination.
Commit a07e8215a0ef introduced a bug in km_error_key, which is called
when an unbound key is pressed.
If help is bound to a sequence containing named keys (e.g. <esc>), the
raw (untokenized) string would be pushed back into the unget buffer.
This could lead to an infinite loop of unbound key presses triggering
more unbound keys being put into the unget buffer.
Change km_error_key to tokenize the string before putting it in the unget buffer.
Much thanks to Jiri Bohac for his bug report, analysis, and initial patch!
Kevin McCarthy [Tue, 10 May 2016 16:42:27 +0000 (09:42 -0700)]
Set COLUMNS to MuttIndexWindow->cols in mutt_create_filter_fd. (closes #3837)
This allows filters to automatically (or via a command line argument)
adjust to the width of the pager/index. This is even more important
with the sidebar, since the width of the pager is smaller than the
terminal width.
Thanks to Vincent Lefèvre for his helpful information and suggestions,
and to Richard Russon for the initial patches.
Kevin McCarthy [Fri, 1 Jul 2016 20:33:20 +0000 (13:33 -0700)]
Check $pgp_autoinline and $pgp_replyinline if oppenc is set. (closes #3846)
The first oppenc call takes place after the initial checks of
$pgp_autoline and $pgp_replyinline, and doesn't go through the pgp
menu.
Therefore, check for $pgp_autoline and $pgp_replyinline if oppenc is
set too, to avoid oppenc enabling encryption without INLINE being set
in those cases.
a6a4d6ed0f19 previously cleaned things up so that it is safe
to set INLINE even if encryption isn't enabled.
Richard Russon [Thu, 23 Jun 2016 14:57:32 +0000 (15:57 +0100)]
fix sidebar/mail_check painting problem
The bug was triggered when $mail_check was set to 0.
When drawing the status line, the Sidebar lied about its size to
workaround a bug in mutt_FormatString(). Whilst in that function the
Sidebar was redrawn.
The Sidebar got confused over whether it should be visible or not and
promptly vanished.
Darshit Shah [Wed, 22 Jun 2016 05:23:05 +0000 (07:23 +0200)]
Fix compiler warnings due to always true condition
BUFFY declares path as a char array. Hence, p->path will always resolve
to a valid array location making the check redundant. It causes a
compiler warning. Hence, remove the redundant check to silence the
warning.
Richard Russon [Thu, 16 Jun 2016 14:44:45 +0000 (15:44 +0100)]
merge: notmuch
* Fix IDNA functions for systems without iconv.
* Fix mutt_protect() when INLINE is set. (closes #3828)
* Create a wrapper sys_socket.h to work around Solaris namespace issues. (closes #3833)
* automatic post-release commit for mutt-1.6.1
* reduce the frequency of mailbox checks
Richard Russon [Thu, 16 Jun 2016 14:42:34 +0000 (15:42 +0100)]
merge: sidebar
* fix cursor position after sidebar redraw
* Add sidebar_format flag '%n' to display 'N' on new mail.
* Fix the case of messages in OPS.MIX and OPS.SIDEBAR
Kevin McCarthy [Wed, 27 Apr 2016 20:08:52 +0000 (13:08 -0700)]
Create a wrapper sys_socket.h to work around Solaris namespace issues. (closes #3833)
Solaris includes "sys/stream.h" inside their "sys/socket.h". This
include file adds many non-reserved macros to Mutt's namespace, two of
which conflict with existing Mutt macros.
The simplest fix would be to rename those macros in Mutt, however this
will cause difficulty with out-of-tree patches. This fix creates a
wrapper include file that preserves those existing macros and prevents
the Solaris values from entering Mutt's namespace.
Kevin McCarthy [Sun, 10 Apr 2016 23:02:06 +0000 (16:02 -0700)]
Fix mutt_protect() when INLINE is set. (closes #3828)
The oppenc changes allow security bits to be set even when not
encrypting or signing (for instance, OPPENCRYPT and INLINE).
mutt_protect() assumed that if INLINE is set, then either ENCRYPT or
SIGN must also be set. Specifically, it would end up inline-signing
the message even though neither was set.
Ensure mutt_protect() is a noop if neither SIGN or ENCRYPT are set.
In ci_send_message(), check for sign or encrypt before calling the
crypt_get_keys() / mutt_protect() block, and also in the fcc section
(since clear_content would be NULL if not).
The second change to the fcc part is somewhat redundant, but better to
be explicit and avoid the case where the subtype is somehow
"encrypted" or "signed" even though msg->security wasn't set thus.
Kevin McCarthy [Tue, 5 Apr 2016 21:31:36 +0000 (14:31 -0700)]
Fix IDNA functions for systems without iconv.
The IDNA changes for SMTPUTF8 support introduced a bug for systems
without iconv. For those systems, the local<->intl functions would
return an error due to the charset conversion failing.
Change mutt_idna.c back to being conditionally compiled, but this time
based on HAVE_ICONV. If there is no iconv, stub out the functions in
mutt_idna.h.
Richard Russon [Wed, 15 Jun 2016 15:47:22 +0000 (16:47 +0100)]
fix index_format truncation problem
mutt_wstr_trunc() didn't take index coloring into account when measuring a
string's length. When combined with a soft-fill '%* ' in the index_format it
lead to formatting problems.