diff options
Diffstat (limited to 'cmd-new-session.c')
-rw-r--r-- | cmd-new-session.c | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/cmd-new-session.c b/cmd-new-session.c index 0808b60c..1813288d 100644 --- a/cmd-new-session.c +++ b/cmd-new-session.c @@ -44,7 +44,7 @@ const struct cmd_entry cmd_new_session_entry = { "[-s session-name] " CMD_TARGET_SESSION_USAGE " [-x width] " "[-y height] [command]", - .tflag = CMD_SESSION_CANFAIL, + .target = { 't', CMD_FIND_SESSION, CMD_FIND_CANFAIL }, .flags = CMD_STARTSERVER, .exec = cmd_new_session_exec @@ -57,7 +57,7 @@ const struct cmd_entry cmd_has_session_entry = { .args = { "t:", 0, 0 }, .usage = CMD_TARGET_SESSION_USAGE, - .tflag = CMD_SESSION, + .target = { 't', CMD_FIND_SESSION, 0 }, .flags = 0, .exec = cmd_new_session_exec @@ -83,8 +83,8 @@ cmd_new_session_exec(struct cmd *self, struct cmdq_item *item) if (self->entry == &cmd_has_session_entry) { /* - * cmd_prepare() will fail if the session cannot be found, - * hence always return success here. + * cmd_find_target() will fail if the session cannot be found, + * so always return success here. */ return (CMD_RETURN_NORMAL); } @@ -102,16 +102,9 @@ cmd_new_session_exec(struct cmd *self, struct cmdq_item *item) } if ((as = session_find(newname)) != NULL) { if (args_has(args, 'A')) { - /* - * This item is now destined for - * attach-session. Because attach-session will - * have already been prepared, copy this - * session into its tflag so it can be used. - */ - cmd_find_from_session(&item->state.tflag, as); return (cmd_attach_session(item, - args_has(args, 'D'), 0, NULL, - args_has(args, 'E'))); + newname, args_has(args, 'D'), + 0, NULL, args_has(args, 'E'))); } cmdq_error(item, "duplicate session: %s", newname); return (CMD_RETURN_ERROR); @@ -121,7 +114,7 @@ cmd_new_session_exec(struct cmd *self, struct cmdq_item *item) /* Is this going to be part of a session group? */ group = args_get(args, 't'); if (group != NULL) { - groupwith = item->state.tflag.s; + groupwith = item->target.s; if (groupwith == NULL) { if (!session_check_name(group)) { cmdq_error(item, "bad group name: %s", group); @@ -324,8 +317,10 @@ cmd_new_session_exec(struct cmd *self, struct cmdq_item *item) free(cp); } - if (!detached) + if (!detached) { c->flags |= CLIENT_ATTACHED; + cmd_find_from_session(&item->shared->current, s); + } if (to_free != NULL) free((void *)to_free); |