-/* $OpenBSD: cmd-new-session.c,v 1.106 2017/04/22 10:26:44 nicm Exp $ */
+/* $OpenBSD: cmd-new-session.c,v 1.107 2017/05/28 19:46:55 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
const char *path, *cmd, *cwd, *to_free = NULL;
char **argv, *cause, *cp;
int detached, already_attached, idx, argc;
+ int is_control = 0;
u_int sx, sy;
struct environ_entry *envent;
struct cmd_find_state fs;
detached = args_has(args, 'd');
if (c == NULL)
detached = 1;
+ else if (c->flags & CLIENT_CONTROL)
+ is_control = 1;
/* Is this client already attached? */
already_attached = 0;
}
/* Find new session size. */
- if (c != NULL) {
+ if (!detached) {
sx = c->tty.sx;
sy = c->tty.sy;
+ if (!is_control &&
+ sy > 0 &&
+ options_get_number(global_s_options, "status"))
+ sy--;
} else {
sx = 80;
sy = 24;
}
- if (detached && args_has(args, 'x')) {
+ if ((is_control || detached) && args_has(args, 'x')) {
sx = strtonum(args_get(args, 'x'), 1, USHRT_MAX, &errstr);
if (errstr != NULL) {
cmdq_error(item, "width %s", errstr);
goto error;
}
}
- if (detached && args_has(args, 'y')) {
+ if ((is_control || detached) && args_has(args, 'y')) {
sy = strtonum(args_get(args, 'y'), 1, USHRT_MAX, &errstr);
if (errstr != NULL) {
cmdq_error(item, "height %s", errstr);
goto error;
}
}
- if (sy > 0 && options_get_number(global_s_options, "status"))
- sy--;
if (sx == 0)
sx = 1;
if (sy == 0)