Change getattr and statx to bespoke policies

* Provides: slight improvement in performance as it no longer will
need to find and then act on the files.
* It doesn't make sense to support all original policy types. Most
people used 'newest' or 'ff' and 'combine' is a better default which
has same runtime as 'newest' but with better output.
This commit is contained in:
Antonio SJ Musumeci 2025-11-13 20:45:52 -06:00
parent 965e26989c
commit b3b8e793f9
145 changed files with 3803 additions and 1192 deletions

53
src/func_listxattr_ff.cpp Normal file
View file

@ -0,0 +1,53 @@
#include "func_listxattr_ff.hpp"
#include "error.hpp"
#include "fs_llistxattr.hpp"
std::string_view
Func2::ListxattrFF::name() const
{
return "ff";
}
static
ssize_t
_listxattr_ff(const Branches &branches_,
const fs::path &fusepath_,
char *list_,
const size_t size_)
{
Err err;
ssize_t rv;
fs::path fullpath;
for(const auto &branch : branches_)
{
fullpath = branch.path / fusepath_;
rv = fs::llistxattr(fullpath,list_,size_);
switch(rv)
{
case -ERANGE:
case -ENOTSUP:
case -E2BIG:
return rv;
default:
if(rv >= 0)
return rv;
err = rv;
break;
}
}
return err;
}
ssize_t
Func2::ListxattrFF::operator()(const Branches &branches_,
const fs::path &fusepath_,
char *list_,
const size_t size_)
{
return ::_listxattr_ff(branches_,fusepath_,list_,size_);
}