23#include <attr/xattr.h>
32#ifdef HAVE_SYS_EXTATTR_H
33#include <sys/extattr.h>
36#if defined(SOLARIS) && defined(HAVE_SYS_ATTR_H)
41#define ENOATTR ENODATA
50#define MAX_EA_SIZE 3802
56#define MAX_REPLY_EXTRA_BYTES 6
63#define ATTRNAMEBUFSIZ 4096
71#if !defined(HAVE_SETXATTR)
72#define XATTR_CREATE 0x1
73#define XATTR_REPLACE 0x2
76#if defined(SOLARIS) && defined(HAVE_SYS_ATTR_H)
77#define SMB_ATTR_PREFIX "SUNWsmb:"
78#define SMB_ATTR_PREFIX_LEN (sizeof(SMB_ATTR_PREFIX) - 1)
82#define AD_EA_META "org.netatalk.Metadata"
83#define AD_EA_META_LEN (sizeof(AD_EA_META) - 1)
85#define AD_EA_RESO "com.apple.ResourceFork"
86#define EA_FINFO "com.apple.FinderInfo"
87#define NOT_NETATALK_EA(a) (strcmp((a), AD_EA_META) != 0) && (strcmp((a), AD_EA_RESO) != 0) && (strcmp((a), EA_FINFO) != 0)
89#define AD_EA_RESO "org.netatalk.ResourceFork"
90#define NOT_NETATALK_EA(a) (strcmp((a), AD_EA_META) != 0) && (strcmp((a), AD_EA_RESO) != 0)
100ssize_t
sys_fgetxattr(
int filedes,
const char *name,
void *value,
size_t size);
114 size_t size,
int flags);
116 size_t size,
int flags);
117int sys_fsetxattr(
int filedes,
const char *name,
const void *value,
size_t size,
126#define EA_INITED 0xea494e54
127#define EA_MAGIC 0x61644541
128#define EA_VERSION1 0x01
129#define EA_VERSION EA_VERSION1
140#define EA_MAGIC_OFF 0
141#define EA_MAGIC_LEN 4
142#define EA_VERSION_OFF (EA_MAGIC_OFF + EA_MAGIC_LEN)
143#define EA_VERSION_LEN 2
144#define EA_COUNT_OFF (EA_VERSION_OFF + EA_VERSION_LEN)
145#define EA_COUNT_LEN 2
146#define EA_HEADER_SIZE (EA_MAGIC_LEN + EA_VERSION_LEN + EA_COUNT_LEN)
190struct ea_entry_ondisk {
200 struct ea_entry_ondisk ea_entries[ea_count];
231 const char *restrict uname,
233 struct ea *restrict
ea);
236 const char *restrict uname,
238 struct ea *restrict
ea);
241 const char *restrict eaname,
int macname);
static dbd_flags_t flags
Definition cmd_dbd.c:45
int sys_lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags)
Definition extattr.c:756
ssize_t sys_flistxattr(int filedes, const char *path, char *list, size_t size)
Definition extattr.c:468
ssize_t sys_listxattr(const char *path, char *list, size_t size)
Definition extattr.c:435
int sys_fsetxattr(int filedes, const char *name, const void *value, size_t size, int flags)
Definition extattr.c:688
ssize_t sys_getxattr(const char *path, const char *name, void *value, size_t size)
Definition extattr.c:120
@ kXAttrReplace
Definition ea.h:68
@ kXAttrCreate
Definition ea.h:67
@ kXAttrNoFollow
Definition ea.h:66
int sys_get_easize(VFS_FUNC_ARGS_EA_GETSIZE)
Definition ea_sys.c:64
int list_eas(VFS_FUNC_ARGS_EA_LIST)
Definition ea_ad.c:1198
int sys_setxattr(const char *path, const char *name, const void *value, size_t size, int flags)
Definition extattr.c:623
int sys_remove_ea(VFS_FUNC_ARGS_EA_REMOVE)
Definition ea_sys.c:522
int sys_list_eas(VFS_FUNC_ARGS_EA_LIST)
Definition ea_sys.c:301
ssize_t sys_llistxattr(const char *path, char *list, size_t size)
Definition extattr.c:502
int sys_getxattrfd(int fd, const char *uname, int oflag,...)
int ea_chmod_file(VFS_FUNC_ARGS_SETFILEMODE)
Definition ea_ad.c:1720
int set_ea(VFS_FUNC_ARGS_EA_SET)
Definition ea_ad.c:1285
char * ea_path(const struct ea *restrict ea, const char *restrict eaname, int macname)
Definition ea_ad.c:634
int ea_deletefile(VFS_FUNC_ARGS_DELETEFILE)
Definition ea_ad.c:1375
int ea_open(const struct vol *restrict vol, const char *restrict uname, eaflags_t eaflags, struct ea *restrict ea)
Definition ea_ad.c:687
ssize_t sys_lgetxattr(const char *path, const char *name, void *value, size_t size)
Definition extattr.c:250
int ea_chmod_dir(VFS_FUNC_ARGS_SETDIRUNIXMODE)
Definition ea_ad.c:1795
int remove_ea(VFS_FUNC_ARGS_EA_REMOVE)
Definition ea_ad.c:1337
int sys_lremovexattr(const char *path, const char *name)
Definition extattr.c:595
int sys_copyxattr(const char *src, const char *dst)
int sys_get_eacontent(VFS_FUNC_ARGS_EA_GETCONTENT)
Definition ea_sys.c:163
int get_easize(VFS_FUNC_ARGS_EA_GETSIZE)
Definition ea_ad.c:1038
ssize_t sys_fgetxattr(int filedes, const char *name, void *value, size_t size)
Definition extattr.c:187
int sys_removexattr(const char *path, const char *name)
Definition extattr.c:535
int sys_fremovexattr(int filedes, const char *path, const char *name)
Definition extattr.c:565
int ea_copyfile(VFS_FUNC_ARGS_COPYFILE)
Definition ea_ad.c:1558
int ea_openat(const struct vol *restrict vol, int dirfd, const char *restrict uname, eaflags_t eaflags, struct ea *restrict ea)
Definition ea_ad.c:863
int get_eacontent(VFS_FUNC_ARGS_EA_GETCONTENT)
Definition ea_ad.c:1101
int sys_ea_copyfile(VFS_FUNC_ARGS_COPYFILE)
Definition ea_sys.c:595
int sys_set_ea(VFS_FUNC_ARGS_EA_SET)
Definition ea_sys.c:402
eaflags_t
Definition ea.h:131
@ EA_RDONLY
Definition ea.h:134
@ EA_CREATE
Definition ea.h:133
@ EA_RDWR
Definition ea.h:135
@ EA_DIR
Definition ea.h:137
int ea_renamefile(VFS_FUNC_ARGS_RENAMEFILE)
Definition ea_ad.c:1435
int ea_chown(VFS_FUNC_ARGS_CHOWN)
Definition ea_ad.c:1653
int ea_close(struct ea *restrict ea)
Definition ea_ad.c:914
char * ea_name
Definition ea.h:160
size_t ea_namelen
Definition ea.h:156
size_t ea_size
Definition ea.h:158
eaflags_t ea_flags
Definition ea.h:180
char * filename
Definition ea.h:172
int dirfd
Definition ea.h:170
size_t ea_size
Definition ea.h:182
char * ea_data
Definition ea.h:185
unsigned int ea_count
Definition ea.h:174
int ea_fd
Definition ea.h:178
uint32_t ea_inited
Definition ea.h:166
const struct vol * vol
Definition ea.h:168
struct ea_entry(* ea_entries)[]
Definition ea.h:176
Definition etc/atalkd/list.h:6
Definition include/atalk/directory.h:97
Definition include/atalk/volume.h:32
#define VFS_FUNC_ARGS_SETFILEMODE
Definition vfs.h:44
#define VFS_FUNC_ARGS_SETDIRUNIXMODE
Definition vfs.h:50
#define VFS_FUNC_ARGS_DELETEFILE
Definition vfs.h:56
#define VFS_FUNC_ARGS_COPYFILE
Definition vfs.h:62
#define VFS_FUNC_ARGS_EA_REMOVE
Definition vfs.h:89
#define VFS_FUNC_ARGS_CHOWN
Definition vfs.h:35
#define VFS_FUNC_ARGS_EA_LIST
Definition vfs.h:83
#define VFS_FUNC_ARGS_EA_GETSIZE
Definition vfs.h:77
#define VFS_FUNC_ARGS_RENAMEFILE
Definition vfs.h:59
#define VFS_FUNC_ARGS_EA_GETCONTENT
Definition vfs.h:80
#define VFS_FUNC_ARGS_EA_SET
Definition vfs.h:86