* [PATCH] lib: strtox: Use plumbing from kstrtox.c
@ 2019-01-18 0:41 Andrey Smirnov
2019-01-21 7:35 ` Sascha Hauer
0 siblings, 1 reply; 2+ messages in thread
From: Andrey Smirnov @ 2019-01-18 0:41 UTC (permalink / raw)
To: barebox; +Cc: Andrey Smirnov
Sync up implemenations of simple_str*() functions with their kernel
counterparts in order to convert the code to use plumbing from
kstrtox.c
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
---
lib/strtox.c | 102 ++++++++++++++++++++++++---------------------------
1 file changed, 48 insertions(+), 54 deletions(-)
diff --git a/lib/strtox.c b/lib/strtox.c
index 4b601a1b3..a5b770c8c 100644
--- a/lib/strtox.c
+++ b/lib/strtox.c
@@ -1,38 +1,56 @@
#include <common.h>
#include <linux/ctype.h>
-unsigned long simple_strtoul(const char *cp, char **endp, unsigned int base)
+#include "kstrtox.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
+ *
+ * This function is obsolete. Please use kstrtoull instead.
+ */
+unsigned long long simple_strtoull(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;
- }
+ unsigned long long result;
+ unsigned int rv;
- if (!base)
- base = 10;
-
- while (isxdigit(*cp) && (value = isdigit(*cp) ?
- *cp - '0' : toupper(*cp) - 'A' + 10) < base) {
- result = result * base + value;
- cp++;
- }
+ cp = _parse_integer_fixup_radix(cp, &base);
+ rv = _parse_integer(cp, base, &result);
+ /* FIXME */
+ cp += (rv & ~KSTRTOX_OVERFLOW);
if (endp)
*endp = (char *)cp;
return result;
}
+EXPORT_SYMBOL(simple_strtoull);
+
+/**
+ * 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
+ *
+ * This function is obsolete. Please use kstrtoul instead.
+ */
+unsigned long simple_strtoul(const char *cp, char **endp, unsigned int base)
+{
+ return simple_strtoull(cp, endp, base);
+}
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
+ *
+ * This function is obsolete. Please use kstrtol instead.
+ */
long simple_strtol(const char *cp, char **endp, unsigned int base)
{
if (*cp == '-')
@@ -42,38 +60,14 @@ long simple_strtol(const char *cp, char **endp, unsigned int 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' : toupper(*cp) - 'A' + 10) < base) {
- result = result * base + value;
- cp++;
- }
-
- if (endp)
- *endp = (char *)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
+ *
+ * This function is obsolete. Please use kstrtoll instead.
+ */
long long simple_strtoll(const char *cp, char **endp, unsigned int base)
{
if (*cp == '-')
--
2.20.1
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] lib: strtox: Use plumbing from kstrtox.c
2019-01-18 0:41 [PATCH] lib: strtox: Use plumbing from kstrtox.c Andrey Smirnov
@ 2019-01-21 7:35 ` Sascha Hauer
0 siblings, 0 replies; 2+ messages in thread
From: Sascha Hauer @ 2019-01-21 7:35 UTC (permalink / raw)
To: Andrey Smirnov; +Cc: barebox
On Thu, Jan 17, 2019 at 04:41:42PM -0800, Andrey Smirnov wrote:
> Sync up implemenations of simple_str*() functions with their kernel
> counterparts in order to convert the code to use plumbing from
> kstrtox.c
>
> Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
> ---
> lib/strtox.c | 102 ++++++++++++++++++++++++---------------------------
> 1 file changed, 48 insertions(+), 54 deletions(-)
Applied, thanks
Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-01-21 7:35 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-18 0:41 [PATCH] lib: strtox: Use plumbing from kstrtox.c Andrey Smirnov
2019-01-21 7:35 ` Sascha Hauer
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox