PatchworkOS
Loading...
Searching...
No Matches
vwritef.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 vwritef(fd_t fd, const char* _RESTRICT format, va_list args)
7{
8 char buffer[0x1000];
9 int count = vsnprintf(buffer, sizeof(buffer), format, args);
10 if (count < 0 || (uint64_t)count >= sizeof(buffer))
11 {
12 errno = EINVAL;
13 return ERR;
14 }
15 return write(fd, buffer, count);
16}
#define EINVAL
Invalid argument.
Definition errno.h:142
#define errno
Error number variable.
Definition errno.h:27
uint64_t vwritef(fd_t fd, const char *_RESTRICT format, va_list args)
Wrapper for writing a formatted string to a file with a va_list.
Definition vwritef.c:6
uint64_t write(fd_t fd, const void *buffer, uint64_t count)
System call for writing to files.
Definition write.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
static atomic_long count
Definition main.c:9
__builtin_va_list va_list
Definition stdarg.h:9
__UINT64_TYPE__ uint64_t
Definition stdint.h:17
_PUBLIC int vsnprintf(char *_RESTRICT s, size_t n, const char *_RESTRICT format, va_list arg)
Definition vsnprintf.c:5