]> git.tdb.fi Git - libs/core.git/blobdiff - source/io/unix/seekable.cpp
Hack to make 64-bit seeks work on Android
[libs/core.git] / source / io / unix / seekable.cpp
index 2c17114df3d617a1037e3ee6167cff051249fc88..a402742a52338b7ba2d5f17cd639d6b37ca18c84 100644 (file)
@@ -1,4 +1,4 @@
-#define _LARGEFILE64_SOURCE
+#define _FILE_OFFSET_BITS 64
 #include <cerrno>
 #include <unistd.h>
 #include <msp/core/systemerror.h>
@@ -29,10 +29,17 @@ int sys_seek_type(SeekType st)
 namespace Msp {
 namespace IO {
 
+/* Android libc does not recognize _FILE_OFFSET_BITS so this hack is necessary
+to get 64-bit seeks. */
+#ifdef __ANDROID__
+#define off_t off64_t
+#define lseek lseek64
+#endif
+
 SeekOffset sys_seek(Handle &handle, SeekOffset offset, SeekType type)
 {
-       off64_t ret = lseek64(*handle, offset, sys_seek_type(type));
-       if(ret==(off64_t)-1)
+       off_t ret = lseek(*handle, offset, sys_seek_type(type));
+       if(ret==(off_t)-1)
        {
                if(errno==EINVAL)
                        throw bad_seek(offset, type);