version 1.92, 2021/08/20 19:08:36 |
version 1.93, 2021/08/20 19:50:16 |
|
|
struct client *c = cmdq_get_client(item); |
struct client *c = cmdq_get_client(item); |
struct cmd_find_state *current = cmdq_get_current(item); |
struct cmd_find_state *current = cmdq_get_current(item); |
struct cmd_find_state *target = cmdq_get_target(item); |
struct cmd_find_state *target = cmdq_get_target(item); |
struct spawn_context sc; |
struct spawn_context sc = { 0 }; |
struct client *tc = cmdq_get_target_client(item); |
struct client *tc = cmdq_get_target_client(item); |
struct session *s = target->s; |
struct session *s = target->s; |
struct winlink *wl = target->wl; |
struct winlink *wl = target->wl, *new_wl = NULL; |
int idx = target->idx, before; |
int idx = target->idx, before; |
struct winlink *new_wl = NULL; |
|
char *cause = NULL, *cp; |
char *cause = NULL, *cp; |
const char *template, *name; |
const char *template, *name; |
struct cmd_find_state fs; |
struct cmd_find_state fs; |
|
|
idx = target->idx; |
idx = target->idx; |
} |
} |
|
|
memset(&sc, 0, sizeof sc); |
|
sc.item = item; |
sc.item = item; |
sc.s = s; |
sc.s = s; |
sc.tc = tc; |
sc.tc = tc; |
|
|
sc.name = args_get(args, 'n'); |
sc.name = args_get(args, 'n'); |
sc.argc = args->argc; |
args_vector(args, &sc.argc, &sc.argv); |
sc.argv = args->argv; |
|
sc.environ = environ_create(); |
sc.environ = environ_create(); |
|
|
av = args_first_value(args, 'e'); |
av = args_first_value(args, 'e'); |
|
|
if ((new_wl = spawn_window(&sc, &cause)) == NULL) { |
if ((new_wl = spawn_window(&sc, &cause)) == NULL) { |
cmdq_error(item, "create window failed: %s", cause); |
cmdq_error(item, "create window failed: %s", cause); |
free(cause); |
free(cause); |
|
if (sc.argv != NULL) |
|
cmd_free_argv(sc.argc, sc.argv); |
environ_free(sc.environ); |
environ_free(sc.environ); |
return (CMD_RETURN_ERROR); |
return (CMD_RETURN_ERROR); |
} |
} |
|
|
cmd_find_from_winlink(&fs, new_wl, 0); |
cmd_find_from_winlink(&fs, new_wl, 0); |
cmdq_insert_hook(s, item, &fs, "after-new-window"); |
cmdq_insert_hook(s, item, &fs, "after-new-window"); |
|
|
|
if (sc.argv != NULL) |
|
cmd_free_argv(sc.argc, sc.argv); |
environ_free(sc.environ); |
environ_free(sc.environ); |
return (CMD_RETURN_NORMAL); |
return (CMD_RETURN_NORMAL); |
} |
} |