aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJani Nikula <jani@nikula.org>2017-10-01 23:53:16 +0300
committerDavid Bremner <david@tethera.net>2017-10-04 22:02:09 -0300
commited43b8ddcd01e098a457463ceb0c0fa6b74e0a8a (patch)
treef36527bd1be5c1ed5857d5be44e57edb2d78529c
parent9165df21359cc5e93ddeb16bf9623a03441bed62 (diff)
cli: use the arg parser .present feature to handle show --entire-thread
The --entire-thread default depends on other arguments, so we'll have to figure out if it was explicitly set by the user or not. The arg parser .present feature helps us clean up the code here.
-rw-r--r--notmuch-show.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/notmuch-show.c b/notmuch-show.c
index 367536ff..d0e86f41 100644
--- a/notmuch-show.c
+++ b/notmuch-show.c
@@ -1086,10 +1086,7 @@ notmuch_show_command (notmuch_config_t *config, int argc, char *argv[])
};
int format = NOTMUCH_FORMAT_NOT_SPECIFIED;
int exclude = TRUE;
-
- /* This value corresponds to neither true nor false being passed
- * on the command line */
- int entire_thread = -1;
+ notmuch_bool_t entire_thread_set = FALSE;
notmuch_bool_t single_message;
notmuch_opt_desc_t options[] = {
@@ -1102,7 +1099,8 @@ notmuch_show_command (notmuch_config_t *config, int argc, char *argv[])
{ 0, 0 } } },
{ .opt_int = &notmuch_format_version, .name = "format-version" },
{ .opt_bool = &exclude, .name = "exclude" },
- { .opt_bool = &entire_thread, .name = "entire-thread" },
+ { .opt_bool = &params.entire_thread, .name = "entire-thread",
+ .present = &entire_thread_set },
{ .opt_int = &params.part, .name = "part" },
{ .opt_bool = &params.crypto.decrypt, .name = "decrypt" },
{ .opt_bool = &params.crypto.verify, .name = "verify" },
@@ -1147,14 +1145,9 @@ notmuch_show_command (notmuch_config_t *config, int argc, char *argv[])
/* Default is entire-thread = FALSE except for format=json and
* format=sexp. */
- if (entire_thread != FALSE && entire_thread != TRUE) {
- if (format == NOTMUCH_FORMAT_JSON || format == NOTMUCH_FORMAT_SEXP)
- params.entire_thread = TRUE;
- else
- params.entire_thread = FALSE;
- } else {
- params.entire_thread = entire_thread;
- }
+ if (! entire_thread_set &&
+ (format == NOTMUCH_FORMAT_JSON || format == NOTMUCH_FORMAT_SEXP))
+ params.entire_thread = TRUE;
if (!params.output_body) {
if (params.part > 0) {