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
30enum
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. */
41extern 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. */
48extern 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. */
54extern 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. */
60extern 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. */
67extern 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. */
73extern 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. */
80extern 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. */
86extern 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. */
91extern 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. */
96extern 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. */
101extern 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. */
105extern int fremovexattr (int __fd, const char *__name) __THROW;
106
107__END_DECLS
108
109#endif /* sys/xattr.h */
110

source code of glibc/misc/sys/xattr.h