Use the _unlocked stdio macros only when they're all available
Signed-off-by: Dan Fandrich <dan@coneharvesters.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/include/libbb.h b/include/libbb.h
index efb925e..1502272 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -161,23 +161,27 @@
/* Busybox does not use threads, we can speed up stdio. */
-#undef getc
-#define getc(stream) getc_unlocked(stream)
-#undef getchar
-#define getchar() getchar_unlocked()
-#undef putc
-#define putc(c, stream) putc_unlocked(c, stream)
-#undef putchar
-#define putchar(c) putchar_unlocked(c)
-#undef fgetc
-#define fgetc(stream) getc_unlocked(stream)
-#undef fputc
-#define fputc(c, stream) putc_unlocked(c, stream)
+#ifdef HAVE_UNLOCKED_STDIO
+# undef getc
+# define getc(stream) getc_unlocked(stream)
+# undef getchar
+# define getchar() getchar_unlocked()
+# undef putc
+# define putc(c, stream) putc_unlocked(c, stream)
+# undef putchar
+# define putchar(c) putchar_unlocked(c)
+# undef fgetc
+# define fgetc(stream) getc_unlocked(stream)
+# undef fputc
+# define fputc(c, stream) putc_unlocked(c, stream)
+#endif
/* Above functions are required by POSIX.1-2008, below ones are extensions */
-#undef fgets
-#define fgets(s, n, stream) fgets_unlocked(s, n, stream)
-#undef fputs
-#define fputs(s, stream) fputs_unlocked(s, stream)
+#ifdef HAVE_UNLOCKED_LINE_OPS
+# undef fgets
+# define fgets(s, n, stream) fgets_unlocked(s, n, stream)
+# undef fputs
+# define fputs(s, stream) fputs_unlocked(s, stream)
+#endif
/* Make all declarations hidden (-fvisibility flag only affects definitions) */