59 lines
1.8 KiB
Diff
59 lines
1.8 KiB
Diff
From 3a463c152a9a5503f9c37362b63acd6f72ecba6c Mon Sep 17 00:00:00 2001
|
|
From: Mathieu Schroeter <mathieu@schroetersa.ch>
|
|
Date: Tue, 8 Aug 2023 23:42:55 +0200
|
|
Subject: [PATCH] Add get_long utility and adapt get_integer accordingly
|
|
|
|
Conflict:contaxt adapt in include/utiles.h due to ebe23249ce1eeedb3610890e4c0c0f52fb8341fe
|
|
Reference:https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/commit?id=3a463c152a9a5503f9c37362b63acd6f72ecba6c
|
|
|
|
Signed-off-by: Mathieu Schroeter <mathieu@schroetersa.ch>
|
|
Signed-off-by: David Ahern <dsahern@kernel.org>
|
|
---
|
|
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 read_prop(const char *dev, char *prop, long *value);
|
|
int get_hex(char c);
|
|
+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;
|