From b0b13d1e5499e20382ad74e202160d49e1792ee8 Mon Sep 17 00:00:00 2001 From: Miklos Szeredi Date: Wed, 26 Oct 2005 12:53:25 +0000 Subject: add access operation --- lib/fuse.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'lib/fuse.c') diff --git a/lib/fuse.c b/lib/fuse.c index b0cf553..6b3b6ae 100644 --- a/lib/fuse.c +++ b/lib/fuse.c @@ -736,6 +736,29 @@ 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) { + if (f->flags & FUSE_DEBUG) { + printf("ACCESS %s 0%o\n", path, mask); + fflush(stdout); + } + 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); @@ -1622,6 +1645,7 @@ static struct fuse_lowlevel_ops 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