diff options
Diffstat (limited to 'man/man3/attr_set.3')
-rw-r--r-- | man/man3/attr_set.3 | 215 |
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. |