summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--usr.bin/tmux/cmd-kill-session.c22
-rw-r--r--usr.bin/tmux/tmux.19
2 files changed, 22 insertions, 9 deletions
diff --git a/usr.bin/tmux/cmd-kill-session.c b/usr.bin/tmux/cmd-kill-session.c
index a87ea910325..5897ecf0a66 100644
--- a/usr.bin/tmux/cmd-kill-session.c
+++ b/usr.bin/tmux/cmd-kill-session.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cmd-kill-session.c,v 1.9 2011/04/05 19:37:01 nicm Exp $ */
+/* $OpenBSD: cmd-kill-session.c,v 1.10 2012/06/18 09:16:15 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -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);
}
diff --git a/usr.bin/tmux/tmux.1 b/usr.bin/tmux/tmux.1
index a61380c884e..8377c4ef040 100644
--- a/usr.bin/tmux/tmux.1
+++ b/usr.bin/tmux/tmux.1
@@ -1,4 +1,4 @@
-.\" $OpenBSD: tmux.1,v 1.296 2012/06/18 09:15:22 nicm Exp $
+.\" $OpenBSD: tmux.1,v 1.297 2012/06/18 09:16:15 nicm Exp $
.\"
.\" Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
.\"
@@ -610,9 +610,14 @@ If it does exist, exit with 0.
Kill the
.Nm
server and clients and destroy all sessions.
-.It Ic kill-session Op Fl t Ar target-session
+.It Ic kill-session
+.Op Fl a
+.Op Fl t Ar target-session
Destroy the given session, closing any windows linked to it and no other
sessions, and detaching all clients attached to it.
+If
+.Fl a
+is given, all sessions but the specified one is killed.
.It Xo Ic list-clients
.Op Fl F Ar format
.Op Fl t Ar target-session