cli/show: detangle overloading of params.part for single message display

The use of params.part has become rather convoluted in notmuch
show. Add another variable for selecting single message display to
make the code easier to read. No functional changes.
This commit is contained in:
Jani Nikula 2017-01-06 22:14:42 +02:00 committed by David Bremner
parent 1b5c6b2dea
commit b2488a925a

View file

@ -1042,6 +1042,7 @@ notmuch_show_command (notmuch_config_t *config, int argc, char *argv[])
int format_sel = NOTMUCH_FORMAT_NOT_SPECIFIED; int format_sel = NOTMUCH_FORMAT_NOT_SPECIFIED;
int exclude = EXCLUDE_TRUE; int exclude = EXCLUDE_TRUE;
int entire_thread = ENTIRE_THREAD_DEFAULT; int entire_thread = ENTIRE_THREAD_DEFAULT;
notmuch_bool_t single_message;
notmuch_opt_desc_t options[] = { notmuch_opt_desc_t options[] = {
{ NOTMUCH_OPT_KEYWORD, &format_sel, "format", 'f', { NOTMUCH_OPT_KEYWORD, &format_sel, "format", 'f',
@ -1080,6 +1081,9 @@ notmuch_show_command (notmuch_config_t *config, int argc, char *argv[])
if (params.crypto.decrypt) if (params.crypto.decrypt)
params.crypto.verify = TRUE; params.crypto.verify = TRUE;
/* specifying a part implies single message display */
single_message = params.part >= 0;
if (format_sel == NOTMUCH_FORMAT_NOT_SPECIFIED) { if (format_sel == NOTMUCH_FORMAT_NOT_SPECIFIED) {
/* if part was requested and format was not specified, use format=raw */ /* if part was requested and format was not specified, use format=raw */
if (params.part >= 0) if (params.part >= 0)
@ -1108,10 +1112,8 @@ notmuch_show_command (notmuch_config_t *config, int argc, char *argv[])
break; break;
case NOTMUCH_FORMAT_RAW: case NOTMUCH_FORMAT_RAW:
format = &format_raw; format = &format_raw;
/* If --format=raw specified without specifying part, we can only /* raw format only supports single message display */
* output single message, so set part=0 */ single_message = TRUE;
if (params.part < 0)
params.part = 0;
params.raw = TRUE; params.raw = TRUE;
break; break;
} }
@ -1177,9 +1179,9 @@ notmuch_show_command (notmuch_config_t *config, int argc, char *argv[])
sprinter = format->new_sprinter(config, stdout); sprinter = format->new_sprinter(config, stdout);
/* If a single message is requested we do not use search_excludes. */ /* If a single message is requested we do not use search_excludes. */
if (params.part >= 0) if (single_message) {
ret = do_show_single (config, query, format, sprinter, &params); ret = do_show_single (config, query, format, sprinter, &params);
else { } else {
/* We always apply set the exclude flag. The /* We always apply set the exclude flag. The
* exclude=true|false option controls whether or not we return * exclude=true|false option controls whether or not we return
* threads that only match in an excluded message */ * threads that only match in an excluded message */