diff --git a/include/common/standard.h b/include/common/standard.h index dbb219a09..e795df717 100644 --- a/include/common/standard.h +++ b/include/common/standard.h @@ -180,9 +180,19 @@ extern int ishex(char s); /* * Return integer equivalent of character for a hex digit (0-9, a-f, A-F), - * otherwise -1. + * otherwise -1. This compact form helps gcc produce efficient code. */ -extern int hex2i(int c); +static inline int hex2i(int c) +{ + if ((unsigned char)(c -= '0') > 9) { + if ((unsigned char)(c -= 'A' - '0') > 5 && + (unsigned char)(c -= 'a' - 'A') > 5) + c = -11; + c += 10; + } + return c; +} + /* * Checks for invalid characters. Valid chars are [A-Za-z0-9_:.-]. If an diff --git a/src/standard.c b/src/standard.c index 76031e956..c26d7a035 100644 --- a/src/standard.c +++ b/src/standard.c @@ -483,21 +483,6 @@ int ishex(char s) return 0; } -/* - * Return integer equivalent of character for a hex digit (0-9, a-f, A-F), - * otherwise -1. This compact form helps gcc produce efficient code. - */ -int hex2i(int c) -{ - if ((unsigned char)(c -= '0') > 9) { - if ((unsigned char)(c -= 'A' - '0') > 5 && - (unsigned char)(c -= 'a' - 'A') > 5) - c = -11; - c += 10; - } - return c; -} - /* * Checks for invalid characters. Valid chars are [A-Za-z0-9_:.-]. If an * invalid character is found, a pointer to it is returned. If everything is