summaryrefslogtreecommitdiffstats
path: root/cmd-rename-session.c
diff options
context:
space:
mode:
authornicm <nicm>2018-03-01 12:53:08 +0000
committernicm <nicm>2018-03-01 12:53:08 +0000
commit182357f24bc7e16d7d7c85cab0c61974f18df2e7 (patch)
treeaaf97a0274f043e226f216c83f5dfd25db518e98 /cmd-rename-session.c
parent508e2f0b3aaf2db9b692863738e7ca75765fc70c (diff)
Expand formats in window and session names.
Diffstat (limited to 'cmd-rename-session.c')
-rw-r--r--cmd-rename-session.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/cmd-rename-session.c b/cmd-rename-session.c
index e7586e0b..5dbc38d9 100644
--- a/cmd-rename-session.c
+++ b/cmd-rename-session.c
@@ -46,26 +46,31 @@ const struct cmd_entry cmd_rename_session_entry = {
static enum cmd_retval
cmd_rename_session_exec(struct cmd *self, struct cmdq_item *item)
{
- struct args *args = self->args;
- struct session *s = item->target.s;
- const char *newname;
-
- newname = args->argv[0];
- if (strcmp(newname, s->name) == 0)
+ struct args *args = self->args;
+ struct client *c = cmd_find_client(item, NULL, 0);
+ struct session *s = item->target.s;
+ char *newname;
+
+ newname = format_single(item, args->argv[0], c, s, NULL, NULL);
+ if (strcmp(newname, s->name) == 0) {
+ free(newname);
return (CMD_RETURN_NORMAL);
+ }
if (!session_check_name(newname)) {
cmdq_error(item, "bad session name: %s", newname);
+ free(newname);
return (CMD_RETURN_ERROR);
}
if (session_find(newname) != NULL) {
cmdq_error(item, "duplicate session: %s", newname);
+ free(newname);
return (CMD_RETURN_ERROR);
}
RB_REMOVE(sessions, &sessions, s);
free(s->name);
- s->name = xstrdup(newname);
+ s->name = newname;
RB_INSERT(sessions, &sessions, s);
server_status_session(s);