*sprintf now returns write count without buffer
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user