OSDN Git Service

Handle 64-bit offsets correctly on Android
authorSteve Kondik <shade@chemlab.org>
Sun, 7 Jul 2013 07:33:03 +0000 (00:33 -0700)
committerMatt Mower <mowerm@gmail.com>
Sat, 16 Jan 2016 18:15:26 +0000 (12:15 -0600)
Note: Retains only relevant portion from original commit:
github.com/CyanogenMod/android_external_exfat/commit/454ec8915dff0002be280915f722107bdc4f7cd0

Change-Id: Ie2db54b16c5638e2b083b538e14e610b0dbba296

libexfat/io.c

index 3d7aaad..8b1c2c5 100644 (file)
@@ -297,6 +297,8 @@ off_t exfat_seek(struct exfat_dev* dev, off_t offset, int whence)
 #ifdef USE_UBLIO
        /* XXX SEEK_CUR will be handled incorrectly */
        return dev->pos = lseek(dev->fd, offset, whence);
+#elif defined(__ANDROID__)
+       return lseek64(dev->fd, offset, whence);
 #else
        return lseek(dev->fd, offset, whence);
 #endif
@@ -331,6 +333,8 @@ ssize_t exfat_pread(struct exfat_dev* dev, void* buffer, size_t size,
 {
 #ifdef USE_UBLIO
        return ublio_pread(dev->ufh, buffer, size, offset);
+#elif defined(__ANDROID__)
+       return pread64(dev->fd, buffer, size, offset);
 #else
        return pread(dev->fd, buffer, size, offset);
 #endif
@@ -341,6 +345,8 @@ ssize_t exfat_pwrite(struct exfat_dev* dev, const void* buffer, size_t size,
 {
 #ifdef USE_UBLIO
        return ublio_pwrite(dev->ufh, buffer, size, offset);
+#elif defined(__ANDROID__)
+       return pwrite64(dev->fd, buffer, size, offset);
 #else
        return pwrite(dev->fd, buffer, size, offset);
 #endif