=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/cmd-join-pane.c,v retrieving revision 1.38 retrieving revision 1.39 diff -c -r1.38 -r1.39 *** src/usr.bin/tmux/cmd-join-pane.c 2020/01/02 13:44:17 1.38 --- src/usr.bin/tmux/cmd-join-pane.c 2020/03/21 13:16:15 1.39 *************** *** 1,4 **** ! /* $OpenBSD: cmd-join-pane.c,v 1.38 2020/01/02 13:44:17 nicm Exp $ */ /* * Copyright (c) 2011 George Nachman --- 1,4 ---- ! /* $OpenBSD: cmd-join-pane.c,v 1.39 2020/03/21 13:16:15 nicm Exp $ */ /* * Copyright (c) 2011 George Nachman *************** *** 51,57 **** .alias = "movep", .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 }, --- 51,57 ---- .alias = "movep", .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 }, *************** *** 69,77 **** 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; --- 69,75 ---- struct winlink *src_wl, *dst_wl; struct window *src_w, *dst_w; struct window_pane *src_wp, *dst_wp; ! char *cause = NULL; int size, percentage, dst_idx, not_same_window; int flags; enum layout_type type; *************** *** 108,147 **** 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); ! if (cause != NULL) { ! cmdq_error(item, "percentage %s", cause); ! free(cause); ! return (CMD_RETURN_ERROR); ! } ! if (type == LAYOUT_TOPBOTTOM) ! size = (dst_wp->sy * percentage) / 100; ! else ! size = (dst_wp->sx * percentage) / 100; } flags = 0; --- 106,132 ---- type = LAYOUT_LEFTRIGHT; size = -1; ! if (args_has(args, 'l')) { ! if (type == LAYOUT_TOPBOTTOM) { ! size = args_percentage(args, 'l', 0, INT_MAX, ! dst_wp->sy, &cause); ! } else { ! size = args_percentage(args, 'l', 0, INT_MAX, ! dst_wp->sx, &cause); ! } ! } else if (args_has(args, 'p')) { ! percentage = args_strtonum(args, 'p', 0, 100, &cause); ! if (cause == NULL) { if (type == LAYOUT_TOPBOTTOM) size = (dst_wp->sy * percentage) / 100; else size = (dst_wp->sx * percentage) / 100; } ! } ! if (cause != NULL) { ! cmdq_error(item, "size %s", cause); ! free(cause); ! return (CMD_RETURN_ERROR); } flags = 0;