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
11bool
12file2str(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
35bool
36file2u64(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