# attr_get

## NAME



           attr_get, attr_getf - get the value of a user attribute of a
           filesystem object
    


## C SYNOPSIS



           **#include <attr/attributes.h>**
    
           **int attr_get (const char ***_path_**, const char ***_attrname_**,**
                         **char ***_attrvalue_**, int ***_valuelength_**, int** _flags_**);**
    
           **int attr_getf (int** _fd_**, const char ***_attrname_**,**
                          **char ***_attrvalue_**, int ***_valuelength_**, int** _flags_**);**
    


## DESCRIPTION



           The **attr_get** and **attr_getf** functions provide a way to retrieve the
           value of an attribute.
    
           _Path_ points to a path name for a filesystem object, and _fd_ refers
           to the file descriptor associated with a file.  If the attribute
           _attrname_ exists, the value associated with it will be copied into
           the _attrvalue_ buffer.  The _valuelength_ argument is an input/output
           argument that on the call to **attr_get** should contain the maximum
           size of attribute value the process is willing to accept.  On
           return, the _valuelength_ will have been modified to show the actual
           size of the attribute value returned.  The _flags_ argument can
           contain the following symbols bitwise OR'ed together:
    
           ATTR_ROOT
                  Look for _attrname_ in the **root** address space, not in the
                  **user** address space.  (limited to use by super-user only)
    
           ATTR_DONTFOLLOW
                  Do not follow symbolic links when resolving a _path_ on an
                  **attr_get** function call.  The default is to follow symbolic
                  links.
    
           **attr_get** will fail if one or more of the following are true:
    
           [ENOATTR]
                  The attribute name given is not associated with the
                  indicated filesystem object.
    
           [E2BIG]
                  The value of the given attribute is too large to fit into
                  the buffer.  The integer that the _valuelength_ argument
                  points to has been modified to show the actual number of
                  bytes that would be required to store the value of that
                  attribute.
    
           [ENOENT]
                  The named file does not exist.
    
           [EPERM]
                  The effective user ID does not match the owner of the file
                  and the effective user ID is not super-user.
    
           [ENOTDIR]
                  A component of the path prefix is not a directory.
    
           [EACCES]
                  Search permission is denied on a component of the path
                  prefix.
    
           [EINVAL]
                  A bit was set in the _flag_ argument that is not defined for
                  this system call.
    
           [EFAULT]
                  _Path, attrname, attrvalue,_ or _valuelength_ points outside
                  the allocated address space of the process.
    
           [ELOOP]
                  A path name lookup involved too many symbolic links.
    
           [ENAMETOOLONG]
                  The length of _path_ exceeds {_MAXPATHLEN_}, or a pathname
                  component is longer than {_MAXNAMELEN_}.
    
           **attr_getf** will fail if:
    
           [ENOATTR]
                  The attribute name given is not associated with the
                  indicated filesystem object.
    
           [E2BIG]
                  The value of the given attribute is too large to fit into
                  the buffer.  The integer that the _valuelength_ argument
                  points to has been modified to show the actual number of
                  bytes that would be required to store the value of that
                  attribute.
    
           [EINVAL]
                  A bit was set in the _flag_ argument that is not defined for
                  this system call, or _fd_ refers to a socket, not a file.
    
           [EFAULT]
                  _Attrname, attrvalue,_ or _valuelength_ points outside the
                  allocated address space of the process.
    
           [EBADF]
                  _Fd_ does not refer to a valid descriptor.
    


## DIAGNOSTICS



           On success, zero is returned.  On error, -1 is returned, and _errno_
           is set appropriately.
    


* * *