2006-06-06 01:48:29 +04:00
/*
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
2007-07-10 06:07:03 +04:00
the Free Software Foundation ; either version 3 of the License , or
2006-06-06 01:48:29 +04:00
( 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
2007-07-10 06:07:03 +04:00
along with this program . If not , see < http : //www.gnu.org/licenses/>.
2006-06-06 01:48:29 +04:00
*/
# include "includes.h"
# include "system/filesys.h"
2006-06-13 14:47:08 +04:00
# include "lib/util/wrap_xattr.h"
2006-06-06 01:48:29 +04:00
# 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 ) ;
}