=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/Attic/cmd-link-window.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- src/usr.bin/tmux/Attic/cmd-link-window.c 2009/08/13 20:11:58 1.5 +++ src/usr.bin/tmux/Attic/cmd-link-window.c 2009/09/20 17:27:18 1.6 @@ -1,4 +1,4 @@ -/* $OpenBSD: cmd-link-window.c,v 1.5 2009/08/13 20:11:58 nicm Exp $ */ +/* $OpenBSD: cmd-link-window.c,v 1.6 2009/09/20 17:27:18 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -44,53 +44,21 @@ { struct cmd_srcdst_data *data = self->data; struct session *dst; - struct winlink *wl_src, *wl_dst; + struct winlink *wl; char *cause; - int idx; + int idx, kflag, dflag; - if ((wl_src = cmd_find_window(ctx, data->src, NULL)) == NULL) + if ((wl = cmd_find_window(ctx, data->src, NULL)) == NULL) return (-1); if ((idx = cmd_find_index(ctx, data->dst, &dst)) == -2) return (-1); - wl_dst = NULL; - if (idx != -1) - wl_dst = winlink_find_by_index(&dst->windows, idx); - if (wl_dst != NULL) { - if (wl_dst->window == wl_src->window) - return (0); - - if (data->chflags & CMD_CHFLAG('k')) { - /* - * Can't use session_detach as it will destroy session - * if this makes it empty. - */ - session_alert_cancel(dst, wl_dst); - winlink_stack_remove(&dst->lastw, wl_dst); - winlink_remove(&dst->windows, wl_dst); - - /* Force select/redraw if current. */ - if (wl_dst == dst->curw) { - data->chflags &= ~CMD_CHFLAG('d'); - dst->curw = NULL; - } - } - } - - if (idx == -1) - idx = -1 - options_get_number(&dst->options, "base-index"); - wl_dst = session_attach(dst, wl_src->window, idx, &cause); - if (wl_dst == NULL) { - ctx->error(ctx, "create session failed: %s", cause); + kflag = data->chflags & CMD_CHFLAG('k'); + dflag = data->chflags & CMD_CHFLAG('d'); + if (server_link_window(wl, dst, idx, kflag, !dflag, &cause) != 0) { + ctx->error(ctx, "can't create session: %s", cause); xfree(cause); return (-1); - } - - if (data->chflags & CMD_CHFLAG('d')) - server_status_session(dst); - else { - session_select(dst, wl_dst->idx); - server_redraw_session(dst); } recalculate_sizes();