Change new-session -A without a session name (that is, no -s option

also) to attach to the best existing session like attach-session rather
than creating a new one.
pull/1982/head
nicm 2019-11-14 08:00:30 +00:00
parent eb399e64d5
commit 2dbf062a89
2 changed files with 20 additions and 15 deletions

View File

@ -94,26 +94,31 @@ cmd_new_session_exec(struct cmd *self, struct cmdq_item *item)
return (CMD_RETURN_ERROR); return (CMD_RETURN_ERROR);
} }
if (args_has(args, 's')) { tmp = args_get(args, 's');
newname = format_single(item, args_get(args, 's'), c, NULL, if (tmp != NULL) {
NULL, NULL); newname = format_single(item, tmp, c, NULL, NULL, NULL);
if (!session_check_name(newname)) { if (!session_check_name(newname)) {
cmdq_error(item, "bad session name: %s", newname); cmdq_error(item, "bad session name: %s", newname);
goto fail; goto fail;
} }
if ((as = session_find(newname)) != NULL) { }
if (args_has(args, 'A')) { if (args_has(args, 'A')) {
retval = cmd_attach_session(item, if (newname != NULL)
newname, args_has(args, 'D'), as = session_find(newname);
args_has(args, 'X'), 0, NULL, else
as = item->target.s;
if (as != NULL) {
retval = cmd_attach_session(item, as->name,
args_has(args, 'D'), args_has(args, 'X'), 0, NULL,
args_has(args, 'E')); args_has(args, 'E'));
free(newname); free(newname);
return (retval); return (retval);
} }
}
if (newname != NULL && session_find(newname) != NULL) {
cmdq_error(item, "duplicate session: %s", newname); cmdq_error(item, "duplicate session: %s", newname);
goto fail; goto fail;
} }
}
/* Is this going to be part of a session group? */ /* Is this going to be part of a session group? */
group = args_get(args, 't'); group = args_get(args, 't');