diff options
author | Thomas Adam <thomas@xteddy.org> | 2014-05-13 21:58:48 +0100 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2014-05-13 21:58:48 +0100 |
commit | bae95844d75b257c61cd0ef57b1d826bdca09032 (patch) | |
tree | e2547df0ea03a6f686ac0cf7500bed3d00994ad2 /cmd-split-window.c | |
parent | ea5a223a2e8901fa9afa991d147751d8a6789443 (diff) | |
parent | b3e8d440ed0477e88232c3ba1779c67eafce3a48 (diff) | |
download | rtmux-bae95844d75b257c61cd0ef57b1d826bdca09032.tar.gz rtmux-bae95844d75b257c61cd0ef57b1d826bdca09032.tar.bz2 rtmux-bae95844d75b257c61cd0ef57b1d826bdca09032.zip |
Merge branch 'obsd-master'
Conflicts:
format.c
window.c
Diffstat (limited to 'cmd-split-window.c')
-rw-r--r-- | cmd-split-window.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/cmd-split-window.c b/cmd-split-window.c index 9c4734be..ea047a3f 100644 --- a/cmd-split-window.c +++ b/cmd-split-window.c @@ -35,7 +35,7 @@ enum cmd_retval cmd_split_window_exec(struct cmd *, struct cmd_q *); const struct cmd_entry cmd_split_window_entry = { "split-window", "splitw", - "c:dF:l:hp:Pt:v", 0, 1, + "c:dF:l:hp:Pt:v", 0, -1, "[-dhvP] [-c start-directory] [-F format] [-p percentage|-l size] " CMD_TARGET_PANE_USAGE " [command]", 0, @@ -61,9 +61,9 @@ cmd_split_window_exec(struct cmd *self, struct cmd_q *cmdq) struct window_pane *wp, *new_wp = NULL; struct environ env; const char *cmd, *path, *shell, *template; - char *cause, *new_cause, *cp; + char **argv, *cause, *new_cause, *cp; u_int hlimit; - int size, percentage, cwd, fd = -1; + int argc, size, percentage, cwd, fd = -1; enum layout_type type; struct layout_cell *lc; struct client *c; @@ -80,10 +80,19 @@ cmd_split_window_exec(struct cmd *self, struct cmd_q *cmdq) environ_copy(&s->environ, &env); server_fill_environ(s, &env); - if (args->argc == 0) + if (args->argc == 0) { cmd = options_get_string(&s->options, "default-command"); - else - cmd = args->argv[0]; + if (cmd != NULL && *cmd != '\0') { + argc = 1; + argv = (char**)&cmd; + } else { + argc = 0; + argv = NULL; + } + } else { + argc = args->argc; + argv = args->argv; + } if (args_has(args, 'c')) { ft = format_create(); @@ -157,8 +166,8 @@ cmd_split_window_exec(struct cmd *self, struct cmd_q *cmdq) if (envent != NULL) path = envent->value; - if (window_pane_spawn( - new_wp, cmd, path, shell, cwd, &env, s->tio, &cause) != 0) + if (window_pane_spawn(new_wp, argc, argv, path, shell, cwd, &env, + s->tio, &cause) != 0) goto error; layout_assign_pane(lc, new_wp); |