|Main index||Section 2||Options|
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_set_fd(), extattr_delete_fd(), and extattr_list_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 following arguments are common to all the system calls described here:
|the namespace in which the extended attribute resides; see extattr(9)|
|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.
|The attrnamespace and attrname arguments, or the memory range defined by data and nbytes point outside the process's allocated address space.|
|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:
|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:
|The requested attribute was not defined for this file.|
|A component of the path prefix is not a directory.|
|A component of a pathname exceeded 255 characters, or an entire path name exceeded 1023 characters.|
|A component of the path name that must exist does not exist.|
|Search permission is denied for a component of the path prefix.|
|EXTATTR (2)||January 29, 2008|
|Main index||Section 2||Options|
|“||C isn't that hard: void (*(*f)())() defines f as an array of unspecified size, of pointers to functions that return pointers to functions that return void||”|