text: /* 
     Unix SMB/CIFS implementation.
  
     POSIX NTVFS backend - xattr support using filesystem xattrs
  
     Copyright (C) Andrew Tridgell 2004
  
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
     the Free Software Foundation; either version 3 of the License, or
     (at your option) any later version.
     
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU General Public License for more details.
     
     You should have received a copy of the GNU General Public License
     along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
  
  #include "includes.h"
  #include "system/filesys.h"
  #include "../lib/util/wrap_xattr.h"
  
  #if defined(HAVE_XATTR_SUPPORT) && defined(XATTR_ADDITIONAL_OPTIONS)
  static ssize_t _wrap_darwin_fgetxattr(int fd, const char *name, void *value, size_t size)
  {
  	return fgetxattr(fd, name, value, size, 0, 0);
  }
  static ssize_t _wrap_darwin_getxattr(const char *path, const char *name, void *value, size_t size)
  {
  	return getxattr(path, name, value, size, 0, 0);
  }
  static int _wrap_darwin_fsetxattr(int fd, const char *name, void *value, size_t size, int flags)
  {
  	return fsetxattr(fd, name, value, size, 0, flags);
  }
  static int _wrap_darwin_setxattr(const char *path, const char *name, void *value, size_t size, int flags)
  {
  	return setxattr(path, name, value, size, 0, flags);
  }
  static int _wrap_darwin_fremovexattr(int fd, const char *name)
  {
  	return fremovexattr(fd, name, 0);
  }
  static int _wrap_darwin_removexattr(const char *path, const char *name)
  {
  	return removexattr(path, name, 0);
  }
  #define fgetxattr	_wrap_darwin_fgetxattr
  #define getxattr	_wrap_darwin_getxattr
  #define fsetxattr	_wrap_darwin_fsetxattr
  #define setxattr	_wrap_darwin_setxattr
  #define fremovexattr	_wrap_darwin_fremovexattr
  #define removexattr	_wrap_darwin_removexattr
  #elif !defined(HAVE_XATTR_SUPPORT)
  static ssize_t _none_fgetxattr(int fd, const char *name, void *value, size_t size)
  {
  	errno = ENOSYS;
  	return -1;
  }
  static ssize_t _none_getxattr(const char *path, const char *name, void *value, size_t size)
  {
  	errno = ENOSYS;
  	return -1;
  }
  static int _none_fsetxattr(int fd, const char *name, void *value, size_t size, int flags)
  {
  	errno = ENOSYS;
  	return -1;
  }
  static int _none_setxattr(const char *path, const char *name, void *value, size_t size, int flags)
  {
  	errno = ENOSYS;
  	return -1;
  }
  static int _none_fremovexattr(int fd, const char *name)
  {
  	errno = ENOSYS;
  	return -1;
  }
  static int _none_removexattr(const char *path, const char *name)
  {
  	errno = ENOSYS;
  	return -1;
  }
  #define fgetxattr	_none_fgetxattr
  #define getxattr	_none_getxattr
  #define fsetxattr	_none_fsetxattr
  #define setxattr	_none_setxattr
  #define fremovexattr	_none_fremovexattr
  #define removexattr	_none_removexattr
  #endif
  
  _PUBLIC_ ssize_t wrap_fgetxattr(int fd, const char *name, void *value, size_t size)
  {
  	return fgetxattr(fd, name, value, size);
  }
  _PUBLIC_ ssize_t wrap_getxattr(const char *path, const char *name, void *value, size_t size)
  {
  	return getxattr(path, name, value, size);
  }
  _PUBLIC_ int wrap_fsetxattr(int fd, const char *name, void *value, size_t size, int flags)
  {
  	return fsetxattr(fd, name, value, size, flags);
  }
  _PUBLIC_ int wrap_setxattr(const char *path, const char *name, void *value, size_t size, int flags)
  {
  	return setxattr(path, name, value, size, flags);
  }
  _PUBLIC_ int wrap_fremovexattr(int fd, const char *name)
  {
  	return fremovexattr(fd, name);
  }
  _PUBLIC_ int wrap_removexattr(const char *path, const char *name)
  {
  	return removexattr(path, name);
  }
  
  