[syslinux:elflink] com32: Add unhexchar

syslinux-bot for Matt Fleming matt.fleming at linux.intel.com
Sat Dec 17 21:19:34 PST 2011


Commit-ID:  dd5e4935f3e2f8f1940c72d9c3b39a926300c42e
Gitweb:     http://www.syslinux.org/commit/dd5e4935f3e2f8f1940c72d9c3b39a926300c42e
Author:     Matt Fleming <matt.fleming at linux.intel.com>
AuthorDate: Wed, 18 May 2011 15:55:21 +0100
Committer:  Matt Fleming <matt.fleming at intel.com>
CommitDate: Wed, 2 Nov 2011 11:23:43 +0000

com32: Add unhexchar

Add a C implementation of unhexchar() for use in C code. This
implementation should be an exact duplicate of the old asm version.

Signed-off-by: Matt Fleming <matt.fleming at linux.intel.com>

---
 com32/include/stdio.h |   23 +++++++++++++++++++++++
 1 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/com32/include/stdio.h b/com32/include/stdio.h
index 238c396..902a0e8 100644
--- a/com32/include/stdio.h
+++ b/com32/include/stdio.h
@@ -119,4 +119,27 @@ __extern void perror(const char *);
 
 __extern int rename(const char *, const char *);
 
+/*
+ * unhexchar: Convert a hexadecimal digit to the equivalent number
+ *
+ * Returns 0 if 'data' was converted succesfully, -1 otherwise.
+ */
+static inline int unhexchar(char *data)
+{
+	char num = *data;
+
+	if (num >= '0' && num <= '9') {
+		*data = num - '0';
+		return 0;
+	} else {
+		num |= 0x20;	/* upper case -> lower case */
+		if (num >= 'a' && num <= 'f') {
+			*data = num - 'a' - 10;
+			return 0;
+		}
+	}
+
+	return -1;
+}
+
 #endif /* _STDIO_H */


More information about the Syslinux-commits mailing list