diff options
author | Thomas Adam <thomas@xteddy.org> | 2020-04-22 12:01:38 +0100 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2020-04-22 12:01:38 +0100 |
commit | 8ae3915cc2c65228af12ff392ed8fdf26db489a2 (patch) | |
tree | 9a8088c37a83408787f36da5e82f02fd82e12f09 /arguments.c | |
parent | dd5299841a87c0bf842488f7f9feb84b7e37c819 (diff) | |
parent | b72498c4ff0566d377a4757d1393817627c281ec (diff) | |
download | rtmux-8ae3915cc2c65228af12ff392ed8fdf26db489a2.tar.gz rtmux-8ae3915cc2c65228af12ff392ed8fdf26db489a2.tar.bz2 rtmux-8ae3915cc2c65228af12ff392ed8fdf26db489a2.zip |
Merge branch 'obsd-master'
Diffstat (limited to 'arguments.c')
-rw-r--r-- | arguments.c | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/arguments.c b/arguments.c index 73d492c0..e1956ace 100644 --- a/arguments.c +++ b/arguments.c @@ -351,22 +351,29 @@ 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; + const char *value; 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); + value = TAILQ_LAST(&entry->values, args_values)->value; + return (args_string_percentage(value, minval, maxval, curval, cause)); +} + +/* Convert a string to a number which may be a percentage. */ +long long +args_string_percentage(const char *value, long long minval, long long maxval, + long long curval, char **cause) +{ + const char *errstr; + long long ll; + size_t valuelen = strlen(value); + char *copy; - if (value->value[valuelen - 1] == '%') { - copy = xstrdup(value->value); + if (value[valuelen - 1] == '%') { + copy = xstrdup(value); copy[valuelen - 1] = '\0'; ll = strtonum(copy, 0, 100, &errstr); @@ -385,7 +392,7 @@ args_percentage(struct args *args, u_char ch, long long minval, return (0); } } else { - ll = strtonum(value->value, minval, maxval, &errstr); + ll = strtonum(value, minval, maxval, &errstr); if (errstr != NULL) { *cause = xstrdup(errstr); return (0); |