[BACK]Return to arguments.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / tmux

Diff for /src/usr.bin/tmux/arguments.c between version 1.28 and 1.29

version 1.28, 2020/03/17 16:02:38 version 1.29, 2020/03/21 13:16:15
Line 344 
Line 344 
         *cause = NULL;          *cause = NULL;
         return (ll);          return (ll);
 }  }
   
   /* Convert an argument to a number which may be a percentage. */
   long long
   args_percentage(struct args *args, u_char ch, long long minval,
       long long maxval, long long curval, char **cause)
   {
           const char              *errstr;
           long long                ll;
           struct args_entry       *entry;
           struct args_value       *value;
           size_t                   valuelen;
           char                    *copy;
   
           if ((entry = args_find(args, ch)) == NULL) {
                   *cause = xstrdup("missing");
                   return (0);
           }
           value = TAILQ_LAST(&entry->values, args_values);
           valuelen = strlen(value->value);
   
           if (value->value[valuelen - 1] == '%') {
                   copy = xstrdup(value->value);
                   copy[valuelen - 1] = '\0';
   
                   ll = strtonum(copy, 0, 100, &errstr);
                   free(copy);
                   if (errstr != NULL) {
                           *cause = xstrdup(errstr);
                           return (0);
                   }
                   ll = (curval * ll) / 100;
                   if (ll < minval) {
                           *cause = xstrdup("too large");
                           return (0);
                   }
                   if (ll > maxval) {
                           *cause = xstrdup("too small");
                           return (0);
                   }
           } else {
                   ll = strtonum(value->value, minval, maxval, &errstr);
                   if (errstr != NULL) {
                           *cause = xstrdup(errstr);
                           return (0);
                   }
           }
   
           *cause = NULL;
           return (ll);
   }

Legend:
Removed from v.1.28  
changed lines
  Added in v.1.29