aboutsummaryrefslogtreecommitdiff
path: root/cmd-detach-client.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2015-12-13 16:01:13 +0000
committerThomas Adam <thomas@xteddy.org>2015-12-13 16:01:13 +0000
commitae5ddfdc1ae471f13c6d0e94ff4029d4fb29e1f4 (patch)
tree72ebffc1c0617c28ddc421f24045f148b7d59e36 /cmd-detach-client.c
parent92f187d1c2d84322860dc595da604260999a52f0 (diff)
parentff599f4004aaa6aae325ece5cbc996e2dc6f0b4f (diff)
downloadrtmux-ae5ddfdc1ae471f13c6d0e94ff4029d4fb29e1f4.tar.gz
rtmux-ae5ddfdc1ae471f13c6d0e94ff4029d4fb29e1f4.tar.bz2
rtmux-ae5ddfdc1ae471f13c6d0e94ff4029d4fb29e1f4.zip
Merge branch 'obsd-master'
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)