#pragma once #include "to_neg_errno.hpp" #include "fuse_kernel.h" #include #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif #include #include #ifdef STATX_TYPE #define MERGERFS_STATX_SUPPORTED #endif namespace fs { static inline int statx(const int dirfd_, const char *pathname_, const int flags_, const unsigned int mask_, struct fuse_statx *st_) { #ifdef MERGERFS_STATX_SUPPORTED int rv; rv = ::statx(dirfd_, pathname_, flags_, mask_, (struct statx*)st_); return ::to_neg_errno(rv); #else return -ENOSYS; #endif } static inline int statx(const int dirfd_, const std::string &pathname_, const int flags_, const unsigned int mask_, struct fuse_statx *st_) { return fs::statx(dirfd_,pathname_.c_str(),flags_,mask_,st_); } }