cli/show: detangle overloading of params.part for single message display
authorJani Nikula <jani@nikula.org>
Fri, 6 Jan 2017 20:14:42 +0000 (22:14 +0200)
committerDavid Bremner <david@tethera.net>
Fri, 10 Mar 2017 11:47:35 +0000 (07:47 -0400)
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.

notmuch-show.c

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