[BACK]Return to cmd-resize-pane.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / tmux

Diff for /src/usr.bin/tmux/cmd-resize-pane.c between version 1.38 and 1.39

version 1.38, 2019/07/06 20:56:34 version 1.39, 2019/10/15 08:25:37
Line 19 
Line 19 
 #include <sys/types.h>  #include <sys/types.h>
   
 #include <stdlib.h>  #include <stdlib.h>
   #include <string.h>
   
 #include "tmux.h"  #include "tmux.h"
   
Line 55 
Line 56 
         struct window           *w = wl->window;          struct window           *w = wl->window;
         struct client           *c = item->client;          struct client           *c = item->client;
         struct session          *s = item->target.s;          struct session          *s = item->target.s;
         const char              *errstr;          const char              *errstr, *p;
         char                    *cause;          char                    *cause, *copy;
         u_int                    adjust;          u_int                    adjust;
         int                      x, y;          int                      x, y, percentage;
           size_t                   plen;
   
         if (args_has(args, 'M')) {          if (args_has(args, 'M')) {
                 if (cmd_mouse_window(&shared->mouse, &s) == NULL)                  if (cmd_mouse_window(&shared->mouse, &s) == NULL)
Line 91 
Line 93 
                 }                  }
         }          }
   
         if (args_has(args, 'x')) {          if ((p = args_get(args, 'x')) != NULL) {
                 x = args_strtonum(args, 'x', PANE_MINIMUM, INT_MAX, &cause);                  plen = strlen(p);
                 if (cause != NULL) {                  if (p[plen - 1] == '%') {
                         cmdq_error(item, "width %s", cause);                          copy = xstrdup(p);
                         free(cause);                          copy[plen - 1] = '\0';
                         return (CMD_RETURN_ERROR);                          percentage = strtonum(copy, 0, INT_MAX, &errstr);
                           free(copy);
                           if (errstr != NULL) {
                                   cmdq_error(item, "width %s", errstr);
                                   return (CMD_RETURN_ERROR);
                           }
                           x = (w->sx * percentage) / 100;
                           if (x < PANE_MINIMUM)
                                   x = PANE_MINIMUM;
                           if (x > INT_MAX)
                                   x = INT_MAX;
                   } else {
                           x = args_strtonum(args, 'x', PANE_MINIMUM, INT_MAX,
                               &cause);
                           if (cause != NULL) {
                                   cmdq_error(item, "width %s", cause);
                                   free(cause);
                                   return (CMD_RETURN_ERROR);
                           }
                 }                  }
                 layout_resize_pane_to(wp, LAYOUT_LEFTRIGHT, x);                  layout_resize_pane_to(wp, LAYOUT_LEFTRIGHT, x);
         }          }
         if (args_has(args, 'y')) {          if ((p = args_get(args, 'y')) != NULL) {
                 y = args_strtonum(args, 'y', PANE_MINIMUM, INT_MAX, &cause);                  plen = strlen(p);
                 if (cause != NULL) {                  if (p[plen - 1] == '%') {
                         cmdq_error(item, "height %s", cause);                          copy = xstrdup(p);
                         free(cause);                          copy[plen - 1] = '\0';
                         return (CMD_RETURN_ERROR);                          percentage = strtonum(copy, 0, INT_MAX, &errstr);
                           free(copy);
                           if (errstr != NULL) {
                                   cmdq_error(item, "height %s", errstr);
                                   return (CMD_RETURN_ERROR);
                           }
                           y = (w->sy * percentage) / 100;
                           if (y < PANE_MINIMUM)
                                   y = PANE_MINIMUM;
                           if (y > INT_MAX)
                                   y = INT_MAX;
                   }
                   else {
                           y = args_strtonum(args, 'y', PANE_MINIMUM, INT_MAX,
                               &cause);
                           if (cause != NULL) {
                                   cmdq_error(item, "height %s", cause);
                                   free(cause);
                                   return (CMD_RETURN_ERROR);
                           }
                 }                  }
                 layout_resize_pane_to(wp, LAYOUT_TOPBOTTOM, y);                  layout_resize_pane_to(wp, LAYOUT_TOPBOTTOM, y);
         }          }

Legend:
Removed from v.1.38  
changed lines
  Added in v.1.39