summaryrefslogtreecommitdiff
path: root/example/hello_ll.c
diff options
context:
space:
mode:
Diffstat (limited to 'example/hello_ll.c')
-rw-r--r--example/hello_ll.c59
1 files changed, 54 insertions, 5 deletions
diff --git a/example/hello_ll.c b/example/hello_ll.c
index 1db5eff..96afd0f 100644
--- a/example/hello_ll.c
+++ b/example/hello_ll.c
@@ -153,12 +153,61 @@ static void hello_ll_read(fuse_req_t req, fuse_ino_t ino, size_t size,
reply_buf_limited(req, hello_str, strlen(hello_str), off, size);
}
+static void hello_ll_getxattr(fuse_req_t req, fuse_ino_t ino, const char *name,
+ size_t size)
+{
+ (void)size;
+ assert(ino == 2);
+ if (strcmp(name, "hello_ll_getxattr_name") == 0)
+ {
+ char *buf = "hello_ll_getxattr_value";
+ fuse_reply_buf(req, buf, strlen(buf));
+ }
+ else
+ {
+ fuse_reply_err(req, ENOTSUP);
+ }
+}
+
+static void hello_ll_setxattr(fuse_req_t req, fuse_ino_t ino, const char *name,
+ const char *value, size_t size, int flags)
+{
+ (void)flags;
+ (void)size;
+ assert(ino == 2);
+ if (strcmp(name, "hello_ll_setxattr_name") == 0 &&
+ strcmp(value, "hello_ll_setxattr_value") == 0)
+ {
+ fuse_reply_err(req, 0);
+ }
+ else
+ {
+ fuse_reply_err(req, ENOTSUP);
+ }
+}
+
+static void hello_ll_removexattr(fuse_req_t req, fuse_ino_t ino, const char *name)
+{
+ assert(ino == 2);
+ if (strcmp(name, "hello_ll_removexattr_name") == 0)
+ {
+ fuse_reply_err(req, 0);
+ }
+ else
+ {
+ fuse_reply_err(req, ENOTSUP);
+ }
+}
+
static const struct fuse_lowlevel_ops hello_ll_oper = {
- .lookup = hello_ll_lookup,
- .getattr = hello_ll_getattr,
- .readdir = hello_ll_readdir,
- .open = hello_ll_open,
- .read = hello_ll_read,
+ .lookup = hello_ll_lookup,
+ .getattr = hello_ll_getattr,
+ .readdir = hello_ll_readdir,
+ .open = hello_ll_open,
+ .read = hello_ll_read,
+ .setxattr = hello_ll_setxattr,
+ .getxattr = hello_ll_getxattr,
+ .removexattr = hello_ll_removexattr,
};
int main(int argc, char *argv[])