summaryrefslogtreecommitdiffstats
path: root/cmd.c
diff options
context:
space:
mode:
authornicm <nicm>2015-12-13 18:31:47 +0000
committernicm <nicm>2015-12-13 18:31:47 +0000
commit72948d9f1d16dedf18dcb9b7ee96cc7ca803ef40 (patch)
treea8453a6f3b935c97431b5a7e46cebd0c6dab8056 /cmd.c
parent66d1193a000e7ee0d6924f3c766b013ce0bc9e52 (diff)
-c needs to be able for fail for display-message.
Diffstat (limited to 'cmd.c')
-rw-r--r--cmd.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/cmd.c b/cmd.c
index 789bcefb..93bab204 100644
--- a/cmd.c
+++ b/cmd.c
@@ -585,7 +585,7 @@ cmd_prepare_state(struct cmd *cmd, struct cmd_q *cmdq)
struct cmd_state *state = &cmdq->state;
struct args *args = cmd->args;
char *tmp;
- int error;
+ int error, quiet;
tmp = cmd_print(cmd);
log_debug("preparing state for: %s (client %p)", tmp, cmdq->client);
@@ -594,6 +594,11 @@ cmd_prepare_state(struct cmd *cmd, struct cmd_q *cmdq)
/* Start with an empty state. */
cmd_clear_state(state);
+ /* No error messages if can fail. */
+ quiet = 0;
+ if (cmd->entry->flags & CMD_CLIENT_CANFAIL)
+ quiet = 1;
+
/*
* If the command wants a client and provides -c or -t, use it. If not,
* try the base command instead via cmd_get_state_client. No client is
@@ -604,13 +609,13 @@ cmd_prepare_state(struct cmd *cmd, struct cmd_q *cmdq)
state->c = cmd_find_client(cmdq, NULL, 1);
break;
case CMD_CLIENT_C:
- state->c = cmd_find_client(cmdq, args_get(args, 'c'), 0);
- if (state->c == NULL)
+ state->c = cmd_find_client(cmdq, args_get(args, 'c'), quiet);
+ if (!quiet && state->c == NULL)
return (-1);
break;
case CMD_CLIENT_T:
- state->c = cmd_find_client(cmdq, args_get(args, 't'), 0);
- if (state->c == NULL)
+ state->c = cmd_find_client(cmdq, args_get(args, 't'), quiet);
+ if (!quiet && state->c == NULL)
return (-1);
break;
default: