From 07c310c6152f47783933358208aa9fb1d88bf951 Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Sun, 25 Jun 2023 09:46:20 +0200 Subject: [PATCH] Add listxattr implementation to make EAs work --- src/dwarfs_main.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/dwarfs_main.cpp b/src/dwarfs_main.cpp index 40d5cc9e..215c9346 100644 --- a/src/dwarfs_main.cpp +++ b/src/dwarfs_main.cpp @@ -816,6 +816,26 @@ int op_getxattr(char const* path, char const* name, char* value, size_t size) { return err; } + +template +int op_listxattr(char const* path, char* list, size_t size) { + dUSERDATA; + LOG_PROXY(LoggerPolicy, userdata->lgr); + + LOG_DEBUG << __func__ << "(" << path << ", " << size << ")"; + + const std::string all_xattr = std::string(pid_xattr) + '\0'; + + if (size > 0) { + if (size < all_xattr.size()) { + return -ERANGE; + } + + ::memcpy(list, all_xattr.data(), all_xattr.size()); + } + + return all_xattr.size(); +} #endif void usage(char const* progname) { @@ -916,6 +936,7 @@ void init_fuse_ops(struct fuse_operations& ops) { ops.readdir = &op_readdir; ops.statfs = &op_statfs; ops.getxattr = &op_getxattr; + ops.listxattr = &op_listxattr; } #endif