Main index | Section 2 | Options |
#include <sys/types.h>
#include <sys/extattr.h>
The extattr_get_file() system call retrieves the value of the specified extended attribute into a buffer pointed to by data of size nbytes. The extattr_set_file() system call sets the value of the specified extended attribute to the data described by data. The extattr_delete_file() system call deletes the extended attribute specified. The extattr_list_file() returns a list of attributes present in the requested namespace. Each list entry consists of a single byte containing the length of the attribute name, followed by the attribute name. The attribute name is not terminated by ASCII 0 (nul). The extattr_get_file() and extattr_list_file() calls consume the data and nbytes arguments in the style of read(2); extattr_set_file() consumes these arguments in the style of write(2).
If data is NULL in a call to extattr_get_file() and extattr_list_file() then the size of defined extended attribute data will be returned, rather than the quantity read, permitting applications to test the size of the data without performing a read. The extattr_delete_link(), extattr_get_link(), and extattr_set_link() system calls behave in the same way as their _file counterparts, except that they do not follow symlinks.
The extattr_get_fd(), extattr_delete_fd(), extattr_list_fd(), and extattr_set_fd() calls are identical to their "_file" counterparts except for the first argument. The "_fd" functions take a file descriptor, while the "_file" functions take a path. Both arguments describe a file associated with the extended attribute that should be manipulated. The "_fd" functions can be used with file descriptors opened with the O_PATH flag.
The following arguments are common to all the system calls described here:
attrnamespace | |
the namespace in which the extended attribute resides; see extattr(9) | |
attrname | |
the name of the extended attribute | |
Named extended attribute semantics vary by file system implementing the call. Not all operations may be supported for a particular attribute. Additionally, the format of the data in data is attribute-specific.
For more information on named extended attributes, please see extattr(9).
The extattr_delete_file function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.
[EFAULT] | |
The attrnamespace and attrname arguments, or the memory range defined by data and nbytes point outside the process's allocated address space. | |
[ENAMETOOLONG] | |
The attribute name was longer than EXTATTR_MAXNAMELEN. | |
The extattr_get_fd(), extattr_set_fd(), extattr_delete_fd(), and extattr_list_fd() system calls may also fail if:
[EBADF] | |
The file descriptor referenced by fd was invalid. | |
Additionally, the extattr_get_file(), extattr_set_file(), and extattr_delete_file() calls may also fail due to the following errors:
[ENOATTR] | |
The requested attribute was not defined for this file. | |
[ENOTDIR] | |
A component of the path prefix is not a directory. | |
[ENAMETOOLONG] | |
A component of a pathname exceeded 255 characters, or an entire path name exceeded 1023 characters. | |
[ENOENT] | |
A component of the path name that must exist does not exist. | |
[EACCES] | |
Search permission is denied for a component of the path prefix. | |
EXTATTR (2) | October 11, 2021 |
Main index | Section 2 | Options |
Please direct any comments about this manual page service to Ben Bullock. Privacy policy.
“ | … one of the main causes of the fall of the Roman Empire was that, lacking zero, they had no way to indicate successful termination of their C programs. | ” |
— Robert Firth |