version 1.45, 2017/02/16 10:53:25 |
version 1.46, 2017/03/08 13:36:12 |
|
|
{ |
{ |
struct args *args = self->args; |
struct args *args = self->args; |
struct cmd_run_shell_data *cdata; |
struct cmd_run_shell_data *cdata; |
char *shellcmd; |
struct client *c = item->state.c; |
struct session *s = item->state.tflag.s; |
struct session *s = item->state.tflag.s; |
struct winlink *wl = item->state.tflag.wl; |
struct winlink *wl = item->state.tflag.wl; |
struct window_pane *wp = item->state.tflag.wp; |
struct window_pane *wp = item->state.tflag.wp; |
struct format_tree *ft; |
|
const char *cwd; |
const char *cwd; |
|
|
if (item->client != NULL && item->client->session == NULL) |
if (item->client != NULL && item->client->session == NULL) |
|
|
else |
else |
cwd = NULL; |
cwd = NULL; |
|
|
ft = format_create(item, FORMAT_NONE, 0); |
|
format_defaults(ft, item->state.c, s, wl, wp); |
|
shellcmd = format_expand(ft, args->argv[0]); |
|
format_free(ft); |
|
|
|
cdata = xcalloc(1, sizeof *cdata); |
cdata = xcalloc(1, sizeof *cdata); |
cdata->cmd = shellcmd; |
cdata->cmd = format_single(item, args->argv[0], c, s, wl, wp); |
|
|
if (args_has(args, 't') && wp != NULL) |
if (args_has(args, 't') && wp != NULL) |
cdata->wp_id = wp->id; |
cdata->wp_id = wp->id; |
|
|
if (!args_has(args, 'b')) |
if (!args_has(args, 'b')) |
cdata->item = item; |
cdata->item = item; |
|
|
job_run(shellcmd, s, cwd, cmd_run_shell_callback, cmd_run_shell_free, |
job_run(cdata->cmd, s, cwd, cmd_run_shell_callback, cmd_run_shell_free, |
cdata); |
cdata); |
|
|
if (args_has(args, 'b')) |
if (args_has(args, 'b')) |