PatchworkOS
Loading...
Searching...
No Matches
vreadf.c
Go to the documentation of this file.
1#include <errno.h>
2#include <stdarg.h>
3#include <stdio.h>
4#include <sys/io.h>
5
6uint64_t vreadf(fd_t fd, const char* _RESTRICT format, va_list args)
7{
8 char buffer[0x1000];
9 uint64_t bytesRead = read(fd, buffer, sizeof(buffer) - 1);
10 if (bytesRead == ERR)
11 {
12 return ERR;
13 }
14 buffer[bytesRead] = '\0';
15
16 int result = vsscanf(buffer, format, args);
17 if (result < 0)
18 {
19 errno = EINVAL;
20 return ERR;
21 }
22 return result;
23}
#define EINVAL
Invalid argument.
Definition errno.h:142
#define errno
Error number variable.
Definition errno.h:27
uint64_t vreadf(fd_t fd, const char *_RESTRICT format, va_list args)
Wrapper for reading a formatted string from a file with a va_list.
Definition vreadf.c:6
uint64_t read(fd_t fd, void *buffer, uint64_t count)
System call for reading from files.
Definition read.c:9
#define ERR
Integer error value.
Definition ERR.h:17
__UINT64_TYPE__ fd_t
A file descriptor.
Definition fd_t.h:12
#define _RESTRICT
Definition config.h:17
EFI_PHYSICAL_ADDRESS buffer
Definition mem.c:15
__builtin_va_list va_list
Definition stdarg.h:9
__UINT64_TYPE__ uint64_t
Definition stdint.h:17
_PUBLIC int vsscanf(const char *_RESTRICT s, const char *_RESTRICT format, va_list arg)
Definition vsscanf.c:7