Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/stand/kboot/libkboot/util.c
34870 views
1
/*-
2
* Copyright 2022 Netflix, Inc
3
*
4
* SPDX-License-Identifier: BSD-2-Clause
5
*/
6
7
#include "stand.h"
8
#include "host_syscall.h"
9
#include "util.h"
10
11
bool
12
file2str(const char *fn, char *buffer, size_t buflen)
13
{
14
int fd;
15
ssize_t len;
16
17
fd = host_open(fn, HOST_O_RDONLY, 0);
18
if (fd == -1)
19
return false;
20
len = host_read(fd, buffer, buflen - 1);
21
if (len < 0) {
22
host_close(fd);
23
return false;
24
}
25
buffer[len] = '\0';
26
/*
27
* Trim trailing white space
28
*/
29
while (isspace(buffer[len - 1]))
30
buffer[--len] = '\0';
31
host_close(fd);
32
return true;
33
}
34
35
bool
36
file2u64(const char *fn, uint64_t *val)
37
{
38
unsigned long long v;
39
char buffer[80];
40
41
if (!file2str(fn, buffer, sizeof(buffer)))
42
return false;
43
v = strtoull(buffer, NULL, 0); /* XXX check return values? */
44
*val = v;
45
return true;
46
}
47
48
bool
49
file2u32(const char *fn, uint32_t *val)
50
{
51
unsigned long v;
52
char buffer[80];
53
54
if (!file2str(fn, buffer, sizeof(buffer)))
55
return false;
56
v = strtoul(buffer, NULL, 0); /* XXX check return values? */
57
*val = v;
58
return true;
59
}
60
61