| #include "string.h" | 
 |  | 
 | static int hex(char ch) | 
 | { | 
 | 	if ((ch >= '0') && (ch <= '9')) | 
 | 		return ch - '0'; | 
 | 	if ((ch >= 'a') && (ch <= 'f')) | 
 | 		return ch - 'a' + 10; | 
 | 	if ((ch >= 'A') && (ch <= 'F')) | 
 | 		return ch - 'A' + 10; | 
 | 	return -1; | 
 | } | 
 |  | 
 | /* | 
 |  * While we find nice hex chars, build a long_val. | 
 |  * Return number of chars processed. | 
 |  */ | 
 | int hex2u64(const char *ptr, u64 *long_val) | 
 | { | 
 | 	const char *p = ptr; | 
 | 	*long_val = 0; | 
 |  | 
 | 	while (*p) { | 
 | 		const int hex_val = hex(*p); | 
 |  | 
 | 		if (hex_val < 0) | 
 | 			break; | 
 |  | 
 | 		*long_val = (*long_val << 4) | hex_val; | 
 | 		p++; | 
 | 	} | 
 |  | 
 | 	return p - ptr; | 
 | } |