diff options
Diffstat (limited to 'libc/stdio/vdprintf.c')
-rw-r--r-- | libc/stdio/vdprintf.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/libc/stdio/vdprintf.c b/libc/stdio/vdprintf.c index 94ed6b8b8..6e28b14c0 100644 --- a/libc/stdio/vdprintf.c +++ b/libc/stdio/vdprintf.c @@ -11,6 +11,9 @@ #include "_stdio.h" #include <stdarg.h> +#ifdef __USE_OLD_VFPRINTF__ +libc_hidden_proto(vfprintf) +#endif libc_hidden_proto(fflush_unlocked) libc_hidden_proto(vdprintf) @@ -49,13 +52,17 @@ int vdprintf(int filedes, const char * __restrict format, va_list arg) /* _vfprintf_internal doesn't do any locking, locking init is here * only because of fflush_unlocked. TODO? */ -#ifdef __UCLIBC_HAS_THREADS__ +#if (defined(__STDIO_BUFFERS) || defined(__USE_OLD_VFPRINTF__)) && defined(__UCLIBC_HAS_THREADS__) f.__user_locking = 1; /* Set user locking. */ __stdio_init_mutex(&f.__lock); #endif f.__nextopen = NULL; +#ifdef __USE_OLD_VFPRINTF__ + rv = vfprintf(&f, format, arg); +#else rv = _vfprintf_internal(&f, format, arg); +#endif #ifdef __STDIO_BUFFERS /* If not buffering, then fflush is unnecessary. */ |