]> ruderich.org/simon Gitweb - coloredstderr/coloredstderr.git/blobdiff - src/coloredstderr.c
Fix hook for putc_unlocked() with glibc.
[coloredstderr/coloredstderr.git] / src / coloredstderr.c
index d4ffdb6aa5bcb84cc3d9450e5ea8052b534a06cd..db6cb27e9f14771a70581222ece7704b816c8d7e 100644 (file)
 #ifdef HAVE_ERROR_H
 # include <error.h>
 #endif
+#ifdef HAVE_STRUCT__IO_FILE__FILENO
+# include <libio.h>
+#endif
 
 /* Conflicting declaration in glibc. */
 #undef fwrite_unlocked
+/* These functions may be macros when compiling with hardening flags (fortify)
+ * which cause build failures when used in our hook macros below. Observed
+ * with Clang on Debian Wheezy. */
+#undef printf
+#undef fprintf
 
 
 /* Used by various functions, including debug(). */
@@ -236,6 +244,10 @@ HOOK_FILE2(int, putc_unlocked, stream,
            int, c, FILE *, stream)
 HOOK_FILE1(int, putchar_unlocked, stdout,
            int, c)
+/* glibc defines (_IO_)putc_unlocked() to __overflow() in some cases. */
+#ifdef HAVE_STRUCT__IO_FILE__FILENO
+HOOK_FD2(int, __overflow, f->_fileno, _IO_FILE *, f, int, ch)
+#endif
 
 /* perror(3) */
 HOOK_VOID1(void, perror, STDERR_FILENO,