=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/cmd-run-shell.c,v retrieving revision 1.40 retrieving revision 1.41 diff -c -r1.40 -r1.41 *** src/usr.bin/tmux/cmd-run-shell.c 2016/10/16 17:55:14 1.40 --- src/usr.bin/tmux/cmd-run-shell.c 2016/10/16 19:04:05 1.41 *************** *** 1,4 **** ! /* $OpenBSD: cmd-run-shell.c,v 1.40 2016/10/16 17:55:14 nicm Exp $ */ /* * Copyright (c) 2009 Tiago Cunha --- 1,4 ---- ! /* $OpenBSD: cmd-run-shell.c,v 1.41 2016/10/16 19:04:05 nicm Exp $ */ /* * Copyright (c) 2009 Tiago Cunha *************** *** 29,35 **** * Runs a command without a window. */ ! static enum cmd_retval cmd_run_shell_exec(struct cmd *, struct cmd_q *); static void cmd_run_shell_callback(struct job *); static void cmd_run_shell_free(void *); --- 29,35 ---- * Runs a command without a window. */ ! static enum cmd_retval cmd_run_shell_exec(struct cmd *, struct cmdq_item *); static void cmd_run_shell_callback(struct job *); static void cmd_run_shell_free(void *); *************** *** 49,57 **** }; struct cmd_run_shell_data { ! char *cmd; ! struct cmd_q *cmdq; ! int wp_id; }; static void --- 49,57 ---- }; struct cmd_run_shell_data { ! char *cmd; ! struct cmdq_item *item; ! int wp_id; }; static void *************** *** 63,69 **** if (cdata->wp_id != -1) wp = window_pane_find_by_id(cdata->wp_id); if (wp == NULL) { ! cmdq_print(cdata->cmdq, "%s", msg); return; } --- 63,69 ---- if (cdata->wp_id != -1) wp = window_pane_find_by_id(cdata->wp_id); if (wp == NULL) { ! cmdq_print(cdata->item, "%s", msg); return; } *************** *** 74,99 **** } static enum cmd_retval ! cmd_run_shell_exec(struct cmd *self, struct cmd_q *cmdq) { struct args *args = self->args; struct cmd_run_shell_data *cdata; char *shellcmd; ! struct session *s = cmdq->state.tflag.s; ! struct winlink *wl = cmdq->state.tflag.wl; ! struct window_pane *wp = cmdq->state.tflag.wp; struct format_tree *ft; const char *cwd; ! if (cmdq->client != NULL && cmdq->client->session == NULL) ! cwd = cmdq->client->cwd; else if (s != NULL) cwd = s->cwd; else cwd = NULL; ! ft = format_create(cmdq, 0); ! format_defaults(ft, cmdq->state.c, s, wl, wp); shellcmd = format_expand(ft, args->argv[0]); format_free(ft); --- 74,99 ---- } static enum cmd_retval ! cmd_run_shell_exec(struct cmd *self, struct cmdq_item *item) { struct args *args = self->args; struct cmd_run_shell_data *cdata; char *shellcmd; ! struct session *s = item->state.tflag.s; ! struct winlink *wl = item->state.tflag.wl; ! struct window_pane *wp = item->state.tflag.wp; struct format_tree *ft; const char *cwd; ! if (item->client != NULL && item->client->session == NULL) ! cwd = item->client->cwd; else if (s != NULL) cwd = s->cwd; else cwd = NULL; ! ft = format_create(item, 0); ! format_defaults(ft, item->state.c, s, wl, wp); shellcmd = format_expand(ft, args->argv[0]); format_free(ft); *************** *** 111,117 **** cdata->wp_id = -1; if (!args_has(args, 'b')) ! cdata->cmdq = cmdq; job_run(shellcmd, s, cwd, cmd_run_shell_callback, cmd_run_shell_free, cdata); --- 111,117 ---- cdata->wp_id = -1; if (!args_has(args, 'b')) ! cdata->item = item; job_run(shellcmd, s, cwd, cmd_run_shell_callback, cmd_run_shell_free, cdata); *************** *** 163,170 **** cmd_run_shell_print(job, msg); free(msg); ! if (cdata->cmdq != NULL) ! cdata->cmdq->flags &= ~CMD_Q_WAITING; } static void --- 163,170 ---- cmd_run_shell_print(job, msg); free(msg); ! if (cdata->item != NULL) ! cdata->item->flags &= ~CMDQ_WAITING; } static void