=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/cmd-respawn-window.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- src/usr.bin/tmux/cmd-respawn-window.c 2009/12/03 22:50:10 1.12 +++ src/usr.bin/tmux/cmd-respawn-window.c 2011/01/04 00:42:47 1.13 @@ -1,4 +1,4 @@ -/* $OpenBSD: cmd-respawn-window.c,v 1.12 2009/12/03 22:50:10 nicm Exp $ */ +/* $OpenBSD: cmd-respawn-window.c,v 1.13 2011/01/04 00:42:47 nicm Exp $ */ /* * Copyright (c) 2008 Nicholas Marriott @@ -30,31 +30,31 @@ const struct cmd_entry cmd_respawn_window_entry = { "respawn-window", "respawnw", + "kt:", 0, 1, "[-k] " CMD_TARGET_WINDOW_USAGE " [command]", - CMD_ARG01, "k", - cmd_target_init, - cmd_target_parse, - cmd_respawn_window_exec, - cmd_target_free, - cmd_target_print + 0, + NULL, + NULL, + cmd_respawn_window_exec }; int cmd_respawn_window_exec(struct cmd *self, struct cmd_ctx *ctx) { - struct cmd_target_data *data = self->data; + struct args *args = self->args; struct winlink *wl; struct window *w; struct window_pane *wp; struct session *s; struct environ env; + const char *cmd; char *cause; - if ((wl = cmd_find_window(ctx, data->target, &s)) == NULL) + if ((wl = cmd_find_window(ctx, args_get(args, 't'), &s)) == NULL) return (-1); w = wl->window; - if (!cmd_check_flag(data->chflags, 'k')) { + if (!args_has(self->args, 'k')) { TAILQ_FOREACH(wp, &w->panes, entry) { if (wp->fd == -1) continue; @@ -75,8 +75,11 @@ window_destroy_panes(w); TAILQ_INSERT_HEAD(&w->panes, wp, entry); window_pane_resize(wp, w->sx, w->sy); - if (window_pane_spawn( - wp, data->arg, NULL, NULL, &env, s->tio, &cause) != 0) { + if (args->argc != 0) + cmd = args->argv[0]; + else + cmd = NULL; + if (window_pane_spawn(wp, cmd, NULL, NULL, &env, s->tio, &cause) != 0) { ctx->error(ctx, "respawn window failed: %s", cause); xfree(cause); environ_free(&env);