ATTR_GET(3)          XFS Compatibility API          ATTR_GET(3)





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 associ-
                        ated   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 value-
                        length  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   {MAX-
                        PATHLEN},  or  a  pathname component is
                        longer than {MAXNAMELEN}.

       attr_getf will fail if:

       [ENOATTR]      The attribute name given is  not  associ-
                      ated   with   the   indicated  filesystem
                      object.

       [E2BIG]        The value of the given attribute  is  too
                      large  to fit into the buffer.  The inte-
                      ger that the valuelength argument  points
                      to  has  been modified to show the actual
                      numnber 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.

SEE ALSO
       attr(1), attr_multi(3), attr_remove(3), and attr_set(3).



Dec 2001              Extended Attributes           ATTR_GET(3)
