blob: 04743d3e903922ff5d3c3308380ace0196d6a4f4 [file] [log] [blame]
Arnaldo Carvalho de Meloa2a99e82009-10-05 14:26:18 -03001#include <string.h>
Arnaldo Carvalho de Meloea5cc872009-06-01 22:31:03 -03002#include "string.h"
3
4static int hex(char ch)
5{
6 if ((ch >= '0') && (ch <= '9'))
7 return ch - '0';
8 if ((ch >= 'a') && (ch <= 'f'))
9 return ch - 'a' + 10;
10 if ((ch >= 'A') && (ch <= 'F'))
11 return ch - 'A' + 10;
12 return -1;
13}
14
15/*
16 * While we find nice hex chars, build a long_val.
17 * Return number of chars processed.
18 */
Paul Mackerras9cffa8d2009-06-19 22:21:42 +100019int hex2u64(const char *ptr, u64 *long_val)
Arnaldo Carvalho de Meloea5cc872009-06-01 22:31:03 -030020{
21 const char *p = ptr;
22 *long_val = 0;
23
24 while (*p) {
25 const int hex_val = hex(*p);
26
27 if (hex_val < 0)
28 break;
29
30 *long_val = (*long_val << 4) | hex_val;
31 p++;
32 }
33
34 return p - ptr;
35}
Arnaldo Carvalho de Meloa2a99e82009-10-05 14:26:18 -030036
37char *strxfrchar(char *s, char from, char to)
38{
39 char *p = s;
40
41 while ((p = strchr(p, from)) != NULL)
42 *p++ = to;
43
44 return s;
45}