*sprintf now returns write count without buffer

This commit is contained in:
Max Wash
2020-07-24 10:50:23 +01:00
parent 17ce639206
commit 04ee711f31

View File

@@ -11,8 +11,10 @@ static void _out_buf(struct __printf_backend *bk, char ch)
{ {
struct __vsnprintf_arg *arg = bk->arg; struct __vsnprintf_arg *arg = bk->arg;
if (arg->idx < arg->max) { if (arg->idx < arg->max) {
arg->buf[arg->idx++] = ch; arg->buf[arg->idx] = ch;
} }
arg->idx++;
} }
int vsnprintf(char *buf, size_t sz, const char *restrict format, va_list arg) int vsnprintf(char *buf, size_t sz, const char *restrict format, va_list arg)
@@ -25,5 +27,10 @@ int vsnprintf(char *buf, size_t sz, const char *restrict format, va_list arg)
bk.out = _out_buf; bk.out = _out_buf;
bk.arg = &bk_arg; bk.arg = &bk_arg;
return __xprintf(&bk, format, arg); __xprintf(&bk, format, arg);
if (!bk_arg.idx) {
return 0;
}
return bk_arg.idx - 1;
} }