On 11/7/24 10:45 AM, Ilias Apalodimas wrote:
On Sun, 3 Nov 2024 at 22:42, Heinrich Schuchardt
<heinrich.schucha...@canonical.com> wrote:

We often convert hexadecimal strings to hextoull(). Provide a wrapper
function to simple_strtoull() that does not require specifying the radix.

Signed-off-by: Heinrich Schuchardt <heinrich.schucha...@canonical.com>
---
v2:
         no change
---
  include/vsprintf.h | 13 +++++++++++++
  lib/strto.c        |  5 +++++
  2 files changed, 18 insertions(+)

diff --git a/include/vsprintf.h b/include/vsprintf.h
index fe951471426..9da6ce7cc4d 100644
--- a/include/vsprintf.h
+++ b/include/vsprintf.h
@@ -44,6 +44,19 @@ ulong simple_strtoul(const char *cp, char **endp, unsigned 
int base);
   */
  unsigned long hextoul(const char *cp, char **endp);

+/**
+ * hex_strtoull - convert a string in hex to an unsigned long long
+ *
+ * @cp: The string to be converted
+ * @endp: Updated to point to the first character not converted
+ * Return: value decoded from string (0 if invalid)
+ *
+ * Converts a hex string to an unsigned long long. If there are invalid
+ * characters at the end these are ignored. In the worst case, if all 
characters
+ * are invalid, 0 is returned
+ */
+unsigned long long hextoull(const char *cp, char **endp);
+
  /**
   * dec_strtoul - convert a string in decimal to an unsigned long
   *
diff --git a/lib/strto.c b/lib/strto.c
index f83ac67c666..206d1e91847 100644
--- a/lib/strto.c
+++ b/lib/strto.c
@@ -78,6 +78,11 @@ ulong hextoul(const char *cp, char **endp)
         return simple_strtoul(cp, endp, 16);
  }

+unsigned long long hextoull(const char *cp, char **endp)
+{
+       return simple_strtoull(cp, endp, 16);
+}
+
  ulong dectoul(const char *cp, char **endp)
  {
         return simple_strtoul(cp, endp, 10);
--
2.45.2


Reviewed-by: Ilias Apalodimas <ilias.apalodi...@linaro.org>

+CC Jaehoon

Reply via email to