coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
hexstrtobin.c
Go to the documentation of this file.
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
}
ctype.h
tolower
static int tolower(int c)
Definition:
ctype.h:49
isdigit
static int isdigit(int c)
Definition:
ctype.h:20
isxdigit
static int isxdigit(int c)
Definition:
ctype.h:25
hexstrtobin
size_t hexstrtobin(const char *str, uint8_t *buf, size_t len)
Definition:
hexstrtobin.c:6
lib.h
buf
static uint8_t * buf
Definition:
uart.c:7
uint8_t
unsigned char uint8_t
Definition:
stdint.h:8
c
#define c(value, pmcreg, dst_bits)
count
#define count
src
lib
hexstrtobin.c
Generated by
1.9.1