aboutsummaryrefslogtreecommitdiff
path: root/cmd-kill-session.c
diff options
context:
space:
mode:
authorTiago Cunha <tcunha@gmx.com>2012-06-18 15:12:54 +0000
committerTiago Cunha <tcunha@gmx.com>2012-06-18 15:12:54 +0000
commit1c15848c479e682ba5e7c3c8446650d2ad00f251 (patch)
treeb7b4bb1139f49bbb33dccb3847c6d9d78dd01b29 /cmd-kill-session.c
parent4a634a7da4b0e6e8fd66a650bd71f86d3b060c52 (diff)
downloadrtmux-1c15848c479e682ba5e7c3c8446650d2ad00f251.tar.gz
rtmux-1c15848c479e682ba5e7c3c8446650d2ad00f251.tar.bz2
rtmux-1c15848c479e682ba5e7c3c8446650d2ad00f251.zip
Sync OpenBSD patchset 1134:
Add -a for kill-session, from Thomas Adam.
Diffstat (limited to 'cmd-kill-session.c')
-rw-r--r--cmd-kill-session.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/cmd-kill-session.c b/cmd-kill-session.c
index da56a263..0ce65e6d 100644
--- a/cmd-kill-session.c
+++ b/cmd-kill-session.c
@@ -31,8 +31,8 @@ int cmd_kill_session_exec(struct cmd *, struct cmd_ctx *);
const struct cmd_entry cmd_kill_session_entry = {
"kill-session", NULL,
- "t:", 0, 0,
- CMD_TARGET_SESSION_USAGE,
+ "at:", 0, 0,
+ "[-a] " CMD_TARGET_SESSION_USAGE,
0,
NULL,
NULL,
@@ -43,13 +43,21 @@ int
cmd_kill_session_exec(struct cmd *self, struct cmd_ctx *ctx)
{
struct args *args = self->args;
- struct session *s;
+ struct session *s, *s2, *s3;
if ((s = cmd_find_session(ctx, args_get(args, 't'), 0)) == NULL)
return (-1);
- server_destroy_session(s);
- session_destroy(s);
-
+ if (args_has(args, 'a')) {
+ RB_FOREACH_SAFE(s2, sessions, &sessions, s3) {
+ if (s != s2) {
+ server_destroy_session(s2);
+ session_destroy(s2);
+ }
+ }
+ } else {
+ server_destroy_session(s);
+ session_destroy(s);
+ }
return (0);
}