=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/cmd-join-pane.c,v retrieving revision 1.35 retrieving revision 1.36 diff -c -r1.35 -r1.36 *** src/usr.bin/tmux/cmd-join-pane.c 2019/06/20 11:59:59 1.35 --- src/usr.bin/tmux/cmd-join-pane.c 2019/10/15 08:25:37 1.36 *************** *** 1,4 **** ! /* $OpenBSD: cmd-join-pane.c,v 1.35 2019/06/20 11:59:59 nicm Exp $ */ /* * Copyright (c) 2011 George Nachman --- 1,4 ---- ! /* $OpenBSD: cmd-join-pane.c,v 1.36 2019/10/15 08:25:37 nicm Exp $ */ /* * Copyright (c) 2011 George Nachman *************** *** 21,26 **** --- 21,27 ---- #include #include + #include #include #include "tmux.h" *************** *** 36,42 **** .alias = "joinp", .args = { "bdhvp:l:s:t:", 0, 0 }, ! .usage = "[-bdhv] [-p percentage|-l size] " CMD_SRCDST_PANE_USAGE, .source = { 's', CMD_FIND_PANE, CMD_FIND_DEFAULT_MARKED }, .target = { 't', CMD_FIND_PANE, 0 }, --- 37,43 ---- .alias = "joinp", .args = { "bdhvp:l:s:t:", 0, 0 }, ! .usage = "[-bdhv] [-l size] " CMD_SRCDST_PANE_USAGE, .source = { 's', CMD_FIND_PANE, CMD_FIND_DEFAULT_MARKED }, .target = { 't', CMD_FIND_PANE, 0 }, *************** *** 68,78 **** struct winlink *src_wl, *dst_wl; struct window *src_w, *dst_w; struct window_pane *src_wp, *dst_wp; ! char *cause; ! int size, percentage, dst_idx; enum layout_type type; struct layout_cell *lc; - int not_same_window, flags; if (self->entry == &cmd_join_pane_entry) not_same_window = 1; --- 69,81 ---- struct winlink *src_wl, *dst_wl; struct window *src_w, *dst_w; struct window_pane *src_wp, *dst_wp; ! char *cause, *copy; ! const char *errstr, *p; ! size_t plen; ! int size, percentage, dst_idx, not_same_window; ! int flags; enum layout_type type; struct layout_cell *lc; if (self->entry == &cmd_join_pane_entry) not_same_window = 1; *************** *** 105,116 **** type = LAYOUT_LEFTRIGHT; size = -1; ! if (args_has(args, 'l')) { ! size = args_strtonum(args, 'l', 0, INT_MAX, &cause); ! if (cause != NULL) { ! cmdq_error(item, "size %s", cause); ! free(cause); ! return (CMD_RETURN_ERROR); } } else if (args_has(args, 'p')) { percentage = args_strtonum(args, 'p', 0, 100, &cause); --- 108,135 ---- type = LAYOUT_LEFTRIGHT; size = -1; ! if ((p = args_get(args, 'l')) != NULL) { ! plen = strlen(p); ! if (p[plen - 1] == '%') { ! copy = xstrdup(p); ! copy[plen - 1] = '\0'; ! percentage = strtonum(copy, 0, INT_MAX, &errstr); ! free(copy); ! if (errstr != NULL) { ! cmdq_error(item, "percentage %s", errstr); ! return (CMD_RETURN_ERROR); ! } ! if (type == LAYOUT_TOPBOTTOM) ! size = (dst_wp->sy * percentage) / 100; ! else ! size = (dst_wp->sx * percentage) / 100; ! } else { ! size = args_strtonum(args, 'l', 0, INT_MAX, &cause); ! if (cause != NULL) { ! cmdq_error(item, "size %s", cause); ! free(cause); ! return (CMD_RETURN_ERROR); ! } } } else if (args_has(args, 'p')) { percentage = args_strtonum(args, 'p', 0, 100, &cause);