[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] common: move simple_strto{,u}l{,l}() to lib/
commit e35944f37b4d98a81c832f0c4c3ed03b304af6d2 Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Wed Aug 2 10:51:39 2023 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Wed Aug 2 10:51:39 2023 +0200 common: move simple_strto{,u}l{,l}() to lib/ Convert style from a Xen/Linux mix to pure Xen while doing the move. No other changes, despite having been heavily tempted to do some - at the very least to make simple_strtoul() and simple_strtoull() the same in how they deal with non-numeric digits. Requested-by: Shawn Anastasio <sanastasio@xxxxxxxxxxxxxxxxxxxxx> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Reviewed-by: Shawn Anastasio <sanastasio@xxxxxxxxxxxxxxxxxxxxx> --- xen/common/vsprintf.c | 102 -------------------------------------------------- xen/lib/Makefile | 4 ++ xen/lib/strtol.c | 28 ++++++++++++++ xen/lib/strtoll.c | 28 ++++++++++++++ xen/lib/strtoul.c | 61 ++++++++++++++++++++++++++++++ xen/lib/strtoull.c | 62 ++++++++++++++++++++++++++++++ 6 files changed, 183 insertions(+), 102 deletions(-) diff --git a/xen/common/vsprintf.c b/xen/common/vsprintf.c index b278961cc3..94c1ba7257 100644 --- a/xen/common/vsprintf.c +++ b/xen/common/vsprintf.c @@ -24,108 +24,6 @@ #include <asm/div64.h> #include <asm/page.h> -/** - * simple_strtoul - convert a string to an unsigned long - * @cp: The start of the string - * @endp: A pointer to the end of the parsed string will be placed here - * @base: The number base to use - */ -unsigned long simple_strtoul( - const char *cp, const char **endp, unsigned int base) -{ - unsigned long result = 0,value; - - if (!base) { - base = 10; - if (*cp == '0') { - base = 8; - cp++; - if ((toupper(*cp) == 'X') && isxdigit(cp[1])) { - cp++; - base = 16; - } - } - } else if (base == 16) { - if (cp[0] == '0' && toupper(cp[1]) == 'X') - cp += 2; - } - while (isxdigit(*cp) && - (value = isdigit(*cp) ? *cp-'0' : toupper(*cp)-'A'+10) < base) { - result = result*base + value; - cp++; - } - if (endp) - *endp = cp; - return result; -} - -EXPORT_SYMBOL(simple_strtoul); - -/** - * simple_strtol - convert a string to a signed long - * @cp: The start of the string - * @endp: A pointer to the end of the parsed string will be placed here - * @base: The number base to use - */ -long simple_strtol(const char *cp, const char **endp, unsigned int base) -{ - if(*cp=='-') - return -simple_strtoul(cp+1,endp,base); - return simple_strtoul(cp,endp,base); -} - -EXPORT_SYMBOL(simple_strtol); - -/** - * simple_strtoull - convert a string to an unsigned long long - * @cp: The start of the string - * @endp: A pointer to the end of the parsed string will be placed here - * @base: The number base to use - */ -unsigned long long simple_strtoull( - const char *cp, const char **endp, unsigned int base) -{ - unsigned long long result = 0,value; - - if (!base) { - base = 10; - if (*cp == '0') { - base = 8; - cp++; - if ((toupper(*cp) == 'X') && isxdigit(cp[1])) { - cp++; - base = 16; - } - } - } else if (base == 16) { - if (cp[0] == '0' && toupper(cp[1]) == 'X') - cp += 2; - } - while (isxdigit(*cp) && (value = isdigit(*cp) ? *cp-'0' : (islower(*cp) - ? toupper(*cp) : *cp)-'A'+10) < base) { - result = result*base + value; - cp++; - } - if (endp) - *endp = cp; - return result; -} - -EXPORT_SYMBOL(simple_strtoull); - -/** - * simple_strtoll - convert a string to a signed long long - * @cp: The start of the string - * @endp: A pointer to the end of the parsed string will be placed here - * @base: The number base to use - */ -long long simple_strtoll(const char *cp,const char **endp,unsigned int base) -{ - if(*cp=='-') - return -simple_strtoull(cp+1,endp,base); - return simple_strtoull(cp,endp,base); -} - static int skip_atoi(const char **s) { int i=0; diff --git a/xen/lib/Makefile b/xen/lib/Makefile index b311ea739c..2d9ebb945f 100644 --- a/xen/lib/Makefile +++ b/xen/lib/Makefile @@ -28,6 +28,10 @@ lib-y += strrchr.o lib-y += strsep.o lib-y += strspn.o lib-y += strstr.o +lib-y += strtol.o +lib-y += strtoll.o +lib-y += strtoul.o +lib-y += strtoull.o lib-$(CONFIG_X86) += xxhash32.o lib-$(CONFIG_X86) += xxhash64.o diff --git a/xen/lib/strtol.c b/xen/lib/strtol.c new file mode 100644 index 0000000000..30dca779cf --- /dev/null +++ b/xen/lib/strtol.c @@ -0,0 +1,28 @@ +/* + * Copyright (C) 1991, 1992 Linus Torvalds + */ + +#include <xen/lib.h> + +/** + * simple_strtol - convert a string to a signed long + * @cp: The start of the string + * @endp: A pointer to the end of the parsed string will be placed here + * @base: The number base to use + */ +long simple_strtol(const char *cp, const char **endp, unsigned int base) +{ + if ( *cp == '-' ) + return -simple_strtoul(cp + 1, endp, base); + return simple_strtoul(cp, endp, base); +} + +/* + * Local variables: + * mode: C + * c-file-style: "BSD" + * c-basic-offset: 4 + * tab-width: 4 + * indent-tabs-mode: nil + * End: + */ diff --git a/xen/lib/strtoll.c b/xen/lib/strtoll.c new file mode 100644 index 0000000000..5d23fd80e8 --- /dev/null +++ b/xen/lib/strtoll.c @@ -0,0 +1,28 @@ +/* + * Copyright (C) 1991, 1992 Linus Torvalds + */ + +#include <xen/lib.h> + +/** + * simple_strtoll - convert a string to a signed long long + * @cp: The start of the string + * @endp: A pointer to the end of the parsed string will be placed here + * @base: The number base to use + */ +long long simple_strtoll(const char *cp, const char **endp, unsigned int base) +{ + if ( *cp == '-' ) + return -simple_strtoull(cp + 1, endp, base); + return simple_strtoull(cp, endp, base); +} + +/* + * Local variables: + * mode: C + * c-file-style: "BSD" + * c-basic-offset: 4 + * tab-width: 4 + * indent-tabs-mode: nil + * End: + */ diff --git a/xen/lib/strtoul.c b/xen/lib/strtoul.c new file mode 100644 index 0000000000..a378fe735e --- /dev/null +++ b/xen/lib/strtoul.c @@ -0,0 +1,61 @@ +/* + * Copyright (C) 1991, 1992 Linus Torvalds + */ + +#include <xen/ctype.h> +#include <xen/lib.h> + +/** + * simple_strtoul - convert a string to an unsigned long + * @cp: The start of the string + * @endp: A pointer to the end of the parsed string will be placed here + * @base: The number base to use + */ +unsigned long simple_strtoul( + const char *cp, const char **endp, unsigned int base) +{ + unsigned long result = 0, value; + + if ( !base ) + { + base = 10; + if ( *cp == '0' ) + { + base = 8; + cp++; + if ( (toupper(*cp) == 'X') && isxdigit(cp[1]) ) + { + cp++; + base = 16; + } + } + } + else if ( base == 16 ) + { + if ( cp[0] == '0' && toupper(cp[1]) == 'X' ) + cp += 2; + } + + while ( isxdigit(*cp) && + (value = isdigit(*cp) ? *cp - '0' + : toupper(*cp) - 'A' + 10) < base ) + { + result = result * base + value; + cp++; + } + + if ( endp ) + *endp = cp; + + return result; +} + +/* + * Local variables: + * mode: C + * c-file-style: "BSD" + * c-basic-offset: 4 + * tab-width: 4 + * indent-tabs-mode: nil + * End: + */ diff --git a/xen/lib/strtoull.c b/xen/lib/strtoull.c new file mode 100644 index 0000000000..ba6e0f53b3 --- /dev/null +++ b/xen/lib/strtoull.c @@ -0,0 +1,62 @@ +/* + * Copyright (C) 1991, 1992 Linus Torvalds + */ + +#include <xen/ctype.h> +#include <xen/lib.h> + +/** + * simple_strtoull - convert a string to an unsigned long long + * @cp: The start of the string + * @endp: A pointer to the end of the parsed string will be placed here + * @base: The number base to use + */ +unsigned long long simple_strtoull( + const char *cp, const char **endp, unsigned int base) +{ + unsigned long long result = 0, value; + + if ( !base ) + { + base = 10; + if ( *cp == '0' ) + { + base = 8; + cp++; + if ( (toupper(*cp) == 'X') && isxdigit(cp[1]) ) + { + cp++; + base = 16; + } + } + } + else if ( base == 16 ) + { + if ( cp[0] == '0' && toupper(cp[1]) == 'X' ) + cp += 2; + } + + while ( isxdigit(*cp) && + (value = isdigit(*cp) ? *cp - '0' + : (islower(*cp) ? toupper(*cp) + : *cp) - 'A' + 10) < base ) + { + result = result * base + value; + cp++; + } + + if ( endp ) + *endp = cp; + + return result; +} + +/* + * Local variables: + * mode: C + * c-file-style: "BSD" + * c-basic-offset: 4 + * tab-width: 4 + * indent-tabs-mode: nil + * End: + */ -- generated by git-patchbot for /home/xen/git/xen.git#master
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |