From 2c413f5232e02d8dd413a93f7f4f5cb8d2420ec6 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Mon, 27 Sep 2010 02:42:28 -0400 Subject: mtd-utils: new strtoX helpers Simply usage of converting strings to numbers by adding some wrappers around the standard strtoX functions. These helpers simplify the api of these functions a bit by providing an optional "error" pointer and automatic error message. Signed-off-by: Mike Frysinger Signed-off-by: Artem Bityutskiy --- include/common.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'include/common.h') diff --git a/include/common.h b/include/common.h index dce067b..472315e 100644 --- a/include/common.h +++ b/include/common.h @@ -20,6 +20,7 @@ #define __MTD_UTILS_COMMON_H__ #include +#include #include #include #include @@ -79,6 +80,29 @@ static inline int is_power_of_2(unsigned long long n) return (n != 0 && ((n & (n - 1)) == 0)); } +/** + * simple_strtoX - convert a hex/dec/oct string into a number + * @snum: buffer to convert + * @error: set to 1 when buffer isn't fully consumed + */ +#define simple_strtoX(func, type) \ +static inline type simple_##func(const char *snum, int *error) \ +{ \ + char *endptr; \ + type ret = func(snum, &endptr, 0); \ + \ + if (error && (!*snum || *endptr)) { \ + errmsg("%s: unable to parse the number '%s'", #func, snum); \ + *error = 1; \ + } \ + \ + return ret; \ +} +simple_strtoX(strtol, long int) +simple_strtoX(strtoll, long int) +simple_strtoX(strtoul, unsigned long int) +simple_strtoX(strtoull, unsigned long int) + #ifdef __cplusplus } #endif -- cgit v1.2.3