From 7b28eaeac5f2d8d591b1b0c94e10b64644017869 Mon Sep 17 00:00:00 2001 From: Miklos Szeredi Date: Mon, 1 Aug 2005 12:48:30 +0000 Subject: fix --- lib/fuse.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'lib/fuse.c') diff --git a/lib/fuse.c b/lib/fuse.c index 91a1e52..a849648 100644 --- a/lib/fuse.c +++ b/lib/fuse.c @@ -724,6 +724,25 @@ static void fuse_setattr(fuse_req_t req, fuse_ino_t ino, struct stat *attr, reply_err(req, err); } +static void fuse_access(fuse_req_t req, fuse_ino_t ino, int mask) +{ + struct fuse *f = req_fuse_prepare(req); + char *path; + int err; + + err = -ENOENT; + pthread_rwlock_rdlock(&f->tree_lock); + path = get_path(f, ino); + if (path != NULL) { + err = -ENOSYS; + if (f->op.access) + err = f->op.access(path, mask); + free(path); + } + pthread_rwlock_unlock(&f->tree_lock); + reply_err(req, err); +} + static void fuse_readlink(fuse_req_t req, fuse_ino_t ino) { struct fuse *f = req_fuse_prepare(req); @@ -1589,6 +1608,7 @@ static struct fuse_ll_operations fuse_path_ops = { .forget = fuse_forget, .getattr = fuse_getattr, .setattr = fuse_setattr, + .access = fuse_access, .readlink = fuse_readlink, .mknod = fuse_mknod, .mkdir = fuse_mkdir, -- cgit v1.2.3