Commit 30d10db5 authored by Hagen Paul Pfeifer's avatar Hagen Paul Pfeifer Committed by Stephen Hemminger

utils: add s32 parser

Signed-off-by: default avatarHagen Paul Pfeifer <hagen@jauu.net>
parent aa38c3ee
......@@ -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);
......
......@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment