diff options
author | Mike Frysinger <vapier@gentoo.org> | 2010-09-27 02:42:28 -0400 |
---|---|---|
committer | Artem Bityutskiy <Artem.Bityutskiy@nokia.com> | 2010-09-27 09:44:54 +0300 |
commit | 2c413f5232e02d8dd413a93f7f4f5cb8d2420ec6 (patch) | |
tree | 64c234ee42cca7d92e8b31fe5b6b6435faf6d8ed /include/common.h | |
parent | a14a8f6856178323a405e8a3d3e877363d387ae0 (diff) |
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 <vapier@gentoo.org>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Diffstat (limited to 'include/common.h')
-rw-r--r-- | include/common.h | 24 |
1 files changed, 24 insertions, 0 deletions
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 <stdio.h> +#include <stdlib.h> #include <ctype.h> #include <string.h> #include <errno.h> @@ -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 |