summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2010-09-27 02:42:28 -0400
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>2010-09-27 09:44:54 +0300
commit2c413f5232e02d8dd413a93f7f4f5cb8d2420ec6 (patch)
tree64c234ee42cca7d92e8b31fe5b6b6435faf6d8ed
parenta14a8f6856178323a405e8a3d3e877363d387ae0 (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>
-rw-r--r--include/common.h24
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