OSDN Git Service

FUSE read and write ops should return either buffer size on success or EOF otherwise.
authorresver <resver@60bc1c72-a15a-11de-b98f-4500b42dc123>
Tue, 25 Dec 2012 16:58:23 +0000 (16:58 +0000)
committerresver <resver@60bc1c72-a15a-11de-b98f-4500b42dc123>
Tue, 25 Dec 2012 16:58:23 +0000 (16:58 +0000)
git-svn-id: http://exfat.googlecode.com/svn/trunk@317 60bc1c72-a15a-11de-b98f-4500b42dc123

fuse/main.c

index 19f1816..21140a3 100644 (file)
@@ -154,14 +154,18 @@ static int fuse_exfat_read(const char* path, char* buffer, size_t size,
                off_t offset, struct fuse_file_info* fi)
 {
        exfat_debug("[fuse_exfat_read] %s (%zu bytes)", path, size);
-       return exfat_generic_pread(&ef, get_node(fi), buffer, size, offset);
+       if (exfat_generic_pread(&ef, get_node(fi), buffer, size, offset) != size)
+               return EOF;
+       return size;
 }
 
 static int fuse_exfat_write(const char* path, const char* buffer, size_t size,
                off_t offset, struct fuse_file_info* fi)
 {
        exfat_debug("[fuse_exfat_write] %s (%zu bytes)", path, size);
-       return exfat_generic_pwrite(&ef, get_node(fi), buffer, size, offset);
+       if (exfat_generic_pwrite(&ef, get_node(fi), buffer, size, offset) != size)
+               return EOF;
+       return size;
 }
 
 static int fuse_exfat_unlink(const char* path)