1 /* Copyright (C) 2002-2022 Free Software Foundation, Inc. 2 This file is part of the GNU C Library. 3 4 The GNU C Library is free software; you can redistribute it and/or 5 modify it under the terms of the GNU Lesser General Public 6 License as published by the Free Software Foundation; either 7 version 2.1 of the License, or (at your option) any later version. 8 9 The GNU C Library is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 Lesser General Public License for more details. 13 14 You should have received a copy of the GNU Lesser General Public 15 License along with the GNU C Library; if not, see 16 <https://www.gnu.org/licenses/>. */ 17 18 #ifndef _SYS_XATTR_H 19 #define _SYS_XATTR_H 1 20 21 #include <features.h> 22 #include <sys/types.h> 23 24 25 __BEGIN_DECLS 26 27 /* The following constants should be used for the fifth parameter of 28 `*setxattr'. */ 29 #ifndef __USE_KERNEL_XATTR_DEFS 30 enum 31 { 32 XATTR_CREATE = 1, /* set value, fail if attr already exists. */ 33 #define XATTR_CREATE XATTR_CREATE 34 XATTR_REPLACE = 2 /* set value, fail if attr does not exist. */ 35 #define XATTR_REPLACE XATTR_REPLACE 36 }; 37 #endif 38 39 /* Set the attribute NAME of the file pointed to by PATH to VALUE (which 40 is SIZE bytes long). Return 0 on success, -1 for errors. */ 41 extern int setxattr (const char *__path, const char *__name, 42 const void *__value, size_t __size, int __flags) 43 __THROW __attr_access ((__read_only__, 3, 4)); 44 45 /* Set the attribute NAME of the file pointed to by PATH to VALUE (which is 46 SIZE bytes long), not following symlinks for the last pathname component. 47 Return 0 on success, -1 for errors. */ 48 extern int lsetxattr (const char *__path, const char *__name, 49 const void *__value, size_t __size, int __flags) 50 __THROW __attr_access ((__read_only__, 3, 4)); 51 52 /* Set the attribute NAME of the file descriptor FD to VALUE (which is SIZE 53 bytes long). Return 0 on success, -1 for errors. */ 54 extern int fsetxattr (int __fd, const char *__name, const void *__value, 55 size_t __size, int __flags) 56 __THROW __attr_access ((__read_only__, 3, 4)); 57 58 /* Get the attribute NAME of the file pointed to by PATH to VALUE (which is 59 SIZE bytes long). Return 0 on success, -1 for errors. */ 60 extern ssize_t getxattr (const char *__path, const char *__name, 61 void *__value, size_t __size) 62 __THROW __attr_access ((__write_only__, 3, 4)); 63 64 /* Get the attribute NAME of the file pointed to by PATH to VALUE (which is 65 SIZE bytes long), not following symlinks for the last pathname component. 66 Return 0 on success, -1 for errors. */ 67 extern ssize_t lgetxattr (const char *__path, const char *__name, 68 void *__value, size_t __size) 69 __THROW __attr_access ((__write_only__, 3, 4)); 70 71 /* Get the attribute NAME of the file descriptor FD to VALUE (which is SIZE 72 bytes long). Return 0 on success, -1 for errors. */ 73 extern ssize_t fgetxattr (int __fd, const char *__name, void *__value, 74 size_t __size) 75 __THROW __attr_access ((__write_only__, 3, 4)); 76 77 /* List attributes of the file pointed to by PATH into the user-supplied 78 buffer LIST (which is SIZE bytes big). Return 0 on success, -1 for 79 errors. */ 80 extern ssize_t listxattr (const char *__path, char *__list, size_t __size) 81 __THROW __attr_access ((__write_only__, 2, 3)); 82 83 /* List attributes of the file pointed to by PATH into the user-supplied 84 buffer LIST (which is SIZE bytes big), not following symlinks for the 85 last pathname component. Return 0 on success, -1 for errors. */ 86 extern ssize_t llistxattr (const char *__path, char *__list, size_t __size) 87 __THROW __attr_access ((__write_only__, 2, 3)); 88 89 /* List attributes of the file descriptor FD into the user-supplied buffer 90 LIST (which is SIZE bytes big). Return 0 on success, -1 for errors. */ 91 extern ssize_t flistxattr (int __fd, char *__list, size_t __size) 92 __THROW __attr_access ((__write_only__, 2, 3)); 93 94 /* Remove the attribute NAME from the file pointed to by PATH. Return 0 95 on success, -1 for errors. */ 96 extern int removexattr (const char *__path, const char *__name) __THROW; 97 98 /* Remove the attribute NAME from the file pointed to by PATH, not 99 following symlinks for the last pathname component. Return 0 on 100 success, -1 for errors. */ 101 extern int lremovexattr (const char *__path, const char *__name) __THROW; 102 103 /* Remove the attribute NAME from the file descriptor FD. Return 0 on 104 success, -1 for errors. */ 105 extern int fremovexattr (int __fd, const char *__name) __THROW; 106 107 __END_DECLS 108 109 #endif /* sys/xattr.h */ 110