summaryrefslogtreecommitdiffstats
path: root/cmd-detach-client.c
diff options
context:
space:
mode:
authornicm <nicm>2020-04-13 20:51:57 +0000
committernicm <nicm>2020-04-13 20:51:57 +0000
commit3f7f9a0e20522c73e33480673496240f1bac724b (patch)
treec0ec19a026014bfd6981622ecd9ee2783344ef25 /cmd-detach-client.c
parent187277eaadc4a675659bf7ede88f50bfe6cc7be9 (diff)
Make client -c and -t handling common in cmd-queue.c and try to be
clearer about whether the client is the target client (must have a session) or not.
Diffstat (limited to 'cmd-detach-client.c')
-rw-r--r--cmd-detach-client.c31
1 files changed, 14 insertions, 17 deletions
diff --git a/cmd-detach-client.c b/cmd-detach-client.c
index f4e350a8..02a43f4e 100644
--- a/cmd-detach-client.c
+++ b/cmd-detach-client.c
@@ -39,7 +39,7 @@ const struct cmd_entry cmd_detach_client_entry = {
.source = { 's', CMD_FIND_SESSION, CMD_FIND_CANFAIL },
- .flags = CMD_READONLY,
+ .flags = CMD_READONLY|CMD_CLIENT_TFLAG,
.exec = cmd_detach_client_exec
};
@@ -50,7 +50,7 @@ const struct cmd_entry cmd_suspend_client_entry = {
.args = { "t:", 0, 0 },
.usage = CMD_TARGET_CLIENT_USAGE,
- .flags = 0,
+ .flags = CMD_CLIENT_TFLAG,
.exec = cmd_detach_client_exec
};
@@ -59,16 +59,13 @@ cmd_detach_client_exec(struct cmd *self, struct cmdq_item *item)
{
struct args *args = cmd_get_args(self);
struct cmd_find_state *source = cmdq_get_source(item);
- struct client *c, *cloop;
+ struct client *tc = cmdq_get_target_client(item), *loop;
struct session *s;
enum msgtype msgtype;
const char *cmd = args_get(args, 'E');
- if ((c = cmd_find_client(item, args_get(args, 't'), 0)) == NULL)
- return (CMD_RETURN_ERROR);
-
if (cmd_get_entry(self) == &cmd_suspend_client_entry) {
- server_client_suspend(c);
+ server_client_suspend(tc);
return (CMD_RETURN_NORMAL);
}
@@ -81,32 +78,32 @@ cmd_detach_client_exec(struct cmd *self, struct cmdq_item *item)
s = source->s;
if (s == NULL)
return (CMD_RETURN_NORMAL);
- TAILQ_FOREACH(cloop, &clients, entry) {
- if (cloop->session == s) {
+ TAILQ_FOREACH(loop, &clients, entry) {
+ if (loop->session == s) {
if (cmd != NULL)
- server_client_exec(cloop, cmd);
+ server_client_exec(loop, cmd);
else
- server_client_detach(cloop, msgtype);
+ server_client_detach(loop, msgtype);
}
}
return (CMD_RETURN_STOP);
}
if (args_has(args, 'a')) {
- TAILQ_FOREACH(cloop, &clients, entry) {
- if (cloop->session != NULL && cloop != c) {
+ TAILQ_FOREACH(loop, &clients, entry) {
+ if (loop->session != NULL && loop != tc) {
if (cmd != NULL)
- server_client_exec(cloop, cmd);
+ server_client_exec(loop, cmd);
else
- server_client_detach(cloop, msgtype);
+ server_client_detach(loop, msgtype);
}
}
return (CMD_RETURN_NORMAL);
}
if (cmd != NULL)
- server_client_exec(c, cmd);
+ server_client_exec(tc, cmd);
else
- server_client_detach(c, msgtype);
+ server_client_detach(tc, msgtype);
return (CMD_RETURN_STOP);
}