PatchworkOS  19e446b
A non-POSIX operating system.
Loading...
Searching...
No Matches
vsnprintf.c
Go to the documentation of this file.
1#include <stdio.h>
2
3#define _PRINT_WRITE(ctx, buffer, count) \
4 ({ \
5 char* str = (char*)(ctx)->data; \
6 size_t i; \
7 for (i = 0; i < (size_t)(count); i++) \
8 { \
9 str[i] = (buffer)[i]; \
10 } \
11 str += i; \
12 (ctx)->data = str; \
13 (int)i; \
14 })
15
16#define _PRINT_FILL(ctx, c, count) \
17 ({ \
18 char* str = (char*)(ctx)->data; \
19 size_t i; \
20 for (i = 0; i < (size_t)(count); i++) \
21 { \
22 str[i] = (c); \
23 } \
24 str += i; \
25 (ctx)->data = str; \
26 (int)i; \
27 })
28
29#include "common/print.h"
30
31int vsnprintf(char* _RESTRICT s, size_t n, const char* _RESTRICT format, va_list arg)
32{
33 int written = _print(format, n, arg, s);
34 if (n > 0 && written >= 0)
35 {
36 s[written] = '\0';
37 }
38 return written;
39}
#define _RESTRICT
Definition config.h:17
static char format[MAX_NAME]
Definition screen.c:17
static int _print(const char *_RESTRICT format, size_t n, va_list arg, void *data)
Definition print.h:617
__builtin_va_list va_list
Definition stdarg.h:11
int vsnprintf(char *_RESTRICT s, size_t n, const char *_RESTRICT format, va_list arg)
Definition vsnprintf.c:31