1 | /* Copyright (C) 2002-2024 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 | |