From c41691a7755fef462ef12f51cc299335f0d832f2 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Mon, 8 Dec 2014 10:14:29 +0100 Subject: printf: move simple_strto*() functions to separate file These are not needed in the PBL, so move them to a separate file. Signed-off-by: Sascha Hauer --- lib/Makefile | 1 + lib/strtox.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ lib/vsprintf.c | 66 -------------------------------------------------------- 3 files changed, 69 insertions(+), 66 deletions(-) create mode 100644 lib/strtox.c diff --git a/lib/Makefile b/lib/Makefile index a6c7dfbbbe..604d934765 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -4,6 +4,7 @@ obj-y += ctype.o obj-y += rbtree.o obj-y += display_options.o obj-y += string.o +obj-y += strtox.o obj-y += vsprintf.o obj-y += div64.o obj-y += misc.o diff --git a/lib/strtox.c b/lib/strtox.c new file mode 100644 index 0000000000..882865b45d --- /dev/null +++ b/lib/strtox.c @@ -0,0 +1,68 @@ +#include +#include + +unsigned long simple_strtoul(const char *cp,char **endp,unsigned int base) +{ + unsigned long result = 0,value; + + if (*cp == '0') { + cp++; + if ((*cp == 'x') && isxdigit(cp[1])) { + base = 16; + cp++; + } + if (!base) { + base = 8; + } + } + if (!base) { + base = 10; + } + while (isxdigit(*cp) && (value = isdigit(*cp) ? *cp-'0' : (islower(*cp) + ? toupper(*cp) : *cp)-'A'+10) < base) { + result = result*base + value; + cp++; + } + if (endp) + *endp = (char *)cp; + return result; +} +EXPORT_SYMBOL(simple_strtoul); + +long simple_strtol(const char *cp,char **endp,unsigned int base) +{ + if(*cp=='-') + return -simple_strtoul(cp+1,endp,base); + return simple_strtoul(cp,endp,base); +} +EXPORT_SYMBOL(simple_strtol); + +unsigned long long simple_strtoull (const char *cp, char **endp, unsigned int base) +{ + unsigned long long result = 0, value; + + if (*cp == '0') { + cp++; + if ((*cp == 'x') && isxdigit (cp[1])) { + base = 16; + cp++; + } + if (!base) { + base = 8; + } + } + if (!base) { + base = 10; + } + while (isxdigit (*cp) && (value = isdigit (*cp) + ? *cp - '0' + : (islower (*cp) ? toupper (*cp) : *cp) - 'A' + 10) < base) { + result = result * base + value; + cp++; + } + if (endp) + *endp = (char *) cp; + return result; +} +EXPORT_SYMBOL(simple_strtoull); + diff --git a/lib/vsprintf.c b/lib/vsprintf.c index a1f95fed26..b474202fc1 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -18,72 +18,6 @@ #include #include -#include - -unsigned long simple_strtoul(const char *cp,char **endp,unsigned int base) -{ - unsigned long result = 0,value; - - if (*cp == '0') { - cp++; - if ((*cp == 'x') && isxdigit(cp[1])) { - base = 16; - cp++; - } - if (!base) { - base = 8; - } - } - if (!base) { - base = 10; - } - while (isxdigit(*cp) && (value = isdigit(*cp) ? *cp-'0' : (islower(*cp) - ? toupper(*cp) : *cp)-'A'+10) < base) { - result = result*base + value; - cp++; - } - if (endp) - *endp = (char *)cp; - return result; -} -EXPORT_SYMBOL(simple_strtoul); - -long simple_strtol(const char *cp,char **endp,unsigned int base) -{ - if(*cp=='-') - return -simple_strtoul(cp+1,endp,base); - return simple_strtoul(cp,endp,base); -} -EXPORT_SYMBOL(simple_strtol); - -unsigned long long simple_strtoull (const char *cp, char **endp, unsigned int base) -{ - unsigned long long result = 0, value; - - if (*cp == '0') { - cp++; - if ((*cp == 'x') && isxdigit (cp[1])) { - base = 16; - cp++; - } - if (!base) { - base = 8; - } - } - if (!base) { - base = 10; - } - while (isxdigit (*cp) && (value = isdigit (*cp) - ? *cp - '0' - : (islower (*cp) ? toupper (*cp) : *cp) - 'A' + 10) < base) { - result = result * base + value; - cp++; - } - if (endp) - *endp = (char *) cp; - return result; -} -EXPORT_SYMBOL(simple_strtoull); /* we use this so that we can do without the ctype library */ #define is_digit(c) ((c) >= '0' && (c) <= '9') -- cgit v1.2.3