blob: 8da919990ebbcb126a02c04df9edf5a58e095d61 [file] [log] [blame]
From 3754d92809b7067a98e38a19ea4e10b36ad52bc7 Mon Sep 17 00:00:00 2001
From: Carl Norum <carl@norum.ca>
Date: Sun, 27 Apr 2014 22:21:24 -0700
Subject: [PATCH 07/12] Fix libc++ compiler error when calling std::feof()
The following functions are "macro" in bionic's stdio.h and also
defined in cstdio's std:: getchar, putchar, clearerr, feof, ferror
Undef them and re-define as inlined functions otherwise use of
std::feof, for example, break compilation.
See b.android.com/66668 and b.android.com/36496
---
include/cstdio | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/include/cstdio b/include/cstdio
index ce3af4d..7787fad 100644
--- a/include/cstdio
+++ b/include/cstdio
@@ -114,12 +114,42 @@ inline _LIBCPP_INLINE_VISIBILITY int __libcpp_getc(FILE* __stream) {return getc(
inline _LIBCPP_INLINE_VISIBILITY int getc(FILE* __stream) {return __libcpp_getc(__stream);}
#endif // getc
+#ifdef getchar
+inline _LIBCPP_INLINE_VISIBILITY int __libcpp_getchar(void) {return getchar();}
+#undef getchar
+inline _LIBCPP_INLINE_VISIBILITY int getchar(void) {return __libcpp_getchar();}
+#endif // getchar
+
#ifdef putc
inline _LIBCPP_INLINE_VISIBILITY int __libcpp_putc(int __c, FILE* __stream) {return putc(__c, __stream);}
#undef putc
inline _LIBCPP_INLINE_VISIBILITY int putc(int __c, FILE* __stream) {return __libcpp_putc(__c, __stream);}
#endif // putc
+#ifdef putchar
+inline _LIBCPP_INLINE_VISIBILITY int __libcpp_putchar(int __c) {return putchar(__c);}
+#undef putchar
+inline _LIBCPP_INLINE_VISIBILITY int putchar(int __c) {return __libcpp_putchar(__c);}
+#endif // putchar
+
+#ifdef clearerr
+inline _LIBCPP_INLINE_VISIBILITY void __libcpp_clearerr(FILE* __stream) {return clearerr(__stream);}
+#undef clearerr
+inline _LIBCPP_INLINE_VISIBILITY void clearerr(FILE* __stream) {return __libcpp_clearerr(__stream);}
+#endif // clearerr
+
+#ifdef feof
+inline _LIBCPP_INLINE_VISIBILITY int __libcpp_feof(FILE* __stream) {return feof(__stream);}
+#undef feof
+inline _LIBCPP_INLINE_VISIBILITY int feof(FILE* __stream) {return __libcpp_feof(__stream);}
+#endif // feof
+
+#ifdef ferror
+inline _LIBCPP_INLINE_VISIBILITY int __libcpp_ferror(FILE* __stream) {return ferror(__stream);}
+#undef ferror
+inline _LIBCPP_INLINE_VISIBILITY int ferror(FILE* __stream) {return __libcpp_ferror(__stream);}
+#endif // ferror
+
_LIBCPP_BEGIN_NAMESPACE_STD
using ::FILE;
--
1.9.1.423.g4596e3a