diff options
author | Phil Sutter <phil@nwl.cc> | 2023-11-22 20:43:40 +0100 |
---|---|---|
committer | Phil Sutter <phil@nwl.cc> | 2023-11-23 18:01:21 +0100 |
commit | f7056d0fdb43e91497615ed6f21753ee3c91db63 (patch) | |
tree | 6b8b486e2f488175d60f1c075c484db2c94b1f64 | |
parent | 1af6984c57cce5169491d308b58a9c85464b2159 (diff) |
libxtables: Introduce struct xt_option_entry::base
Enable guided option parser users to parse integer values with a fixed
base.
Signed-off-by: Phil Sutter <phil@nwl.cc>
-rw-r--r-- | include/xtables.h | 3 | ||||
-rw-r--r-- | libxtables/xtoptions.c | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/include/xtables.h b/include/xtables.h index 1a9e08bb..b3c45c98 100644 --- a/include/xtables.h +++ b/include/xtables.h @@ -122,6 +122,7 @@ enum xt_option_flags { * @size: size of the item pointed to by @ptroff; this is a safeguard * @min: lowest allowed value (for singular integral types) * @max: highest allowed value (for singular integral types) + * @base: assumed base of parsed value for integer types (default 0) */ struct xt_option_entry { const char *name; @@ -129,7 +130,7 @@ struct xt_option_entry { unsigned int id, excl, also, flags; unsigned int ptroff; size_t size; - unsigned int min, max; + unsigned int min, max, base; }; /** diff --git a/libxtables/xtoptions.c b/libxtables/xtoptions.c index 25540f8b..4fd0e70e 100644 --- a/libxtables/xtoptions.c +++ b/libxtables/xtoptions.c @@ -161,7 +161,8 @@ static void xtopt_parse_int(struct xt_option_call *cb) if (cb->entry->max != 0) lmax = cb->entry->max; - if (!xtables_strtoul(cb->arg, NULL, &value, lmin, lmax)) + if (!xtables_strtoul_base(cb->arg, NULL, &value, + lmin, lmax, cb->entry->base)) xt_params->exit_err(PARAMETER_PROBLEM, "%s: bad value for option \"--%s\", " "or out of range (%ju-%ju).\n", |