]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - stand/kboot/util.c
zfs: merge openzfs/zfs@feff9dfed
[FreeBSD/FreeBSD.git] / stand / kboot / util.c
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 }