diff options
author | 2011-08-16 09:36:23 +0000 | |
---|---|---|
committer | 2011-08-16 09:36:23 +0000 | |
commit | 8a5e6023393aca94f6d4daa11bb03e816f23bbac (patch) | |
tree | bd2aed8067cafe27af7cd525a6f8d61635bcccc4 /usr.bin/tmux/session.c | |
parent | Don't export 'struct pmap' to userland. (diff) | |
download | wireguard-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.c | 17 |
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) { |