repo.or.cz
/
coreboot2.git
/
blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
log
|
graphiclog1
|
graphiclog2
|
commit
|
commitdiff
|
tree
|
refs
|
edit
|
fork
blame
|
history
|
raw
|
HEAD
spd/lp5: Add Hynix memory part
[coreboot2.git]
/
src
/
lib
/
hexstrtobin.c
blob
58dea8e349222af7ac787f73785d934ce7724948
1
/* SPDX-License-Identifier: GPL-2.0-only */
2
3
#include <ctype.h>
4
#include <lib.h>
5
6
size_t
hexstrtobin
(
const char
*
str
,
uint8_t
*
buf
,
size_t
len
)
7
{
8
size_t
count
,
ptr
=
0
;
9
uint8_t
byte
;
10
11
for
(
byte
=
count
=
0
;
str
&& *
str
;
str
++) {
12
uint8_t
c
= *
str
;
13
14
if
(!
isxdigit
(
c
))
15
continue
;
16
if
(
isdigit
(
c
))
17
c
-=
'0'
;
18
else
19
c
=
tolower
(
c
) -
'a'
+
10
;
20
21
byte
<<=
4
;
22
byte
|=
c
;
23
24
if
(++
count
>
1
) {
25
if
(
ptr
>=
len
)
26
return
ptr
;
27
buf
[
ptr
++] =
byte
;
28
byte
=
count
=
0
;
29
}
30
}
31
32
return
ptr
;
33
}