]> ruderich.org/simon Gitweb - coloredstderr/coloredstderr.git/commitdiff
{fwrite,fputs,fputc}_unlocked() are not in POSIX.
authorSimon Ruderich <simon@ruderich.org>
Thu, 20 Jun 2013 18:56:51 +0000 (20:56 +0200)
committerSimon Ruderich <simon@ruderich.org>
Thu, 20 Jun 2013 18:56:51 +0000 (20:56 +0200)
Define fwrite_unlocked(), fputs_unlocked() and fputc_unlocked() only if
they are available on the system.

configure.ac
src/coloredstderr.c

index a96edb40a419d394c41d8b28c12caede103c2422..b4ea8f21a8b54ad18d97b7dc0659b5ad705407db 100644 (file)
@@ -56,6 +56,8 @@ AC_FUNC_FORK
 AC_CHECK_FUNCS([memmove setenv],
                [],[AC_MSG_ERROR([function is required])])
 AC_CHECK_FUNCS([execvpe])
+dnl These are not in POSIX.
+AC_CHECK_FUNCS([fwrite_unlocked fputs_unlocked fputc_unlocked])
 
 dnl Thanks to gperftools' configure.ac (https://code.google.com/p/gperftools).
 AC_MSG_CHECKING([for __builtin_expect])
index 2640410aa040a4f72b5c6d24a6aa7facc780d75d..7db0a37abe33bb4291f0a0f1e579163c8bb1034d 100644 (file)
@@ -53,7 +53,9 @@
  * failures when used in our hook macros below. */
 
 /* In glibc, real fwrite_unlocked() is called in macro. */
-#undef fwrite_unlocked
+#ifdef HAVE_FWRITE_UNLOCKED
+# undef fwrite_unlocked
+#endif
 /* In Clang when compiling with hardening flags (fortify) on Debian Wheezy. */
 #undef printf
 #undef fprintf
@@ -251,12 +253,18 @@ HOOK_FILE4(int, __vfprintf_chk, stream,
            FILE *, stream, int, flag, char const *, format, va_list, ap)
 
 /* unlocked_stdio(3), only functions from above are hooked */
+#ifdef HAVE_FWRITE_UNLOCKED
 HOOK_FILE4(size_t, fwrite_unlocked, stream,
            void const *, ptr, size_t, size, size_t, nmemb, FILE *, stream)
+#endif
+#ifdef HAVE_FPUTS_UNLOCKED
 HOOK_FILE2(int, fputs_unlocked, stream,
            char const *, s, FILE *, stream)
+#endif
+#ifdef HAVE_FPUTC_UNLOCKED
 HOOK_FILE2(int, fputc_unlocked, stream,
            int, c, FILE *, stream)
+#endif
 HOOK_FILE2(int, putc_unlocked, stream,
            int, c, FILE *, stream)
 HOOK_FILE1(int, putchar_unlocked, stdout,