From: Matt Fleming Date: Wed, 18 May 2011 14:55:21 +0000 (+0100) Subject: com32: Add unhexchar X-Git-Tag: syslinux-5.00-pre1~36 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=dd5e4935f3e2f8f1940c72d9c3b39a926300c42e;p=platform%2Fupstream%2Fsyslinux.git 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 --- 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 */