aboutsummaryrefslogtreecommitdiffstats
path: root/fuse/main.c
diff options
context:
space:
mode:
authorresver <resver@60bc1c72-a15a-11de-b98f-4500b42dc123>2013-01-25 17:46:10 +0000
committerresver <resver@60bc1c72-a15a-11de-b98f-4500b42dc123>2013-01-25 17:46:10 +0000
commit19e6dd7e4106be79b824780c491e9445a9a45512 (patch)
tree8feed28e8b8f43411066882e41541673261eede9 /fuse/main.c
parent167ba2fab4a58ded60d4b40a43ccf57217104999 (diff)
downloadandroid_external_exfat-19e6dd7e4106be79b824780c491e9445a9a45512.tar.gz
android_external_exfat-19e6dd7e4106be79b824780c491e9445a9a45512.tar.bz2
android_external_exfat-19e6dd7e4106be79b824780c491e9445a9a45512.zip
Fixed "Operation not permitted" error on reading an empty file: FUSE read/write ops should return a number of bytes actually read/written or -errno on error.
git-svn-id: http://exfat.googlecode.com/svn/trunk@336 60bc1c72-a15a-11de-b98f-4500b42dc123
Diffstat (limited to 'fuse/main.c')
-rw-r--r--fuse/main.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/fuse/main.c b/fuse/main.c
index 1527347..b939164 100644
--- a/fuse/main.c
+++ b/fuse/main.c
@@ -155,19 +155,25 @@ static int fuse_exfat_release(const char* path, struct fuse_file_info* fi)
static int fuse_exfat_read(const char* path, char* buffer, size_t size,
off_t offset, struct fuse_file_info* fi)
{
+ ssize_t ret;
+
exfat_debug("[%s] %s (%zu bytes)", __func__, path, size);
- if (exfat_generic_pread(&ef, get_node(fi), buffer, size, offset) != size)
- return EOF;
- return size;
+ ret = exfat_generic_pread(&ef, get_node(fi), buffer, size, offset);
+ if (ret < 0)
+ return -EIO;
+ return ret;
}
static int fuse_exfat_write(const char* path, const char* buffer, size_t size,
off_t offset, struct fuse_file_info* fi)
{
+ ssize_t ret;
+
exfat_debug("[%s] %s (%zu bytes)", __func__, path, size);
- if (exfat_generic_pwrite(&ef, get_node(fi), buffer, size, offset) != size)
- return EOF;
- return size;
+ ret = exfat_generic_pwrite(&ef, get_node(fi), buffer, size, offset);
+ if (ret < 0)
+ return -EIO;
+ return ret;
}
static int fuse_exfat_unlink(const char* path)