-#define _LARGEFILE64_SOURCE
+#define _FILE_OFFSET_BITS 64
#include <cerrno>
#include <unistd.h>
#include <msp/core/systemerror.h>
else if(st==S_END)
return SEEK_END;
- throw invalid_argument("sys_seek_type");
+ throw invalid_argument("IO::sys_seek");
}
}
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);