X-Git-Url: http://git.sven.stormbind.net/?a=blobdiff_plain;f=fuse%2Fmain.c;h=643df3f7e7557bf51282a9fc566a6c3b281de901;hb=2aeb28c336af6ec43018e0110f513cdfbeecfd0b;hp=fe5666beabab1fe0657ef670aa7ed357a8829fc3;hpb=65e85a0acdb22bd25386f4fe9cde50c66339a496;p=sven%2Ffuse-exfat.git diff --git a/fuse/main.c b/fuse/main.c index fe5666b..643df3f 100644 --- a/fuse/main.c +++ b/fuse/main.c @@ -2,7 +2,7 @@ main.c (01.09.09) FUSE-based exFAT implementation. Requires FUSE 2.6 or later. - Copyright (C) 2009, 2010 Andrew Nayenko + Copyright (C) 2010-2012 Andrew Nayenko This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -18,6 +18,7 @@ along with this program. If not, see . */ +#define FUSE_USE_VERSION 26 #include #include #include @@ -37,7 +38,7 @@ #error FUSE 2.6 or later is required #endif -const char* default_options = "allow_other,blkdev"; +const char* default_options = "ro_fallback,allow_other,blkdev"; struct exfat ef; @@ -153,14 +154,14 @@ 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_read(&ef, get_node(fi), buffer, size, offset); + return exfat_generic_pread(&ef, get_node(fi), buffer, size, offset); } 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_write(&ef, get_node(fi), buffer, size, offset); + return exfat_generic_pwrite(&ef, get_node(fi), buffer, size, offset); } static int fuse_exfat_unlink(const char* path) @@ -401,7 +402,7 @@ int main(int argc, char* argv[]) else if (strcmp(*pp, "-v") == 0) { free(mount_options); - puts("Copyright (C) 2009 Andrew Nayenko"); + puts("Copyright (C) 2010-2012 Andrew Nayenko"); return 0; } else if (spec == NULL) @@ -426,6 +427,16 @@ int main(int argc, char* argv[]) return 1; } + if (ef.ro_fallback) + { + mount_options = add_option(mount_options, "ro", NULL); + if (mount_options == NULL) + { + exfat_unmount(&ef); + return 1; + } + } + mount_options = add_fuse_options(mount_options, spec); if (mount_options == NULL) {