From: resver@gmail.com Date: Tue, 6 Aug 2013 18:53:10 +0000 (+0000) Subject: Give the caller a chance to handle I/O errors reported by pread() and pwrite(). X-Git-Url: http://git.osdn.net/view?p=android-x86%2Fexternal-exfat.git;a=commitdiff_plain;h=2e504bcdbcfd7893a50b72678af44563d45e6646 Give the caller a chance to handle I/O errors reported by pread() and pwrite(). git-svn-id: http://exfat.googlecode.com/svn/trunk@372 60bc1c72-a15a-11de-b98f-4500b42dc123 --- diff --git a/libexfat/exfat.h b/libexfat/exfat.h index 4b0ebc9..d0dbeae 100644 --- a/libexfat/exfat.h +++ b/libexfat/exfat.h @@ -143,9 +143,9 @@ off_t exfat_get_size(const struct exfat_dev* dev); off_t exfat_seek(struct exfat_dev* dev, off_t offset, int whence); ssize_t exfat_read(struct exfat_dev* dev, void* buffer, size_t size); ssize_t exfat_write(struct exfat_dev* dev, const void* buffer, size_t size); -void exfat_pread(struct exfat_dev* dev, void* buffer, size_t size, +ssize_t exfat_pread(struct exfat_dev* dev, void* buffer, size_t size, off_t offset); -void exfat_pwrite(struct exfat_dev* dev, const void* buffer, size_t size, +ssize_t exfat_pwrite(struct exfat_dev* dev, const void* buffer, size_t size, off_t offset); ssize_t exfat_generic_pread(const struct exfat* ef, struct exfat_node* node, void* buffer, size_t size, off_t offset); diff --git a/libexfat/io.c b/libexfat/io.c index 052aa8d..71e1dbc 100644 --- a/libexfat/io.c +++ b/libexfat/io.c @@ -282,28 +282,24 @@ ssize_t exfat_write(struct exfat_dev* dev, const void* buffer, size_t size) #endif } -void exfat_pread(struct exfat_dev* dev, void* buffer, size_t size, +ssize_t exfat_pread(struct exfat_dev* dev, void* buffer, size_t size, off_t offset) { #ifdef USE_UBLIO - if (ublio_pread(dev->ufh, buffer, size, offset) != size) + return ublio_pread(dev->ufh, buffer, size, offset); #else - if (pread(dev->fd, buffer, size, offset) != size) + return pread(dev->fd, buffer, size, offset); #endif - exfat_bug("failed to read %zu bytes from file at %"PRIu64, size, - (uint64_t) offset); } -void exfat_pwrite(struct exfat_dev* dev, const void* buffer, size_t size, +ssize_t exfat_pwrite(struct exfat_dev* dev, const void* buffer, size_t size, off_t offset) { #ifdef USE_UBLIO - if (ublio_pwrite(dev->ufh, buffer, size, offset) != size) + return ublio_pwrite(dev->ufh, buffer, size, offset); #else - if (pwrite(dev->fd, buffer, size, offset) != size) + return pwrite(dev->fd, buffer, size, offset); #endif - exfat_bug("failed to write %zu bytes to file at %"PRIu64, size, - (uint64_t) offset); } ssize_t exfat_generic_pread(const struct exfat* ef, struct exfat_node* node,