Stefan Assmann [Fri, 24 Mar 2017 07:48:27 +0000 (08:48 +0100)]
add %z format strings to index_format
The %Z format string consists of three columns.
Split those up into individual columns to allow more fine grained
control over which flags should be displayed.
%zs message status flags
%zc message crypto flags
%zt message tag flags
There's a small difference compared to %Z which is that the delete flags
have been moved from the crypto column to the status column. %Z will not
be removed for backwards compatibility reasons.
Signed-off-by: Stefan Assmann <sassmann@kpanic.de>
Richard Russon [Fri, 12 May 2017 13:01:34 +0000 (14:01 +0100)]
fix bind error messages
Some messages were displayed that shouldn't have been (when bind
succeeded). Some errors weren't getting reported (they were overwritten
by other messages).
Richard Russon [Wed, 3 May 2017 12:39:34 +0000 (13:39 +0100)]
merge: configure.ac improvements
* remove check on unix.h
* remove check on stdarg.h
* remove check on inline and const
* remove check on wide chars
* remove check on fgetpos
* remove check on memmove
* remove check on strerror
* remove check on srand48
* remove check on long long int
* signal: remove test on SYS_SIGLIST_DECLARED
* simplify sig_atomic_t check
* remove check for <dirent.h> d_ino
* drop LANGINFO checks
* remove stuff defined in POSIX:2001
* use basic getopt from unistd.h
* drop HAVE_UNISTD_H
* unused prototypes - unsupported systems
* sys/types.h
* sys/select.h
* inttypes.h includes stdint.h
* Drop obsolete iconv check
* Drop another obsolete iconv check
* tidy md5
Richard Russon [Sat, 29 Apr 2017 16:00:00 +0000 (17:00 +0100)]
tidy md5
No code changes.
This code is imported from the GNU Library.
It contained a lot of definitions and compatability code that we don't
need. Also, tidy some comment blocks.
@gahr
Leverage on AC_C_BIGENDIAN instead of glibc's endian.h
Richard Russon [Fri, 28 Apr 2017 23:44:14 +0000 (00:44 +0100)]
build: change gpgme requirement back to 1.1.0
RHEL6 is still using GPGME 1.1.8, which doesn't have the function
`gpgme_op_export_keys`. Revert the GPGME requirement to 1.1.0 and put
back the #ifdef's around the missing function.
Richard Russon [Sat, 29 Apr 2017 11:23:10 +0000 (12:23 +0100)]
build: remove check_sec.sh
This script looked for mistakes when using mutt functions such as
safe_free(). It was crude. Coverity can do a better job without us
having to litter the code with /* __FREE_CHECKED__ */ comments.
Most of the diff is reworking how notmuch is built. It used an extra
AM_CONDITIONAL but was the only component to do so, so change that to
make it consistent with the rest of the configure.
Lua picked the same thing but BUILD_LUA is actually never used, so it
could be dropped too.
Rest of the commit cleans up some pollution between MUTTLIBS and LIBS.
It was decided to keep the USE_SIDEBAR tests in the codebase to make it
easier to find code related to that feature, but that requires
USE_SIDEBAR to be defined, or it breaks compilation because some symbol
definitions depend on that config option.
Kevin McCarthy [Fri, 28 Apr 2017 04:22:08 +0000 (21:22 -0700)]
Fix km_error_key() infinite loop and unget buffer pollution.
'bind pager \Ch help' produces an infinite loop when an unbound key is
pressed in the pager. The reason is because km_error_key() tries to
verify that the key sequence is really bound to the OP_HELP operation.
It does this by using km_expand_key(), tokenize_unget_string() on the
resulting buffer, then checking if the next km_dokey() returns OP_HELP.
The problem is that km_expand_key() does not always produce a string
that is properly reparsed by tokenize_unget_string(). Control-h
sequences are expanded to ^H. tokenize_unget_string() recognizes this
as two characters '^' and 'H'. km_error_key() checks the OP returned,
which is OP_PAGER_TOP for the '^'. This is not OP_HELP, so it prints
a generic error and returns. This leaves the 'H' in the input buffer!
Since 'H' (by default) is unbound in the pager, it retriggers
km_error_key(), resulting in an infinite loop.
The same issues can occur without control sequences:
bind generic ? noop
bind generic dq help
In the index, hitting an unbound key will end up leaving 'q' in the unget
buffer, because 'd' is bound in the index menu and will be read by km_dokey().
A simple approach to fix this would be to just use the same code as in
mutt_make_help(), which has no double-check. This would be no worse
than the help menu, but can generate an inaccurate error message (e.g
if '?' were bound to noop)
This patch instead uses OP_END_COND as a barrier in the unget buffer.
It directly inserts the keys in the OP_HELP keymap, instead of using
km_expand_key() + tokenize_unget_string(). After calling km_dokey()
it flushes the unget buffer to the OP_END_COND barrier.
Thanks to Walter Alejandro Iglesias for reporting the bug.
Roger Cornelius [Wed, 26 Apr 2017 22:40:34 +0000 (15:40 -0700)]
Fix error message when opening a mailbox with no read permission. (closes #3934)
ctx->mx_ops ends up being NULL for both the case that ctx->magic is 0
and -1. This meant the mutt_perror() error message was never being
printed, because the check for ctx->mx_ops == NULL was taking place
first.
Move the "ctx->magic == -1" check first, so mutt will print out an
appropriate perror message in that case.
Pietro Cerutti [Mon, 24 Apr 2017 15:57:15 +0000 (16:57 +0100)]
Fix and simplify handling of GPGME in configure.ac (#545)
* Fix
When GPGME is not installed, the m4 macro AM_PATH_GPGME is not defined,
which causes autoconf to fail. The fix adds an `ifdef` around the block
to skip expanding the macro, if it's not defined.
* Enhancement
The enhancement is to assume that we have at leat GPGME 1.2.0 (released
in 2009). This allows us to simplify the configure.ac code block by
avoiding checks for functionalities we know to be there.
Ian Zimmerman [Tue, 18 Apr 2017 22:01:36 +0000 (15:01 -0700)]
fix broken from_chars behaviour
Upstream adopted and extended the from_chars feature.
A couple of changes to the behaviour were introduced by the change:
- '\r' wasn't being recognised
- An unwanted space was being displayed
Kevin McCarthy [Tue, 18 Apr 2017 19:25:17 +0000 (12:25 -0700)]
Fix GPG_TTY to be added to envlist. (closes #3931)
Changeset 37209157e33c converted filters to use the envlist.
Unfortunately, I missed that pgp.c sets GPG_TTY when using the GnuPG
agent. Convert to add GPG_TTY to the envlist too.
Kevin McCarthy [Tue, 18 Apr 2017 20:13:00 +0000 (13:13 -0700)]
Revert sort prompt labels. (see #3930)
Using the (s)ort style may look a bit better, but it makes the prompt
over 80 columns. The multichoice prompt supports multiple lines now,
but it is better to have it fit on one line if possible.
Revert back to the "capital letter" method, but leave the ticket open,
to explore other ideas that Vincent and chdiza have for better ways to
present a long choice like this.
Kevin McCarthy [Tue, 18 Apr 2017 19:25:17 +0000 (12:25 -0700)]
Fix GPG_TTY to be added to envlist. (closes #3931)
Changeset 37209157e33c converted filters to use the envlist.
Unfortunately, I missed that pgp.c sets GPG_TTY when using the GnuPG
agent. Convert to add GPG_TTY to the envlist too.
Richard Russon [Tue, 18 Apr 2017 12:50:55 +0000 (13:50 +0100)]
merge: upstream fixes (mutt/default)
* Add ifdefs around new mutt_resize_screen calls.
* Add multiline and sigwinch handling to mutt_multi_choice. (see #3877)
* Set pager's REDRAW_SIGWINCH when reflowing windows.
* Add multiline and sigwinch handling to mutt_yesorno. (closes #3877)
* Change the sort prompt to use (s)ort style prompts.
* Handle the pager sort prompt inside the pager.
Kevin McCarthy [Tue, 18 Apr 2017 00:40:15 +0000 (17:40 -0700)]
Handle the pager sort prompt inside the pager.
Display the prompt in the pager, so a multiline prompt or resize
doesn't refresh the index menu. Then, bounce back through the index
to handle resorting and status line updates.
Kevin McCarthy [Tue, 18 Apr 2017 00:40:15 +0000 (17:40 -0700)]
Handle the pager sort prompt inside the pager.
Display the prompt in the pager, so a multiline prompt or resize
doesn't refresh the index menu. Then, bounce back through the index
to handle resorting and status line updates.
Richard Russon [Sat, 15 Apr 2017 16:27:54 +0000 (17:27 +0100)]
build: restore po/mutt.pot
This file is autogenerated from the the files listed in po/POTFILES.in
However, if it's missing it causes the build to regenerate ALL the .po
files every time there's a change to the code. This is annoying.
If you want to update the .po files, try:
make -C po update-po