SETXATTR(2)               System calls              SETXATTR(2)





NAME
       setxattr,   lsetxattr,   fsetxattr  -  set  an  extended
       attribute value

SYNOPSIS
       #include <sys/types.h>
       #include <attr/xattr.h>

       int setxattr (const char *path, const char *name,
                       const void *value, size_t size, int flags);
       int lsetxattr (const char *path, const char *name,
                       const void *value, size_t size, int flags);
       int fsetxattr (int filedes, const char *name,
                       const void *value, size_t size, int flags);

DESCRIPTION
       Extended attributes are name:value pairs associated with
       inodes  (files,  directories,  symlinks, etc).  They are
       extensions to the normal attributes which are associated
       with  all  inodes in the system (i.e. the stat(2) data).
       A complete overview of extended attributes concepts  can
       be found in attr(5).

       setxattr  sets the value of the extended attribute iden-
       tified by name and associated with the given path in the
       filesystem.  The size of the value must be specified.

       lsetxattr  is  identical to setxattr, except in the case
       of a symbolic link, where the extended attribute is  set
       on the link itself, not the file that it refers to.

       fsetxattr  is  identical  to setxattr, only the extended
       attribute is set on the open file pointed to by  filedes
       (as returned by open(2)) in place of path.

       An  extended  attribute name is a simple NULL-terminated
       string.  The name includes a namespace  prefix  -  there
       may  be  several, disjoint namespaces associated with an
       individual inode.  The value of an extended attribute is
       a chunk of arbitrary textual or binary data of specified
       length.

       The flags parameter can be used to refine the  semantics
       of the operation.  XATTR_CREATE specifies a pure create,
       which fails  if  the  named  attribute  exists  already.
       XATTR_REPLACE  specifies a pure replace operation, which
       fails if the named attribute does not already exist.  By
       default  (no flags), the extended attribute will be cre-
       ated if need be, or will simply replace the value if the
       attribute exists.

RETURN VALUE
       On  success,  zero  is  returned.   On  failure,  -1  is
       returned and errno is set appropriately.

       If XATTR_CREATE is specified, and the  attribute  exists
       already,  errno  is  set to EEXIST.  If XATTR_REPLACE is
       specified, and the attribute does not  exist,  errno  is
       set to ENOATTR.

       If  there  is  insufficient space remaining to store the
       extended attribute, errno is set to  either  ENOSPC,  or
       EDQUOT if quota enforcement was the cause.

       If extended attributes are not supported by the filesys-
       tem, or are disabled, errno is set to ENOTSUP.

       The errors documented for the stat(2)  system  call  are
       also applicable here.

AUTHORS
       Andreas  Gruenbacher,  <a.gruenbacher@computer.org>  and
       the SGI XFS development  team,  <linux-xfs@oss.sgi.com>.
       Please  send  any  bug  reports  or  comments  to  these
       addresses.

SEE ALSO
       getfattr(1), setfattr(1), open(2), stat(2), getxattr(2),
       listxattr(2), removexattr(2), and attr(5).



Dec 2001              Extended Attributes           SETXATTR(2)
