diff options
author | Kevin Cernekee <cernekee@gmail.com> | 2013-09-06 20:00:38 -0700 |
---|---|---|
committer | Pádraig Brady <P@draigBrady.com> | 2013-09-19 20:05:17 +0100 |
commit | 2448628a43a7c71d48d51d4e343d4bdad298b0fc (patch) | |
tree | a6faf8bbec403c26587e71fed0e93a9c38e34068 /lib/stdio-impl.h | |
parent | bacee67de2b5252075d1e54f37e934dcde62b0b4 (diff) | |
download | gnulib-2448628a43a7c71d48d51d4e343d4bdad298b0fc.tar.gz |
fflush, freadahead, fseeko: Fix for Android
* lib/stdio-impl.h: Use local __sfileext definition.
Suggested by Bruno Haible in:
<http://lists.gnu.org/archive/html/bug-gnulib/2012-01/msg00306.html>
fflush, freadahead, and fseeko have trouble compiling on Android[1]
because they need access to internal elements of the FILE struct.
Bionic libc[2], like OpenBSD libc[3], puts the ungetc buffer "_ub"
at the beginning of the __sfileext struct. Therefore we can reuse the
existing OpenBSD implementation for Android.
Test results (Android 4.2.2, ARMv7, NDK r9):
root@android:/data/local/tmp # export srcdir=`pwd`
root@android:/data/local/tmp # ./test-fflush2.sh ; echo $?
0
root@android:/data/local/tmp # ./test-freadahead.sh ; echo $?
0
root@android:/data/local/tmp # ./test-fseeko.sh ; echo $?
0
root@android:/data/local/tmp # ./test-fseeko2.sh ; echo $?
Skipping test: ungetc cannot handle arbitrary bytes
77
root@android:/data/local/tmp # ./test-fseeko3.sh ; echo $?
0
root@android:/data/local/tmp # ./test-fseeko4.sh ; echo $?
0
[1] http://lists.gnu.org/archive/html/bug-gnulib/2012-01/msg00295.html
[2] https://android.googlesource.com/platform/bionic/+/android-4.3_r2.2/libc/stdio/fileext.h
[3] http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/stdio/fileext.h?rev=1.2;content-type=text%2Fplain
Diffstat (limited to 'lib/stdio-impl.h')
-rw-r--r-- | lib/stdio-impl.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/stdio-impl.h b/lib/stdio-impl.h index e00600a158..45291cf3ba 100644 --- a/lib/stdio-impl.h +++ b/lib/stdio-impl.h @@ -57,7 +57,7 @@ # define fp_ fp # endif -# if (defined __NetBSD__ && __NetBSD_Version__ >= 105270000) || defined __OpenBSD__ /* NetBSD >= 1.5ZA, OpenBSD */ +# if (defined __NetBSD__ && __NetBSD_Version__ >= 105270000) || defined __OpenBSD__ || defined __ANDROID__ /* NetBSD >= 1.5ZA, OpenBSD, Android */ /* See <http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/stdio/fileext.h?rev=HEAD&content-type=text/x-cvsweb-markup> and <http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/stdio/fileext.h?rev=HEAD&content-type=text/x-cvsweb-markup> */ struct __sfileext |