summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2014-12-08 10:16:43 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2015-01-05 11:30:58 +0100
commit017da2273a1bfef0b2b24e50cc124bdc1845e0f3 (patch)
tree8aca84060e3e95fbbd0bbf40d127b36105236f54
parent8a7335f8b5117df144d26dddbd465a22f2273df8 (diff)
downloadbarebox-017da2273a1bfef0b2b24e50cc124bdc1845e0f3.tar.gz
barebox-017da2273a1bfef0b2b24e50cc124bdc1845e0f3.tar.xz
printf: use local isdigit/isalnum implementation
To be independent of the _ctype array. This makes it possible to add printf support to the PBL without adding _ctype aswell. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--lib/vsprintf.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/vsprintf.c b/lib/vsprintf.c
index b474202fc1..7f6b161a47 100644
--- a/lib/vsprintf.c
+++ b/lib/vsprintf.c
@@ -21,6 +21,8 @@
/* we use this so that we can do without the ctype library */
#define is_digit(c) ((c) >= '0' && (c) <= '9')
+#define is_alpha(c) (((c) >= 'A' && (c) <= 'Z') || ((c) >= 'a' && (c) <= 'z'))
+#define is_alnum(c) (is_digit(c) || is_alpha(c))
static int skip_atoi(const char **s)
{
@@ -351,7 +353,7 @@ int vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
/* get field width */
field_width = -1;
- if (isdigit(*fmt))
+ if (is_digit(*fmt))
field_width = skip_atoi(&fmt);
else if (*fmt == '*') {
++fmt;
@@ -367,7 +369,7 @@ int vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
precision = -1;
if (*fmt == '.') {
++fmt;
- if (isdigit(*fmt))
+ if (is_digit(*fmt))
precision = skip_atoi(&fmt);
else if (*fmt == '*') {
++fmt;
@@ -422,7 +424,7 @@ int vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
va_arg(args, void *),
field_width, precision, flags);
/* Skip all alphanumeric pointer suffixes */
- while (isalnum(fmt[1]))
+ while (is_alnum(fmt[1]))
fmt++;
continue;