#endif
const char* default_options = "ro_fallback,allow_other,blkdev,big_writes,"
- "defer_permissions";
+ "defer_permissions"
+#ifdef __APPLE__
+ ",quiet"
+#endif
+ ;
struct exfat ef;
return 0;
}
-#ifdef __APPLE__
static int fuse_exfat_chmod(const char* path, mode_t mode)
{
exfat_debug("[%s] %s 0%ho", __func__, path, mode);
- /* make OS X utilities happy */
- return 0;
+ return ef.quiet ? 0 : -ENOSYS;
+}
+
+static int fuse_exfat_chown(const char* path, uid_t uid, gid_t gid)
+{
+ exfat_debug("[%s] %s %u:%u", __func__, path, uid, gid);
+ return ef.quiet ? 0 : -ENOSYS;
}
-#endif
static int fuse_exfat_statfs(const char* path, struct statvfs* sfs)
{
.mkdir = fuse_exfat_mkdir,
.rename = fuse_exfat_rename,
.utimens = fuse_exfat_utimens,
-#ifdef __APPLE__
.chmod = fuse_exfat_chmod,
-#endif
+ .chown = fuse_exfat_chown,
.statfs = fuse_exfat_statfs,
.init = fuse_exfat_init,
.destroy = fuse_exfat_destroy,
.TP
.BI noatime
Do not update access time when file is read.
+.TP
+.BI quiet
+Owner, group and mode attributes are not supported by the current
+implementation, so chmod() and chown() requests fail with ENOSYS. This option
+makes them always succeed, i.e. all requests to change owner, group or mode
+will be silently ignored. Default on OS\ X.
.SH EXIT CODES
Zero is returned on successful mount. Any other code means an error.
ef->gid = get_int_option(options, "gid", 10, getegid());
ef->noatime = match_option(options, "noatime");
+ ef->quiet = match_option(options, "quiet");
}
static int verify_vbr_checksum(struct exfat_dev* dev, void* sector,