VSF Documented
xattr.h
Go to the documentation of this file.
1#ifndef __VSF_LINUX_SYS_XATTR_H__
2#define __VSF_LINUX_SYS_XATTR_H__
3
5#if VSF_LINUX_CFG_RELATIVE_PATH == ENABLED
6# include "../sys/types.h"
7#else
8# include <sys/types.h>
9#endif
10
11#ifdef __cplusplus
12extern "C" {
13#endif
14
15#if VSF_LINUX_CFG_WRAPPER == ENABLED
16#define removexattr VSF_LINUX_WRAPPER(removexattr)
17#define lremovexattr VSF_LINUX_WRAPPER(lremovexattr)
18#define fremovexattr VSF_LINUX_WRAPPER(fremovexattr)
19#define setxattr VSF_LINUX_WRAPPER(setxattr)
20#define lsetxattr VSF_LINUX_WRAPPER(lsetxattr)
21#define fsetxattr VSF_LINUX_WRAPPER(fsetxattr)
22#define getxattr VSF_LINUX_WRAPPER(getxattr)
23#define lgetxattr VSF_LINUX_WRAPPER(lgetxattr)
24#define fgetxattr VSF_LINUX_WRAPPER(fgetxattr)
25#endif
26
27#if VSF_LINUX_APPLET_USE_SYS_XATTR == ENABLED
30
41# ifndef __VSF_APPLET__
43# endif
44#endif
45
46#if defined(__VSF_APPLET__) && (defined(__VSF_APPLET_LIB__) || defined(__VSF_APPLET_LINUX_SYS_XATTR_LIB__))\
47 && VSF_APPLET_CFG_ABI_PATCH != ENABLED && VSF_LINUX_APPLET_USE_SYS_XATTR == ENABLED
48
49#ifndef VSF_LINUX_APPLET_SYS_XATTR_VPLT
50# if VSF_LINUX_USE_APPLET == ENABLED
51# define VSF_LINUX_APPLET_SYS_XATTR_VPLT \
52 ((vsf_linux_sys_xattr_vplt_t *)(VSF_LINUX_APPLET_VPLT->sys_xattr_vplt))
53# else
54# define VSF_LINUX_APPLET_SYS_XATTR_VPLT \
55 ((vsf_linux_sys_xattr_vplt_t *)vsf_vplt((void *)0))
56# endif
57#endif
58
59#define VSF_LINUX_APPLET_SYS_XATTR_ENTRY(__NAME) \
60 VSF_APPLET_VPLT_ENTRY_FUNC_ENTRY(VSF_LINUX_APPLET_SYS_XATTR_VPLT, __NAME)
61#define VSF_LINUX_APPLET_SYS_XATTR_IMP(...) \
62 VSF_APPLET_VPLT_ENTRY_FUNC_IMP(VSF_LINUX_APPLET_SYS_XATTR_VPLT, __VA_ARGS__)
63
64VSF_LINUX_APPLET_SYS_XATTR_IMP(removexattr, int, const char *path, const char *name) {
66 return VSF_LINUX_APPLET_SYS_XATTR_ENTRY(removexattr)(path, name);
67}
68VSF_LINUX_APPLET_SYS_XATTR_IMP(lremovexattr, int, const char *path, const char *name) {
70 return VSF_LINUX_APPLET_SYS_XATTR_ENTRY(lremovexattr)(path, name);
71}
72VSF_LINUX_APPLET_SYS_XATTR_IMP(fremovexattr, int, int fd, const char *name) {
74 return VSF_LINUX_APPLET_SYS_XATTR_ENTRY(fremovexattr)(fd, name);
75}
76
77VSF_LINUX_APPLET_SYS_XATTR_IMP(setxattr, int, const char *path, const char *name, const void *value, size_t size, int flags) {
79 return VSF_LINUX_APPLET_SYS_XATTR_ENTRY(setxattr)(path, name, value, size, flags);
80}
81VSF_LINUX_APPLET_SYS_XATTR_IMP(lsetxattr, int, const char *path, const char *name, const void *value, size_t size, int flags) {
83 return VSF_LINUX_APPLET_SYS_XATTR_ENTRY(lsetxattr)(path, name, value, size, flags);
84}
85VSF_LINUX_APPLET_SYS_XATTR_IMP(fsetxattr, int, int fd, const char *name, const void *value, size_t size, int flags) {
87 return VSF_LINUX_APPLET_SYS_XATTR_ENTRY(fsetxattr)(fd, name, value, size, flags);
88}
89
90VSF_LINUX_APPLET_SYS_XATTR_IMP(removexattr, ssize_t, const char *path, const char *name, void *value, size_t size) {
92 return VSF_LINUX_APPLET_SYS_XATTR_ENTRY(removexattr)(path, name, value, size);
93}
94VSF_LINUX_APPLET_SYS_XATTR_IMP(lremovexattr, ssize_t, const char *path, const char *name, void *value, size_t size) {
96 return VSF_LINUX_APPLET_SYS_XATTR_ENTRY(lremovexattr)(path, name, value, size);
97}
98VSF_LINUX_APPLET_SYS_XATTR_IMP(fremovexattr, ssize_t, int fd, const char *name, void *value, size_t size) {
100 return VSF_LINUX_APPLET_SYS_XATTR_ENTRY(fremovexattr)(fd, name, value, size);
101}
102
103#else // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_SYS_XATTR
104
105int removexattr(const char *path, const char *name);
106int lremovexattr(const char *path, const char *name);
107int fremovexattr(int fd, const char *name);
108
109int setxattr(const char *path, const char *name, const void *value, size_t size, int flags);
110int lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags);
111int fsetxattr(int fd, const char *name, const void *value, size_t size, int flags);
112
113ssize_t getxattr(const char *path, const char *name, void *value, size_t size);
114ssize_t lgetxattr(const char *path, const char *name, void *value, size_t size);
115ssize_t fgetxattr(int fd, const char *name, void *value, size_t size);
116
117#endif // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_SYS_XATTR
118
119#ifdef __cplusplus
120}
121#endif
122
123#endif
int ssize_t
Definition types.h:68
Definition xattr.h:28
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(lremovexattr)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(lgetxattr)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(lsetxattr)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getxattr)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(setxattr)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(fgetxattr)
vsf_vplt_info_t info
Definition xattr.h:29
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(removexattr)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(fsetxattr)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(fremovexattr)
#define removexattr
Definition xattr.h:16
#define lsetxattr
Definition xattr.h:20
__VSF_VPLT_DECORATOR__ vsf_linux_sys_xattr_vplt_t vsf_linux_sys_xattr_vplt
Definition vsf_linux.c:5248
#define setxattr
Definition xattr.h:19
#define lremovexattr
Definition xattr.h:17
#define getxattr
Definition xattr.h:22
#define fsetxattr
Definition xattr.h:21
#define fgetxattr
Definition xattr.h:24
#define lgetxattr
Definition xattr.h:23
#define fremovexattr
Definition xattr.h:18
Definition vsf_cfg.h:95
vk_av_control_value_t value
Definition vsf_audio.h:171
#define __VSF_VPLT_DECORATOR__
Definition vsf_cfg.h:93
#define VSF_APPLET_VPLT_ENTRY_FUNC_TRACE()
Definition vsf_cfg.h:165
uint32_t size
Definition vsf_memfs.h:50