Handle no client better in display-message.

This commit is contained in:
Nicholas Marriott 2013-03-14 16:02:33 +00:00
parent 919bde7cb1
commit 6bdc947f6b

View File

@ -70,6 +70,18 @@ cmd_display_message_exec(struct cmd *self, struct cmd_q *cmdq)
return (CMD_RETURN_ERROR); return (CMD_RETURN_ERROR);
} }
if (args_has(args, 'c')) {
c = cmd_find_client(cmdq, args_get(args, 'c'), 0);
if (c == NULL)
return (CMD_RETURN_ERROR);
} else {
c = cmd_current_client(cmdq);
if (c == NULL && !args_has(self->args, 'p')) {
cmdq_error(cmdq, "no client available");
return (CMD_RETURN_ERROR);
}
}
template = args_get(args, 'F'); template = args_get(args, 'F');
if (args->argc != 0) if (args->argc != 0)
template = args->argv[0]; template = args->argv[0];
@ -77,7 +89,7 @@ cmd_display_message_exec(struct cmd *self, struct cmd_q *cmdq)
template = DISPLAY_MESSAGE_TEMPLATE; template = DISPLAY_MESSAGE_TEMPLATE;
ft = format_create(); ft = format_create();
if ((c = cmd_find_client(cmdq, args_get(args, 'c'), 1)) != NULL) if (c != NULL)
format_client(ft, c); format_client(ft, c);
format_session(ft, s); format_session(ft, s);
format_winlink(ft, s, wl); format_winlink(ft, s, wl);
@ -90,10 +102,7 @@ cmd_display_message_exec(struct cmd *self, struct cmd_q *cmdq)
msg = format_expand(ft, out); msg = format_expand(ft, out);
if (args_has(self->args, 'p')) if (args_has(self->args, 'p'))
cmdq_print(cmdq, "%s", msg); cmdq_print(cmdq, "%s", msg);
else if (c == NULL) { else
cmdq_error(cmdq, "no client available");
return (CMD_RETURN_ERROR);
} else
status_message_set(c, "%s", msg); status_message_set(c, "%s", msg);
free(msg); free(msg);
format_free(ft); format_free(ft);