=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/cmd-new-window.c,v retrieving revision 1.63 retrieving revision 1.64 diff -c -r1.63 -r1.64 *** src/usr.bin/tmux/cmd-new-window.c 2016/10/16 17:55:14 1.63 --- src/usr.bin/tmux/cmd-new-window.c 2016/10/16 19:04:05 1.64 *************** *** 1,4 **** ! /* $OpenBSD: cmd-new-window.c,v 1.63 2016/10/16 17:55:14 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: cmd-new-window.c,v 1.64 2016/10/16 19:04:05 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 32,38 **** #define NEW_WINDOW_TEMPLATE "#{session_name}:#{window_index}.#{pane_index}" ! static enum cmd_retval cmd_new_window_exec(struct cmd *, struct cmd_q *); const struct cmd_entry cmd_new_window_entry = { .name = "new-window", --- 32,38 ---- #define NEW_WINDOW_TEMPLATE "#{session_name}:#{window_index}.#{pane_index}" ! static enum cmd_retval cmd_new_window_exec(struct cmd *, struct cmdq_item *); const struct cmd_entry cmd_new_window_entry = { .name = "new-window", *************** *** 49,61 **** }; static enum cmd_retval ! cmd_new_window_exec(struct cmd *self, struct cmd_q *cmdq) { struct args *args = self->args; ! struct session *s = cmdq->state.tflag.s; ! struct winlink *wl = cmdq->state.tflag.wl; ! struct client *c = cmdq->state.c; ! int idx = cmdq->state.tflag.idx; const char *cmd, *path, *template, *cwd, *to_free; char **argv, *cause, *cp; int argc, detached; --- 49,61 ---- }; static enum cmd_retval ! cmd_new_window_exec(struct cmd *self, struct cmdq_item *item) { struct args *args = self->args; ! struct session *s = item->state.tflag.s; ! struct winlink *wl = item->state.tflag.wl; ! struct client *c = item->state.c; ! int idx = item->state.tflag.idx; const char *cmd, *path, *template, *cwd, *to_free; char **argv, *cause, *cp; int argc, detached; *************** *** 65,71 **** if (args_has(args, 'a')) { if ((idx = winlink_shuffle_up(s, wl)) == -1) { ! cmdq_error(cmdq, "no free window indexes"); return (CMD_RETURN_ERROR); } } --- 65,71 ---- if (args_has(args, 'a')) { if ((idx = winlink_shuffle_up(s, wl)) == -1) { ! cmdq_error(item, "no free window indexes"); return (CMD_RETURN_ERROR); } } *************** *** 86,93 **** } path = NULL; ! if (cmdq->client != NULL && cmdq->client->session == NULL) ! envent = environ_find(cmdq->client->environ, "PATH"); else envent = environ_find(s->environ, "PATH"); if (envent != NULL) --- 86,93 ---- } path = NULL; ! if (item->client != NULL && item->client->session == NULL) ! envent = environ_find(item->client->environ, "PATH"); else envent = environ_find(s->environ, "PATH"); if (envent != NULL) *************** *** 95,106 **** to_free = NULL; if (args_has(args, 'c')) { ! ft = format_create(cmdq, 0); format_defaults(ft, c, s, NULL, NULL); cwd = to_free = format_expand(ft, args_get(args, 'c')); format_free(ft); ! } else if (cmdq->client != NULL && cmdq->client->session == NULL) ! cwd = cmdq->client->cwd; else cwd = s->cwd; --- 95,106 ---- to_free = NULL; if (args_has(args, 'c')) { ! ft = format_create(item, 0); format_defaults(ft, c, s, NULL, NULL); cwd = to_free = format_expand(ft, args_get(args, 'c')); format_free(ft); ! } else if (item->client != NULL && item->client->session == NULL) ! cwd = item->client->cwd; else cwd = s->cwd; *************** *** 129,135 **** wl = session_new(s, args_get(args, 'n'), argc, argv, path, cwd, idx, &cause); if (wl == NULL) { ! cmdq_error(cmdq, "create window failed: %s", cause); free(cause); goto error; } --- 129,135 ---- wl = session_new(s, args_get(args, 'n'), argc, argv, path, cwd, idx, &cause); if (wl == NULL) { ! cmdq_error(item, "create window failed: %s", cause); free(cause); goto error; } *************** *** 143,153 **** if ((template = args_get(args, 'F')) == NULL) template = NEW_WINDOW_TEMPLATE; ! ft = format_create(cmdq, 0); format_defaults(ft, c, s, wl, NULL); cp = format_expand(ft, template); ! cmdq_print(cmdq, "%s", cp); free(cp); format_free(ft); --- 143,153 ---- if ((template = args_get(args, 'F')) == NULL) template = NEW_WINDOW_TEMPLATE; ! ft = format_create(item, 0); format_defaults(ft, c, s, wl, NULL); cp = format_expand(ft, template); ! cmdq_print(item, "%s", cp); free(cp); format_free(ft); *************** *** 157,163 **** free((void *)to_free); cmd_find_from_winlink(&fs, s, wl); ! hooks_insert(s->hooks, cmdq, &fs, "after-new-window"); return (CMD_RETURN_NORMAL); --- 157,163 ---- free((void *)to_free); cmd_find_from_winlink(&fs, s, wl); ! hooks_insert(s->hooks, item, &fs, "after-new-window"); return (CMD_RETURN_NORMAL);