diff options
author | Thomas Adam <thomas@xteddy.org> | 2018-03-01 14:02:27 +0000 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2018-03-01 14:02:27 +0000 |
commit | 3b8f92359d564f495fc8db1daa807bf5e8036545 (patch) | |
tree | 3e5e5078328f9dfbff0a2313a03da501b842cc0c /cmd-rename-session.c | |
parent | 0ca9664ecf001bc7883ead43a1d426d1e9465564 (diff) | |
parent | 182357f24bc7e16d7d7c85cab0c61974f18df2e7 (diff) | |
download | rtmux-3b8f92359d564f495fc8db1daa807bf5e8036545.tar.gz rtmux-3b8f92359d564f495fc8db1daa807bf5e8036545.tar.bz2 rtmux-3b8f92359d564f495fc8db1daa807bf5e8036545.zip |
Merge branch 'obsd-master'
Diffstat (limited to 'cmd-rename-session.c')
-rw-r--r-- | cmd-rename-session.c | 19 |
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); |