summaryrefslogtreecommitdiff
path: root/libc/stdio/vdprintf.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/stdio/vdprintf.c')
-rw-r--r--libc/stdio/vdprintf.c9
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. */