X-Git-Url: http://git.sven.stormbind.net/?a=blobdiff_plain;ds=sidebyside;f=fuse%2Fmain.c;h=643df3f7e7557bf51282a9fc566a6c3b281de901;hb=a1973638129fb3971302adf0f6727bbc5365bcb5;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)
{