tools/nolibc: add dprintf() and vdprintf()

dprintf() and vdprintf() are printf() variants printing directly into a
filedescriptor. As FILE in nolibc is based directly on filedescriptors,
the implementation is trivial.

Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
Acked-by: Willy Tarreau <w@1wt.eu>
This commit is contained in:
Thomas Weißschuh
2025-04-11 11:00:47 +02:00
committed by Thomas Weißschuh
parent 4175b55845
commit 5197b7b87c

View File

@@ -351,6 +351,30 @@ int printf(const char *fmt, ...)
return ret;
}
static __attribute__((unused, format(printf, 2, 0)))
int vdprintf(int fd, const char *fmt, va_list args)
{
FILE *stream;
stream = fdopen(fd, NULL);
if (!stream)
return -1;
/* Technically 'stream' is leaked, but as it's only a wrapper around 'fd' that is fine */
return vfprintf(stream, fmt, args);
}
static __attribute__((unused, format(printf, 2, 3)))
int dprintf(int fd, const char *fmt, ...)
{
va_list args;
int ret;
va_start(args, fmt);
ret = vdprintf(fd, fmt, args);
va_end(args);
return ret;
}
static __attribute__((unused))
int vsscanf(const char *str, const char *format, va_list args)
{