From 3a463c152a9a5503f9c37362b63acd6f72ecba6c Mon Sep 17 00:00:00 2001 From: Mathieu Schroeter Date: Tue, 8 Aug 2023 23:42:55 +0200 Subject: [PATCH] Add get_long utility and adapt get_integer accordingly Signed-off-by: Mathieu Schroeter Signed-off-by: David Ahern --- include/utils.h | 1 + lib/utils.c | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/include/utils.h b/include/utils.h index 3159dbab1..cf11174d9 100644 --- a/include/utils.h +++ b/include/utils.h @@ -142,6 +142,7 @@ int get_addr_rta(inet_prefix *dst, const struct rtattr *rta, int family); int get_addr_ila(__u64 *val, const char *arg); int read_prop(const char *dev, char *prop, long *value); +int get_long(long *val, const char *arg, int base); int get_integer(int *val, const char *arg, int base); int get_unsigned(unsigned *val, const char *arg, int base); int get_time_rtt(unsigned *val, const char *arg, int *raw); diff --git a/lib/utils.c b/lib/utils.c index b1f273054..68f443038 100644 --- a/lib/utils.c +++ b/lib/utils.c @@ -108,7 +108,7 @@ static int get_hex(char c) return -1; } -int get_integer(int *val, const char *arg, int base) +int get_long(long *val, const char *arg, int base) { long res; char *ptr; @@ -133,6 +133,17 @@ int get_integer(int *val, const char *arg, int base) if ((res == LONG_MAX || res == LONG_MIN) && errno == ERANGE) return -1; + if (val) + *val = res; + return 0; +} + +int get_integer(int *val, const char *arg, int base) +{ + long res; + + res = get_long(NULL, arg, base); + /* Outside range of int */ if (res < INT_MIN || res > INT_MAX) return -1; -- 2.47.2