123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- /*
- * Copyright (C) 2004 <solar@gentoo.org>
- * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
- *
- * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
- */
- /* This file provides the following Extended Attribute system calls to uClibc.
- *
- * setxattr(), lsetxattr(), fsetxattr(),
- * getxattr(), lgetxattr(), fgetxattr(),
- * listxattr(), llistxattr(), flistxattr(),
- * removexattr(), lremovexattr(), fremovexattr()
- *
- * Dec 2004 - <solar@gentoo.org>
- */
- /* Taken from the manpage.
- * On success, a positive number is returned indicating the size of the
- * extended attribute name list. On failure, -1 is returned and errno
- * is set appropriately. If extended attributes are not supported by the
- * filesystem, or are disabled, errno is set to ENOSYS.
- */
- #include <sys/syscall.h>
- #include <unistd.h>
- #include <sys/xattr.h>
- /* sets */
- #ifdef __NR_setxattr
- _syscall5(int, setxattr, const char *, path, const char *, name,
- const void *, value, size_t, size, int, flags);
- #else
- int setxattr(__const char *__path, __const char *__name,
- __const void *__value, size_t __size, int __flags)
- {
- __set_errno(ENOSYS);
- return -1;
- }
- #endif
- #ifdef __NR_lsetxattr
- _syscall5(int, lsetxattr, const char *, path, const char *, name,
- const void *, value, size_t, size, int, flags);
- #else
- int lsetxattr(__const char *__path, __const char *__name,
- __const void *__value, size_t __size, int __flags)
- {
- __set_errno(ENOSYS);
- return -1;
- }
- #endif
- #ifdef __NR_fsetxattr
- _syscall5(int, fsetxattr, int, filedes, const char *, name, const void *,
- value, size_t, size, int, flags);
- #else
- int fsetxattr(int __fd, __const char *__name, __const void *__value,
- size_t __size, int __flags)
- {
- __set_errno(ENOSYS);
- return -1;
- }
- #endif
- /* gets */
- #ifdef __NR_getxattr
- _syscall4(ssize_t, getxattr, const char *, path, const char *, name,
- void *, value, size_t, size);
- #else
- ssize_t getxattr(__const char *__path, __const char *__name, void *__value,
- size_t __size)
- {
- __set_errno(ENOSYS);
- return -1;
- }
- #endif
- #ifdef __NR_lgetxattr
- _syscall4(ssize_t, lgetxattr, const char *, path, const char *, name,
- void *, value, size_t, size);
- #else
- ssize_t lgetxattr(__const char *__path, __const char *__name,
- void *__value, size_t __size)
- {
- __set_errno(ENOSYS);
- return -1;
- }
- #endif
- #ifdef __NR_fgetxattr
- _syscall4(ssize_t, fgetxattr, int, filedes, const char *, name, void *,
- value, size_t, size);
- #else
- ssize_t fgetxattr(int __fd, __const char *__name, void *__value,
- size_t __size)
- {
- __set_errno(ENOSYS);
- return -1;
- }
- #endif
- /* list */
- #ifdef __NR_listxattr
- _syscall3(ssize_t, listxattr, const char *, path, char *, list, size_t,
- size);
- #else
- ssize_t listxattr(__const char *__path, char *__list, size_t __size)
- {
- __set_errno(ENOSYS);
- return -1;
- }
- #endif
- #ifdef __NR_llistxattr
- _syscall3(ssize_t, llistxattr, const char *, path, char *, list, size_t,
- size);
- #else
- ssize_t llistxattr(__const char *__path, char *__list, size_t __size)
- {
- __set_errno(ENOSYS);
- return -1;
- }
- #endif
- #ifdef __NR_flistxattr
- _syscall3(ssize_t, flistxattr, int, filedes, char *, list, size_t, size);
- #else
- ssize_t flistxattr(int __fd, char *__list, size_t __size)
- {
- __set_errno(ENOSYS);
- return -1;
- }
- #endif
- /* remove */
- #ifdef __NR_removexattr
- _syscall2(int, removexattr, const char *, path, const char *, name);
- #else
- int removexattr(__const char *__path, __const char *__name)
- {
- __set_errno(ENOSYS);
- return -1;
- }
- #endif
- #ifdef __NR_lremovexattr
- _syscall2(int, lremovexattr, const char *, path, const char *, name);
- #else
- int lremovexattr(__const char *__path, __const char *__name)
- {
- __set_errno(ENOSYS);
- return -1;
- }
- #endif
- #ifdef __NR_fremovexattr
- _syscall2(int, fremovexattr, int, filedes, const char *, name);
- #else
- int fremovexattr(int __fd, __const char *__name)
- {
- __set_errno(ENOSYS);
- return -1;
- }
- #endif
|