summaryrefslogtreecommitdiffstats
path: root/cmd-detach-client.c
diff options
context:
space:
mode:
Diffstat (limited to 'cmd-detach-client.c')
-rw-r--r--cmd-detach-client.c19
1 files changed, 5 insertions, 14 deletions
diff --git a/cmd-detach-client.c b/cmd-detach-client.c
index d8128eae..86f8063c 100644
--- a/cmd-detach-client.c
+++ b/cmd-detach-client.c
@@ -31,8 +31,8 @@ enum cmd_retval cmd_detach_client_exec(struct cmd *, struct cmd_q *);
const struct cmd_entry cmd_detach_client_entry = {
"detach-client", "detach",
"as:t:P", 0, 0,
- "[-aP] [-s target-session] " CMD_TARGET_CLIENT_USAGE,
- CMD_READONLY,
+ "[-P] [-a] [-s target-session] " CMD_TARGET_CLIENT_USAGE,
+ CMD_READONLY|CMD_CLIENT_T|CMD_SESSION_S,
cmd_detach_client_exec
};
@@ -40,7 +40,7 @@ const struct cmd_entry cmd_suspend_client_entry = {
"suspend-client", "suspendc",
"t:", 0, 0,
CMD_TARGET_CLIENT_USAGE,
- 0,
+ CMD_CLIENT_T,
cmd_detach_client_exec
};
@@ -48,13 +48,11 @@ enum cmd_retval
cmd_detach_client_exec(struct cmd *self, struct cmd_q *cmdq)
{
struct args *args = self->args;
- struct client *c, *cloop;
+ struct client *c = cmdq->state.c, *cloop;
struct session *s;
enum msgtype msgtype;
if (self->entry == &cmd_suspend_client_entry) {
- if ((c = cmd_find_client(cmdq, args_get(args, 't'), 0)) == NULL)
- return (CMD_RETURN_ERROR);
tty_stop_tty(&c->tty);
c->flags |= CLIENT_SUSPENDED;
proc_send(c->peer, MSG_SUSPEND, -1, NULL, 0);
@@ -67,10 +65,7 @@ cmd_detach_client_exec(struct cmd *self, struct cmd_q *cmdq)
msgtype = MSG_DETACH;
if (args_has(args, 's')) {
- s = cmd_find_session(cmdq, args_get(args, 's'), 0);
- if (s == NULL)
- return (CMD_RETURN_ERROR);
-
+ s = cmdq->state.sflag.s;
TAILQ_FOREACH(cloop, &clients, entry) {
if (cloop->session == s)
server_client_detach(cloop, msgtype);
@@ -78,10 +73,6 @@ cmd_detach_client_exec(struct cmd *self, struct cmd_q *cmdq)
return (CMD_RETURN_STOP);
}
- c = cmd_find_client(cmdq, args_get(args, 't'), 0);
- if (c == NULL)
- return (CMD_RETURN_ERROR);
-
if (args_has(args, 'a')) {
TAILQ_FOREACH(cloop, &clients, entry) {
if (cloop->session != NULL && cloop != c)