From 2215f7a5d902764755673cc15a317982f0f15592 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Wed, 8 Jan 2020 14:47:27 -0500 Subject: fsade: Support checking for xattrs (extattrs) on FreeBSD --- fsade.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'fsade.c') diff --git a/fsade.c b/fsade.c index 84c6978..668f586 100644 --- a/fsade.c +++ b/fsade.c @@ -30,7 +30,9 @@ # include #endif -#if BFS_CAN_CHECK_XATTRS +#if BFS_HAS_SYS_EXTATTR +# include +#elif BFS_HAS_SYS_XATTR # include #endif @@ -281,7 +283,15 @@ int bfs_check_xattrs(const struct BFTW *ftwbuf) { const char *path = fake_at(ftwbuf); ssize_t len; -#if __APPLE__ +#if BFS_HAS_SYS_EXTATTR + ssize_t (*extattr_list)(const char *, int, void*, size_t) = + ftwbuf->typeflag == BFTW_LNK ? extattr_list_link : extattr_list_file; + + len = extattr_list(path, EXTATTR_NAMESPACE_SYSTEM, NULL, 0); + if (len <= 0) { + len = extattr_list(path, EXTATTR_NAMESPACE_USER, NULL, 0); + } +#elif __APPLE__ int options = ftwbuf->typeflag == BFTW_LNK ? XATTR_NOFOLLOW : 0; len = listxattr(path, NULL, 0, options); #else -- cgit v1.2.3