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
128#define EA_MAGIC 0x61644541
129#define EA_VERSION1 0x01
130#define EA_VERSION EA_VERSION1
142#define EA_MAGIC_OFF 0
143#define EA_MAGIC_LEN 4
144#define EA_VERSION_OFF (EA_MAGIC_OFF + EA_MAGIC_LEN)
145#define EA_VERSION_LEN 2
146#define EA_COUNT_OFF (EA_VERSION_OFF + EA_VERSION_LEN)
147#define EA_COUNT_LEN 2
148#define EA_HEADER_SIZE (EA_MAGIC_LEN + EA_VERSION_LEN + EA_COUNT_LEN)
185struct ea_entry_ondisk {
195 struct ea_entry_ondisk ea_entries[ea_count];
203 const char *uname,
int oflag,
const char *attruname,
int fd);
205 const char *uname,
int oflag,
const char *attruname,
int maxreply,
int fd);
206extern int list_eas(
const struct vol *
vol,
char *attrnamebuf,
size_t *buflen,
207 const char *uname,
int oflag,
int fd);
208extern int set_ea(
const struct vol *
vol,
const char *uname,
209 const char *attruname,
const char *ibuf,
size_t attrsize,
int oflag,
int fd);
211 const char *attruname,
int oflag,
int fd);
227 const char *uname,
int oflag,
const char *attruname,
int fd);
229 const char *uname,
int oflag,
const char *attruname,
int maxreply,
int fd);
231 size_t *buflen,
const char *uname,
int oflag,
int fd);
233 const char *attruname,
const char *ibuf,
size_t attrsize,
int oflag,
int fd);
235 const char *attruname,
int oflag,
int fd);
251extern char *
ea_path(
const struct ea *
ea,
const char *eaname,
int macname);
static size_t rbuflen
Definition afpfunc_helpers.c:45
static char rbuf[rbufsize]
Definition afpfunc_helpers.c:44
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
int sys_set_ea(const struct vol *vol, const char *uname, const char *attruname, const char *ibuf, size_t attrsize, int oflag, int fd)
set a native EA
Definition ea_sys.c:383
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 ea_chown(const struct vol *vol, const char *path, uid_t uid, gid_t gid)
Definition ea_ad.c:1570
int sys_setxattr(const char *path, const char *name, const void *value, size_t size, int flags)
Definition extattr.c:623
int list_eas(const struct vol *vol, char *attrnamebuf, size_t *buflen, const char *uname, int oflag, int fd)
copy names of EAs into attrnamebuf
Definition ea_ad.c:1126
int sys_list_eas(const struct vol *vol, char *attrnamebuf, size_t *buflen, const char *uname, int oflag, int fd)
copy names of native EAs into attrnamebuf
Definition ea_sys.c:287
int ea_open(const struct vol *vol, const char *uname, eaflags_t eaflags, struct ea *ea)
open EA header file, create if it doesnt exits and called with O_CREATE
Definition ea_ad.c:637
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,...)
Definition extattr.c:94
int ea_close(struct ea *ea)
flushes and closes an ea handle
Definition ea_ad.c:853
int remove_ea(const struct vol *vol, const char *uname, const char *attruname, int oflag, int fd)
remove a EA from a file
Definition ea_ad.c:1257
int set_ea(const struct vol *vol, const char *uname, const char *attruname, const char *ibuf, size_t attrsize, int oflag, int fd)
set a Solaris native EA
Definition ea_ad.c:1209
ssize_t sys_lgetxattr(const char *path, const char *name, void *value, size_t size)
Definition extattr.c:250
int sys_get_eacontent(const struct vol *vol, char *rbuf, size_t *rbuflen, const char *uname, int oflag, const char *attruname, int maxreply, int fd)
copy native EA into rbuf
Definition ea_sys.c:153
int ea_chmod_file(const struct vol *vol, const char *name, mode_t mode, struct stat *st)
Definition ea_ad.c:1637
int sys_lremovexattr(const char *path, const char *name)
Definition extattr.c:595
int sys_get_easize(const struct vol *vol, char *rbuf, size_t *rbuflen, const char *uname, int oflag, const char *attruname, int fd)
get size of a native EA
Definition ea_sys.c:59
char * ea_path(const struct ea *ea, const char *eaname, int macname)
return name of ea header filename
Definition ea_ad.c:589
int sys_copyxattr(const char *src, const char *dst)
int sys_remove_ea(const struct vol *vol, const char *uname, const char *attruname, int oflag, int fd)
remove a native EA
Definition ea_sys.c:498
int sys_ea_copyfile(const struct vol *vol, int sfd, const char *src, const char *dst)
copy EAs
Definition ea_sys.c:566
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_deletefile(const struct vol *vol, int dirfd, const char *file)
Definition ea_ad.c:1296
int get_eacontent(const struct vol *vol, char *rbuf, size_t *rbuflen, const char *uname, int oflag, const char *attruname, int maxreply, int fd)
copy EA into rbuf
Definition ea_ad.c:1032
int ea_openat(const struct vol *vol, int dirfd, const char *uname, eaflags_t eaflags, struct ea *ea)
openat like wrapper for ea_open, takes a additional file descriptor
Definition ea_ad.c:808
int ea_renamefile(const struct vol *vol, int dirfd, const char *src, const char *dst)
Definition ea_ad.c:1356
eaflags_t
Definition ea.h:132
@ EA_RDONLY
Definition ea.h:135
@ EA_CREATE
Definition ea.h:134
@ EA_RDWR
Definition ea.h:136
@ EA_DIR
Definition ea.h:138
int ea_copyfile(const struct vol *vol, int sfd, const char *src, const char *dst)
copy EAs
Definition ea_ad.c:1474
int ea_chmod_dir(const struct vol *vol, const char *name, mode_t mode, struct stat *st)
Definition ea_ad.c:1713
int get_easize(const struct vol *vol, char *rbuf, size_t *rbuflen, const char *uname, int oflag, const char *attruname, int fd)
get size of an EA
Definition ea_ad.c:972
char * ea_name
Definition ea.h:160
size_t ea_namelen
Definition ea.h:157
size_t ea_size
Definition ea.h:159
eaflags_t ea_flags
Definition ea.h:176
char * filename
Definition ea.h:170
int dirfd
Definition ea.h:168
size_t ea_size
Definition ea.h:177
char * ea_data
Definition ea.h:179
unsigned int ea_count
Definition ea.h:172
int ea_fd
Definition ea.h:175
uint32_t ea_inited
Definition ea.h:165
const struct vol * vol
Definition ea.h:167
struct ea_entry(* ea_entries)[]
Definition ea.h:173
Definition etc/atalkd/list.h:6
Definition include/atalk/directory.h:81
Definition include/atalk/volume.h:30