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; |
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; |
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) __THROW; |
56 | |
57 | /* Get the attribute NAME of the file pointed to by PATH to VALUE (which is |
58 | SIZE bytes long). Return 0 on success, -1 for errors. */ |
59 | extern ssize_t getxattr (const char *__path, const char *__name, |
60 | void *__value, size_t __size) __THROW; |
61 | |
62 | /* Get the attribute NAME of the file pointed to by PATH to VALUE (which is |
63 | SIZE bytes long), not following symlinks for the last pathname component. |
64 | Return 0 on success, -1 for errors. */ |
65 | extern ssize_t lgetxattr (const char *__path, const char *__name, |
66 | void *__value, size_t __size) __THROW; |
67 | |
68 | /* Get the attribute NAME of the file descriptor FD to VALUE (which is SIZE |
69 | bytes long). Return 0 on success, -1 for errors. */ |
70 | extern ssize_t fgetxattr (int __fd, const char *__name, void *__value, |
71 | size_t __size) __THROW; |
72 | |
73 | /* List attributes of the file pointed to by PATH into the user-supplied |
74 | buffer LIST (which is SIZE bytes big). Return 0 on success, -1 for |
75 | errors. */ |
76 | extern ssize_t listxattr (const char *__path, char *__list, size_t __size) |
77 | __THROW; |
78 | |
79 | /* List attributes of the file pointed to by PATH into the user-supplied |
80 | buffer LIST (which is SIZE bytes big), not following symlinks for the |
81 | last pathname component. Return 0 on success, -1 for errors. */ |
82 | extern ssize_t llistxattr (const char *__path, char *__list, size_t __size) |
83 | __THROW; |
84 | |
85 | /* List attributes of the file descriptor FD into the user-supplied buffer |
86 | LIST (which is SIZE bytes big). Return 0 on success, -1 for errors. */ |
87 | extern ssize_t flistxattr (int __fd, char *__list, size_t __size) |
88 | __THROW; |
89 | |
90 | /* Remove the attribute NAME from the file pointed to by PATH. Return 0 |
91 | on success, -1 for errors. */ |
92 | extern int removexattr (const char *__path, const char *__name) __THROW; |
93 | |
94 | /* Remove the attribute NAME from the file pointed to by PATH, not |
95 | following symlinks for the last pathname component. Return 0 on |
96 | success, -1 for errors. */ |
97 | extern int lremovexattr (const char *__path, const char *__name) __THROW; |
98 | |
99 | /* Remove the attribute NAME from the file descriptor FD. Return 0 on |
100 | success, -1 for errors. */ |
101 | extern int fremovexattr (int __fd, const char *__name) __THROW; |
102 | |
103 | __END_DECLS |
104 | |
105 | #endif /* sys/xattr.h */ |
106 | |