]> rtime.felk.cvut.cz Git - lisovros/iproute2_canprio.git/commitdiff
utils: add s32 parser
authorHagen Paul Pfeifer <hagen@jauu.net>
Tue, 20 Dec 2011 11:28:46 +0000 (11:28 +0000)
committerStephen Hemminger <shemminger@vyatta.com>
Thu, 19 Jan 2012 22:24:52 +0000 (14:24 -0800)
Signed-off-by: Hagen Paul Pfeifer <hagen@jauu.net>
include/utils.h
lib/utils.c

index 47f8e07daf3f54fbbfdab458a23972c4e9a9fc62..496db68eb26d7d190d8ed8de691c2ffddee299aa 100644 (file)
@@ -85,6 +85,7 @@ extern int get_time_rtt(unsigned *val, const char *arg, int *raw);
 #define get_short get_s16
 extern int get_u64(__u64 *val, const char *arg, int base);
 extern int get_u32(__u32 *val, const char *arg, int base);
+extern int get_s32(__s32 *val, const char *arg, int base);
 extern int get_u16(__u16 *val, const char *arg, int base);
 extern int get_s16(__s16 *val, const char *arg, int base);
 extern int get_u8(__u8 *val, const char *arg, int base);
index efaf377ef1d2b552ae254c4873c3dbc766ac867d..d80f79b4fa26c690acc227ec932235f1e9f6521e 100644 (file)
@@ -25,6 +25,7 @@
 #include <linux/pkt_sched.h>
 #include <time.h>
 #include <sys/time.h>
+#include <errno.h>
 
 
 #include "utils.h"
@@ -198,6 +199,24 @@ int get_u8(__u8 *val, const char *arg, int base)
        return 0;
 }
 
+int get_s32(__s32 *val, const char *arg, int base)
+{
+       long res;
+       char *ptr;
+
+       errno = 0;
+
+       if (!arg || !*arg)
+               return -1;
+       res = strtol(arg, &ptr, base);
+       if (ptr == arg || *ptr ||
+           ((res ==  LONG_MIN || res == LONG_MAX) && errno == ERANGE) ||
+           res > INT32_MAX || res < INT32_MIN)
+               return -1;
+       *val = res;
+       return 0;
+}
+
 int get_s16(__s16 *val, const char *arg, int base)
 {
        long res;