перечислить имена пользовательских атрибутов объекта файловой системы  (list the names of the user attributes of a filesystem object)
  
Имя (Name)
attr_list, attr_listf - list the names of the user attributes of
       a filesystem object
Синопсис C (C Synopsis)
#include <attr/attributes.h>
       int attr_list (const char ∗path, char ∗buffer,
                      const int buffersize, int flags,
                      attrlist_cursor_t ∗cursor);
       int attr_listf (int fd, char ∗buffer,
                       const int buffersize, int flags,
                       attrlist_cursor_t ∗cursor);
Описание (Description)
The attr_list and attr_listf functions provide a way to list the
       existing attributes of a filesystem object.
       Path points to a path name for a filesystem object, and fd refers
       to the file descriptor associated with a file.  The buffer will
       be filled with a structure describing at least a portion of the
       attributes associated with the given filesystem object.  Buffer
       will be overwritten with an attrlist_t structure containing a
       list of the attributes associated with that filesystem object, up
       to a maximum of buffersize bytes.  The buffer must be
       sufficiently large to hold the appropriate data structures plus
       at least one maximally sized attribute name, but cannot be more
       than ATTR_MAX_VALUELEN (currently 64KB) bytes in length.
       The contents of an attrlist_t structure include the following
       members:
          int32_t al_count; /∗ number of entries in attrlist ∗/
          int32_t al_more; /∗ T/F: more attrs (do syscall again) ∗/
          int32_t al_offset[1]; /∗ byte offsets of attrs [var-sized] ∗/
       The al_count field shows the number of attributes represented in
       this buffer, which is also the number of elements in the
       al_offset array.  The al_more field will be non-zero if another
       attr_list call would result in more attributes.  The al_offset
       array contains the byte offset within the buffer of the structure
       describing each of the attributes, an attrlist_ent_t structure.
       The ATTR_ENTRY(buffer, index) macro will help with decoding the
       list.  It takes a pointer to the buffer and an index into the
       al_offset array and returns a pointer to the corresponding
       attrlist_ent_t structure.
       The contents of an attrlist_ent_t structure include the following
       members:
          uint32_t a_valuelen; /∗ number bytes in value of attr ∗/
          char a_name[]; /∗ attr name (NULL terminated) ∗/
       The a_valuelen field shows the size in bytes of the value
       associated with the attribute whose name is stored in the a_name
       field.  The name is a NULL terminated string.
       Note that the value of the attribute cannot be obtained through
       this interface, the attr_get call should be used to get the
       value.  The attr_list interface tells the calling process how
       large of a buffer it must have in order to get the attribute´s
       value.
       The flags argument can contain the following symbols bitwise
       OR´ed together:
       ATTR_ROOT
              List the attributes that are 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_list function call.  The default is to follow
              symbolic links.
       The cursor argument is a pointer to an opaque data structure that
       the kernel uses to track the calling process´s position in the
       attribute list.  The only valid operations on a cursor are to
       pass it into an attr_list function call or to zero it out.  It
       should be zero´ed out before the first attr_list call.  Note that
       multi-threaded applications may keep more than one cursor in
       order to serve multiple contexts, ie: the attr_list call is
       "thread-safe".
       attr_list will fail if one or more of the following are true:
       [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, or the buffer was too small or too
              large.
       [EFAULT]
              Either Path or buffer points outside the allocated address
              space of the process, or buffer or bufsize are not 32bit
              aligned.
       [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}.
       [ENOATTR]
              attribute does not exist for this file.
       attr_listf will fail if:
       [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, or
              the buffer was too small or too large.
       [EFAULT]
              Either Path or buffer points outside the allocated address
              space of the process, or buffer or bufsize are not 32bit
              aligned.
       [EBADF]
              Fd does not refer to a valid descriptor.
Диагностика (Diagnostic)
Upon successful completion, a value of 0 is returned.  Otherwise,
       a value of -1 is returned and errno is set to indicate the error.
Смотри также (See also)
attr(1), attr_multi(3), attr_remove(3), attr_set(3)