freebsd-dev/stand/kboot/util.c

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

47 lines
790 B
C
Raw Normal View History

/*-
* Copyright 2022 Netflix, Inc
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include "stand.h"
#include "host_syscall.h"
#include "kboot.h"
bool
file2str(const char *fn, char *buffer, size_t buflen)
{
int fd;
ssize_t len;
fd = host_open(fn, HOST_O_RDONLY, 0);
if (fd == -1)
return false;
len = host_read(fd, buffer, buflen - 1);
if (len < 0) {
host_close(fd);
return false;
}
buffer[len] = '\0';
/*
* Trim trailing white space
*/
while (isspace(buffer[len - 1]))
buffer[--len] = '\0';
host_close(fd);
return true;
}
bool
file2u64(const char *fn, uint64_t *val)
{
unsigned long long v;
char buffer[80];
if (!file2str(fn, buffer, sizeof(buffer)))
return false;
v = strtoull(buffer, NULL, 0); /* XXX check return values? */
*val = v;
return true;
}