]> www.infradead.org Git - mtd-utils.git/commitdiff
mtd-utils: new strtoX helpers
authorMike Frysinger <vapier@gentoo.org>
Mon, 27 Sep 2010 06:42:28 +0000 (02:42 -0400)
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Mon, 27 Sep 2010 06:44:54 +0000 (09:44 +0300)
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>
include/common.h

index dce067b95189377e32856c5f0e5ba0819a6d28d6..472315e1a14dc71764446ff65467fdb9381fa8be 100644 (file)
@@ -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