summaryrefslogtreecommitdiff
path: root/man/man3/attr_set.3
diff options
context:
space:
mode:
Diffstat (limited to 'man/man3/attr_set.3')
-rw-r--r--man/man3/attr_set.3215
1 files changed, 215 insertions, 0 deletions
diff --git a/man/man3/attr_set.3 b/man/man3/attr_set.3
new file mode 100644
index 0000000..c23c523
--- /dev/null
+++ b/man/man3/attr_set.3
@@ -0,0 +1,215 @@
+.TH ATTR_SET 3
+.SH NAME
+attr_set, attr_setf \- set the value of a user attribute of a filesystem object
+.SH C SYNOPSIS
+.PP
+.sp
+.nf
+.B #include <sys/attributes.h>
+.sp
+.B "int attr_set (const char \(**path, const char \(**attrname, "
+.B " const char \(**attrvalue, const int valuelength,"
+.B " int flags);"
+.PP
+.B "int attr_setf (int fd, const char \(**attrname, "
+.B " const char \(**attrvalue, const int valuelength,"
+.B " int flags);"
+.Op
+.SH DESCRIPTION
+The
+.I attr_set
+and
+.I attr_setf
+functions provide a way to create attributes and set/change their values.
+.P
+.I Path\^
+points to a path name for a filesystem object, and
+.I fd\^
+refers to the file descriptor associated with a file.
+If the attribute
+.I attrname
+does not exist, an attribute with the given name and value will be created
+and associated with that indicated filesystem object.
+If an attribute with that name already exists on that filesystem object,
+the existing value is replaced with the new value given in this call.
+The new attribute value is copied from the
+.I attrvalue
+buffer for a total of
+.I valuelength
+bytes.
+The
+.I flags
+argument can contain the following symbols bitwise OR\'ed together:
+.TP
+.SM
+\%ATTR_ROOT
+Look for
+.I attrname
+in the
+.B root
+address space, not in the
+.B user
+address space.
+(limited to use by super-user only)
+.TP
+.SM
+\%ATTR_DONTFOLLOW
+Do not follow symbolic links when resolving a
+.I path
+on an
+.I attr_set
+function call.
+The default is to follow symbolic links.
+.TP
+.SM
+\%ATTR_CREATE
+Return an error (EEXIST) if an attribute of the given name
+already exists on the indicated filesystem object,
+otherwise create an attribute with the given name and value.
+This flag is used to implement a pure create operation,
+without this flag
+.I attr_set
+will create the attribute if it does not already exist.
+An error (EINVAL) will be returned if both ATTR_CREATE and ATTR_REPLACE
+are set in the same call.
+.TP
+.SM
+\%ATTR_REPLACE
+Return an error (ENOATTR) if an attribute of the given name
+does not already exist on the indicated filesystem object,
+otherwise replace the existing attribute\'s value with the given value.
+This flag is used to implement a pure replacement operation,
+without this flag
+.I attr_set
+will create the attribute if it does not already exist.
+An error (EINVAL) will be returned if both ATTR_CREATE and ATTR_REPLACE
+are set in the same call.
+.PP
+.I attr_set
+will fail if one or more of the following are true:
+.TP 17
+.SM
+\%[ENOATTR]
+The attribute name given is not associated with the indicated
+filesystem object and the ATTR_REPLACE flag bit was set.
+.TP
+.SM
+\%[E2BIG]
+The value of the given attribute is too large, it exceeds the
+maximum allowable size of an attribute value.
+.TP
+.SM
+\%[EEXIST]
+The attribute name given is already associated with the indicated
+filesystem object and the ATTR_CREATE flag bit was set.
+.TP
+.SM
+\%[ENOENT]
+The named file does not exist.
+.TP
+.SM
+\%[EPERM]
+The effective user
+.SM ID
+does not match the owner of the file
+and the effective user
+.SM ID
+is not super-user.
+.TP
+.SM
+\%[ENOTDIR]
+A component of the
+path prefix
+is not a directory.
+.TP
+.SM
+\%[EACCES]
+Search permission is denied on a
+component of the
+path prefix.
+.TP
+.SM
+\%[EINVAL]
+A bit was set in the
+.I flag
+argument that is not defined for this system call,
+or both the ATTR_CREATE and ATTR_REPLACE flags bits were set.
+.TP
+.SM
+\%[EFAULT]
+.I Path,
+.I attrname,
+or
+.I attrvalue
+points outside the allocated address space of the process.
+.TP
+.SM
+\%[ELOOP]
+A path name lookup involved too many symbolic links.
+.TP
+.SM
+\%[ENAMETOOLONG]
+The length of
+.I path
+exceeds
+.SM
+.RI { MAXPATHLEN },
+or a pathname component is longer than
+.SM
+.RI { MAXNAMELEN }.
+.PP
+.I attr_setf\^
+will fail if:
+.TP 15
+.SM
+\%[ENOATTR]
+The attribute name given is not associated with the indicated
+filesystem object and the ATTR_REPLACE flag bit was set.
+.TP
+.SM
+\%[E2BIG]
+The value of the given attribute is too large, it exceeds the
+maximum allowable size of an attribute value.
+.TP
+.SM
+\%[EEXIST]
+The attribute name given is already associated with the indicated
+filesystem object and the ATTR_CREATE flag bit was set.
+.TP
+.SM
+\%[EINVAL]
+A bit was set in the
+.I flag
+argument that is not defined for this system call,
+or both the ATTR_CREATE and ATTR_REPLACE flags bits were set, or
+.I fd\^
+refers to a socket, not a file.
+.TP
+.SM
+\%[EFAULT]
+.I Attrname,
+or
+.I attrvalue
+points outside the allocated address space of the process.
+.TP
+.SM
+\%[EBADF]
+.I Fd\^
+does not refer to a valid descriptor.
+.SH "SEE ALSO"
+attr(1),
+.br
+attrctl(2),
+.br
+attr_get(3), attr_getf(3),
+.br
+attr_list(3), attr_listf(3)
+.br
+attr_multi(3), attr_multif(3)
+.br
+attr_remove(3), attr_removef(3),
+.SH "DIAGNOSTICS"
+Upon successful completion, a value of 0 is returned.
+Otherwise, a value of \-1 is returned and
+.I errno\^
+is set to indicate the error.