~zulcss/samba/server-dailies-3.4

« back to all changes in this revision

Viewing changes to lib/util/wrap_xattr.c

  • Committer: Chuck Short
  • Date: 2010-09-28 20:38:39 UTC
  • Revision ID: zulcss@ubuntu.com-20100928203839-pgjulytsi9ue63x1
Initial version

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* 
 
2
   Unix SMB/CIFS implementation.
 
3
 
 
4
   POSIX NTVFS backend - xattr support using filesystem xattrs
 
5
 
 
6
   Copyright (C) Andrew Tridgell 2004
 
7
 
 
8
   This program is free software; you can redistribute it and/or modify
 
9
   it under the terms of the GNU General Public License as published by
 
10
   the Free Software Foundation; either version 3 of the License, or
 
11
   (at your option) any later version.
 
12
   
 
13
   This program is distributed in the hope that it will be useful,
 
14
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
15
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
16
   GNU General Public License for more details.
 
17
   
 
18
   You should have received a copy of the GNU General Public License
 
19
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
20
*/
 
21
 
 
22
#include "includes.h"
 
23
#include "system/filesys.h"
 
24
#include "../lib/util/wrap_xattr.h"
 
25
 
 
26
#if defined(HAVE_XATTR_SUPPORT) && defined(XATTR_ADDITIONAL_OPTIONS)
 
27
static ssize_t _wrap_darwin_fgetxattr(int fd, const char *name, void *value, size_t size)
 
28
{
 
29
        return fgetxattr(fd, name, value, size, 0, 0);
 
30
}
 
31
static ssize_t _wrap_darwin_getxattr(const char *path, const char *name, void *value, size_t size)
 
32
{
 
33
        return getxattr(path, name, value, size, 0, 0);
 
34
}
 
35
static int _wrap_darwin_fsetxattr(int fd, const char *name, void *value, size_t size, int flags)
 
36
{
 
37
        return fsetxattr(fd, name, value, size, 0, flags);
 
38
}
 
39
static int _wrap_darwin_setxattr(const char *path, const char *name, void *value, size_t size, int flags)
 
40
{
 
41
        return setxattr(path, name, value, size, 0, flags);
 
42
}
 
43
static int _wrap_darwin_fremovexattr(int fd, const char *name)
 
44
{
 
45
        return fremovexattr(fd, name, 0);
 
46
}
 
47
static int _wrap_darwin_removexattr(const char *path, const char *name)
 
48
{
 
49
        return removexattr(path, name, 0);
 
50
}
 
51
#define fgetxattr       _wrap_darwin_fgetxattr
 
52
#define getxattr        _wrap_darwin_getxattr
 
53
#define fsetxattr       _wrap_darwin_fsetxattr
 
54
#define setxattr        _wrap_darwin_setxattr
 
55
#define fremovexattr    _wrap_darwin_fremovexattr
 
56
#define removexattr     _wrap_darwin_removexattr
 
57
#elif !defined(HAVE_XATTR_SUPPORT)
 
58
static ssize_t _none_fgetxattr(int fd, const char *name, void *value, size_t size)
 
59
{
 
60
        errno = ENOSYS;
 
61
        return -1;
 
62
}
 
63
static ssize_t _none_getxattr(const char *path, const char *name, void *value, size_t size)
 
64
{
 
65
        errno = ENOSYS;
 
66
        return -1;
 
67
}
 
68
static int _none_fsetxattr(int fd, const char *name, void *value, size_t size, int flags)
 
69
{
 
70
        errno = ENOSYS;
 
71
        return -1;
 
72
}
 
73
static int _none_setxattr(const char *path, const char *name, void *value, size_t size, int flags)
 
74
{
 
75
        errno = ENOSYS;
 
76
        return -1;
 
77
}
 
78
static int _none_fremovexattr(int fd, const char *name)
 
79
{
 
80
        errno = ENOSYS;
 
81
        return -1;
 
82
}
 
83
static int _none_removexattr(const char *path, const char *name)
 
84
{
 
85
        errno = ENOSYS;
 
86
        return -1;
 
87
}
 
88
#define fgetxattr       _none_fgetxattr
 
89
#define getxattr        _none_getxattr
 
90
#define fsetxattr       _none_fsetxattr
 
91
#define setxattr        _none_setxattr
 
92
#define fremovexattr    _none_fremovexattr
 
93
#define removexattr     _none_removexattr
 
94
#endif
 
95
 
 
96
_PUBLIC_ ssize_t wrap_fgetxattr(int fd, const char *name, void *value, size_t size)
 
97
{
 
98
        return fgetxattr(fd, name, value, size);
 
99
}
 
100
_PUBLIC_ ssize_t wrap_getxattr(const char *path, const char *name, void *value, size_t size)
 
101
{
 
102
        return getxattr(path, name, value, size);
 
103
}
 
104
_PUBLIC_ int wrap_fsetxattr(int fd, const char *name, void *value, size_t size, int flags)
 
105
{
 
106
        return fsetxattr(fd, name, value, size, flags);
 
107
}
 
108
_PUBLIC_ int wrap_setxattr(const char *path, const char *name, void *value, size_t size, int flags)
 
109
{
 
110
        return setxattr(path, name, value, size, flags);
 
111
}
 
112
_PUBLIC_ int wrap_fremovexattr(int fd, const char *name)
 
113
{
 
114
        return fremovexattr(fd, name);
 
115
}
 
116
_PUBLIC_ int wrap_removexattr(const char *path, const char *name)
 
117
{
 
118
        return removexattr(path, name);
 
119
}
 
120