xref: /freebsd/stand/kboot/kboot/util.c (revision 1edb7116)
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 "kboot.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