]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
lib: Add "hex_byte()" to replace.h
authorVolker Lendecke <vl@samba.org>
Mon, 4 Jan 2021 12:12:30 +0000 (13:12 +0100)
committerStefan Metzmacher <metze@samba.org>
Tue, 2 Nov 2021 21:52:16 +0000 (21:52 +0000)
This is required in quite a few places, and replace.h has things like
ZERO_STRUCT already, so this is not completely outplaced.

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
(cherry picked from commit c8d9ce3f7c8c486ab21e320a0adcb71311dcb453)

lib/replace/replace.h

index 6c78311f2d3238dd4203597fec032c2b16203878..aaca9e67d3bdb0589ee4e61ef33fd22a8101277f 100644 (file)
@@ -977,6 +977,22 @@ bool nss_wrapper_hosts_enabled(void);
 bool socket_wrapper_enabled(void);
 bool uid_wrapper_enabled(void);
 
+static inline bool _hexcharval(char c, uint8_t *val)
+{
+       if ((c >= '0') && (c <= '9')) { *val = c - '0';      return true; }
+       if ((c >= 'a') && (c <= 'f')) { *val = c - 'a' + 10; return true; }
+       if ((c >= 'A') && (c <= 'F')) { *val = c - 'A' + 10; return true; }
+       return false;
+}
+
+static inline bool hex_byte(const char *in, uint8_t *out)
+{
+       uint8_t hi=0, lo=0;
+       bool ok = _hexcharval(in[0], &hi) && _hexcharval(in[1], &lo);
+       *out = (hi<<4)+lo;
+       return ok;
+}
+
 /* Needed for Solaris atomic_add_XX functions. */
 #if defined(HAVE_SYS_ATOMIC_H)
 #include <sys/atomic.h>