diff options
author | Miklos Szeredi <mszeredi@suse.cz> | 2011-12-05 15:21:28 +0100 |
---|---|---|
committer | Miklos Szeredi <mszeredi@suse.cz> | 2011-12-05 15:21:28 +0100 |
commit | e3f95263a703d45f091dcf9655806978d2577797 (patch) | |
tree | e08304ea520ec59e9a2b86b2d04b9b09ba152da8 /lib/fuse_lowlevel.c | |
parent | 6b12905b10b15c046b825c48eb8b9e677952d607 (diff) | |
download | android_external_fuse-e3f95263a703d45f091dcf9655806978d2577797.tar.gz android_external_fuse-e3f95263a703d45f091dcf9655806978d2577797.tar.bz2 android_external_fuse-e3f95263a703d45f091dcf9655806978d2577797.zip |
Add support for ioctl on directories
Reported by Antonio SJ Musumeci
Diffstat (limited to 'lib/fuse_lowlevel.c')
-rw-r--r-- | lib/fuse_lowlevel.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/fuse_lowlevel.c b/lib/fuse_lowlevel.c index 885522f..8012d49 100644 --- a/lib/fuse_lowlevel.c +++ b/lib/fuse_lowlevel.c @@ -1647,6 +1647,12 @@ static void do_ioctl(fuse_req_t req, fuse_ino_t nodeid, const void *inarg) void *in_buf = arg->in_size ? PARAM(arg) : NULL; struct fuse_file_info fi; + if (flags & FUSE_IOCTL_DIR && + !(req->f->conn.want & FUSE_CAP_IOCTL_DIR)) { + fuse_reply_err(req, ENOTTY); + return; + } + memset(&fi, 0, sizeof(fi)); fi.fh = arg->fh; fi.fh_old = fi.fh; @@ -1774,6 +1780,8 @@ static void do_init(fuse_req_t req, fuse_ino_t nodeid, const void *inarg) f->conn.want |= FUSE_CAP_SPLICE_READ; #endif } + if (req->f->conn.proto_minor >= 18) + f->conn.capable |= FUSE_CAP_IOCTL_DIR; if (f->atomic_o_trunc) f->conn.want |= FUSE_CAP_ATOMIC_O_TRUNC; |