mirror of
https://github.com/samba-team/samba.git
synced 2025-01-12 09:18:10 +03:00
r16005: add support for XATTR's on MacOS
Thanks to Bjoern Jacke for his help.
metze
(This used to be commit 8f8480e453
)
This commit is contained in:
parent
f6a3c29ede
commit
8f553ab4a1
@ -29,6 +29,23 @@ AC_SEARCH_LIBS_EXT(flistxattr, [attr], XATTR_LIBS)
|
|||||||
AC_CHECK_FUNC_EXT(flistxattr, $XATTR_LIBS)
|
AC_CHECK_FUNC_EXT(flistxattr, $XATTR_LIBS)
|
||||||
SMB_EXT_LIB(XATTR,[${XATTR_LIBS}],[${XATTR_CFLAGS}],[${XATTR_CPPFLAGS}],[${XATTR_LDFLAGS}])
|
SMB_EXT_LIB(XATTR,[${XATTR_LIBS}],[${XATTR_CFLAGS}],[${XATTR_CPPFLAGS}],[${XATTR_LDFLAGS}])
|
||||||
if test x"$ac_cv_func_ext_flistxattr" = x"yes"; then
|
if test x"$ac_cv_func_ext_flistxattr" = x"yes"; then
|
||||||
|
AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt,
|
||||||
|
[old_LIBS=$LIBS
|
||||||
|
LIBS="$LIBS $XATTRLIBS"
|
||||||
|
AC_TRY_COMPILE([
|
||||||
|
#include <sys/types.h>
|
||||||
|
#if HAVE_ATTR_XATTR_H
|
||||||
|
#include <attr/xattr.h>
|
||||||
|
#elif HAVE_SYS_XATTR_H
|
||||||
|
#include <sys/xattr.h>
|
||||||
|
#endif
|
||||||
|
],[
|
||||||
|
getxattr(NULL, NULL, NULL, 0, 0, 0);
|
||||||
|
],smb_attr_cv_xattr_add_opt=yes,smb_attr_cv_xattr_add_opt=no)
|
||||||
|
LIBS=$old_LIBS)])
|
||||||
|
if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
|
||||||
|
AC_DEFINE(XATTR_ADDITIONAL_OPTIONS, 1, [xattr functions have additional options])
|
||||||
|
fi
|
||||||
AC_DEFINE(HAVE_XATTR_SUPPORT,1,[Whether we have xattr support])
|
AC_DEFINE(HAVE_XATTR_SUPPORT,1,[Whether we have xattr support])
|
||||||
SMB_ENABLE(XATTR,YES)
|
SMB_ENABLE(XATTR,YES)
|
||||||
fi
|
fi
|
||||||
|
@ -23,7 +23,38 @@
|
|||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
#include "vfs_posix.h"
|
#include "vfs_posix.h"
|
||||||
|
|
||||||
#if !defined(HAVE_XATTR_SUPPORT)
|
#if defined(HAVE_XATTR_SUPPORT) && defined(XATTR_ADDITIONAL_OPTIONS)
|
||||||
|
static ssize_t _wrap_fgetxattr(int fd, const char *name, void *value, size_t size)
|
||||||
|
{
|
||||||
|
return fgetxattr(fd, name, value, size, 0, 0);
|
||||||
|
}
|
||||||
|
static ssize_t _wrap_getxattr(const char *path, const char *name, void *value, size_t size)
|
||||||
|
{
|
||||||
|
return getxattr(path, name, value, size, 0, 0);
|
||||||
|
}
|
||||||
|
static ssize_t _wrap_fsetxattr(int fd, const char *name, void *value, size_t size, int flags)
|
||||||
|
{
|
||||||
|
return fsetxattr(fd, name, value, size, 0, flags);
|
||||||
|
}
|
||||||
|
static ssize_t _wrap_setxattr(const char *path, const char *name, void *value, size_t size, int flags)
|
||||||
|
{
|
||||||
|
return setxattr(path, name, value, size, 0, flags);
|
||||||
|
}
|
||||||
|
static ssize_t _wrap_fremovexattr(int fd, const char *name)
|
||||||
|
{
|
||||||
|
return fremovexattr(fd, name, 0);
|
||||||
|
}
|
||||||
|
static ssize_t _wrap_removexattr(const char *path, const char *name)
|
||||||
|
{
|
||||||
|
return removexattr(path, name, 0);
|
||||||
|
}
|
||||||
|
#define fgetxattr _wrap_fgetxattr
|
||||||
|
#define getxattr _wrap_getxattr
|
||||||
|
#define fsetxattr _wrap_fsetxattr
|
||||||
|
#define setxattr _wrap_setxattr
|
||||||
|
#define fremovexattr _wrap_fremovexattr
|
||||||
|
#define removexattr _wrap_removexattr
|
||||||
|
#elif !defined(HAVE_XATTR_SUPPORT)
|
||||||
static ssize_t _none_fgetxattr(int fd, const char *name, void *value, size_t size)
|
static ssize_t _none_fgetxattr(int fd, const char *name, void *value, size_t size)
|
||||||
{
|
{
|
||||||
errno = ENOTSUP;
|
errno = ENOTSUP;
|
||||||
|
Loading…
Reference in New Issue
Block a user