summaryrefslogtreecommitdiffstats
path: root/usr.bin/tmux/session.c
diff options
context:
space:
mode:
authornicm <nicm@openbsd.org>2011-08-16 09:36:23 +0000
committernicm <nicm@openbsd.org>2011-08-16 09:36:23 +0000
commit8a5e6023393aca94f6d4daa11bb03e816f23bbac (patch)
treebd2aed8067cafe27af7cd525a6f8d61635bcccc4 /usr.bin/tmux/session.c
parentDon't export 'struct pmap' to userland. (diff)
downloadwireguard-openbsd-8a5e6023393aca94f6d4daa11bb03e816f23bbac.tar.xz
wireguard-openbsd-8a5e6023393aca94f6d4daa11bb03e816f23bbac.zip
Correctly skip existing numbers when generating the name for a new
session.
Diffstat (limited to 'usr.bin/tmux/session.c')
-rw-r--r--usr.bin/tmux/session.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/usr.bin/tmux/session.c b/usr.bin/tmux/session.c
index e05ba7b4d13..69956ad50bd 100644
--- a/usr.bin/tmux/session.c
+++ b/usr.bin/tmux/session.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: session.c,v 1.31 2011/04/06 21:51:31 nicm Exp $ */
+/* $OpenBSD: session.c,v 1.32 2011/08/16 09:36:23 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -119,11 +119,18 @@ session_create(const char *name, const char *cmd, const char *cwd,
s->sx = sx;
s->sy = sy;
- s->idx = next_session++;
- if (name != NULL)
+ if (name != NULL) {
s->name = xstrdup(name);
- else
- xasprintf(&s->name, "%u", s->idx);
+ s->idx = next_session++;
+ } else {
+ s->name = NULL;
+ do {
+ s->idx = next_session++;
+ if (s->name != NULL)
+ xfree (s->name);
+ xasprintf(&s->name, "%u", s->idx);
+ } while (RB_FIND(sessions, &sessions, s) != NULL);
+ }
RB_INSERT(sessions, &sessions, s);
if (cmd != NULL) {