diff options
author | Nathan Scott <nathans@sgi.com> | 2002-03-11 23:42:35 +0000 |
---|---|---|
committer | Nathan Scott <nathans@sgi.com> | 2002-03-11 23:42:35 +0000 |
commit | 84233d472fbea2750199c9785a3b28a079551905 (patch) | |
tree | 57b9f873ecab86d2ea58d1f06a562d2ed5ae3b9e /man/man3 | |
parent | 659175e0055fff18ebf5505ab1963dd00b8316a8 (diff) | |
download | attr-84233d472fbea2750199c9785a3b28a079551905.tar.gz |
man page and test script updates from Andreas. fix syscall numbering
a/ on sparc (fremovexattr was wrong) and b/ if arch doesn't have numbers
defined yet, handle it cleanly (errno.h missing).
Diffstat (limited to 'man/man3')
-rw-r--r-- | man/man3/Makefile | 11 | ||||
-rw-r--r-- | man/man3/attr_get.3 | 8 | ||||
-rw-r--r-- | man/man3/attr_list.3 | 269 | ||||
-rw-r--r-- | man/man3/attr_multi.3 | 4 | ||||
-rw-r--r-- | man/man3/attr_remove.3 | 4 | ||||
-rw-r--r-- | man/man3/attr_set.3 | 8 |
6 files changed, 292 insertions, 12 deletions
diff --git a/man/man3/Makefile b/man/man3/Makefile index 029c2c4..32a0030 100644 --- a/man/man3/Makefile +++ b/man/man3/Makefile @@ -38,6 +38,7 @@ MAN_SECTION = 3 MAN_PAGES = $(shell echo *.$(MAN_SECTION)) MAN_DEST = $(PKG_MAN_DIR)/man$(MAN_SECTION) LSRCFILES = $(MAN_PAGES) +LDIRT = $(MAN_PAGES:%=%.ps) $(MAN_PAGES:%=%.html) default install : $(MAN_PAGES) @@ -47,3 +48,13 @@ install-dev : default $(INSTALL) -m 755 -d $(MAN_DEST) $(INSTALL_MAN) install-lib: + +html : $(MAN_PAGES:%=%.html) +ps : $(MAN_PAGES:%=%.ps) + +%.$(MAN_SECTION).ps : %.$(MAN_SECTION) + groff -man -T ps $< > $@ + +%.$(MAN_SECTION).html : %.$(MAN_SECTION) + groff -man -T html $< > $@ + diff --git a/man/man3/attr_get.3 b/man/man3/attr_get.3 index bff7c86..f573843 100644 --- a/man/man3/attr_get.3 +++ b/man/man3/attr_get.3 @@ -7,11 +7,11 @@ attr_get, attr_getf \- get the value of a user attribute of a filesystem object .nf .B #include <attr/attributes.h> .sp -.B "int attr_get (const char \(**path, const char \(**attrname, " -.B " char \(**attrvalue, int \(**valuelength, int flags);" +.B "int attr_get (const char **path, const char **attrname, " +.B " char **attrvalue, int **valuelength, int flags);" .PP -.B "int attr_getf (int fd, const char \(**attrname, " -.B " char \(**attrvalue, int \(**valuelength, int flags);" +.B "int attr_getf (int fd, const char **attrname, " +.B " char **attrvalue, int **valuelength, int flags);" .Op .SH DESCRIPTION The diff --git a/man/man3/attr_list.3 b/man/man3/attr_list.3 index e69de29..4037d28 100644 --- a/man/man3/attr_list.3 +++ b/man/man3/attr_list.3 @@ -0,0 +1,269 @@ +.TH ATTR_LIST 3 +.SH NAME +attr_list, attr_listf \- list the names of the user attributes of a filesystem object +.SH C SYNOPSIS +.PP +.sp +.nf +.B #include <attr/attributes.h> +.sp +.B "int attr_list (const char **path, char **buffer, " +.B " const int buffersize, int flags," +.B " attrlist_cursor_t **cursor);" +.PP +.B "int attr_listf (int fd, char **buffer, " +.B " const int buffersize, int flags," +.B " attrlist_cursor_t **cursor);" +.Op +.SH DESCRIPTION +The +.I attr_list +and +.I attr_listf +functions provide a way to list the existing attributes of a +filesystem object. +.P +.I Path\^ +points to a path name for a filesystem object, and +.I fd\^ +refers to the file descriptor associated with a file. +The +.I buffer +will be filled with a structure describing at least a portion of the +attributes associated with the given filesystem object. +.I Buffer +will be overwritten with an \f4attrlist_t\fP structure +containing a list of the attributes associated with +that filesystem object, up to a maximum of +.I buffersize +bytes. +The +.I 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. +.PP +.Op c p a +The contents of an \f4attrlist_t\fP structure include the following members: +.P +.RS 3 +.nf +.ft 4 +.ta 9n 22n +__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] **/ +.ft 1 +.fi +.RE +.PP +The +.I al_count +field shows the number of attributes represented in this buffer, +which is also the number of elements in the +.I al_offset +array. +The +.I al_more +field will be non-zero if another +.I attr_list +call would result in more attributes. +The +.I al_offset +array contains the byte offset within the +.I buffer +of the structure describing each of the attributes, +an \f4attrlist_ent_t\fP structure. +The \f4ATTR_ENTRY(buffer, index)\fP macro will help with decoding the list. +It takes a pointer to the +.I buffer +and an +.I index +into the +.I al_offset +array and returns a pointer to the corresponding +\f4attrlist_ent_t\fP structure. +.PP +The contents of an \f4attrlist_ent_t\fP structure +include the following members: +.P +.RS 3 +.nf +.ft 4 +.ta 9n 22n +u_int32_t a_valuelen; /** number bytes in value of attr **/ +char a_name[]; /** attr name (NULL terminated) **/ +.ft 1 +.fi +.Op +.RE +.PP +The +.I a_valuelen +field shows the size in bytes of the value +associated with the attribute whose name is stored in the +.I a_name +field. +The name is a NULL terminated string. +.PP +Note that the value of the attribute cannot be obtained through +this interface, the +.I attr_get +call should be used to get the value. +The +.I attr_list +interface tells the calling process how large of a buffer +it must have in order to get the attribute\'s value. +.PP +The +.I flags +argument can contain the following symbols bitwise OR\'ed together: +.TP +.SM +\%ATTR_ROOT +List the attributes that are 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_list +function call. +The default is to follow symbolic links. +.PP +The +.I 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 +.I cursor +are to pass it into an +.I attr_list +function call or to zero it out. +It should be zero\'ed out before the first +.I attr_list +call. +Note that multi-threaded applications may keep more than one +.I cursor +in order to serve multiple contexts, ie: the +.I attr_list +call is "thread-safe". +.PP +.I attr_list +will fail if one or more of the following are true: +.TP 17 +.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 the buffer was too small or too large. +.TP +.SM +\%[EFAULT] +Either +.I Path +or +.I buffer +points outside the allocated address space of the process, or +.I buffer +or +.I bufsize +are not 32bit aligned. +.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 }. +.TP +.SM +\%[ENOATTR] +.I attribute\^ +does not exist for this file. +.PP +.I attr_listf\^ +will fail if: +.TP 15 +.SM +\%[EINVAL] +A bit was set in the +.I flag +argument that is not defined for this system call, or +.I fd\^ +refers to a socket, not a file, +or the buffer was too small or too large. +.TP +.SM +\%[EFAULT] +Either +.I Path +or +.I buffer +points outside the allocated address space of the process, or +.I buffer +or +.I bufsize +are not 32bit aligned. +.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_multi(3), attr_multif(3) +.br +attr_remove(3), attr_removef(3), +.br +attr_set(3), attr_set(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. diff --git a/man/man3/attr_multi.3 b/man/man3/attr_multi.3 index 699d218..aaab0b2 100644 --- a/man/man3/attr_multi.3 +++ b/man/man3/attr_multi.3 @@ -7,10 +7,10 @@ attr_multi, attr_multif \- manipulate multiple user attributes on a filesystem o .nf .B #include <attr/attributes.h> .sp -.B "int attr_multi (const char \(**path, attr_multiop_t \(**oplist, " +.B "int attr_multi (const char **path, attr_multiop_t **oplist, " .B " int count, int flags);" .PP -.B "int attr_multif (int fd, attr_multiop_t \(**oplist, " +.B "int attr_multif (int fd, attr_multiop_t **oplist, " .B " int count, int flags);" .Op .SH DESCRIPTION diff --git a/man/man3/attr_remove.3 b/man/man3/attr_remove.3 index 4360c5f..ccae1dd 100644 --- a/man/man3/attr_remove.3 +++ b/man/man3/attr_remove.3 @@ -7,9 +7,9 @@ attr_remove, attr_removef \- remove a user attribute of a filesystem object .nf .B #include <attr/attributes.h> .sp -.B "int attr_remove (const char \(**path, const char \(**attrname, int flags);" +.B "int attr_remove (const char **path, const char **attrname, int flags);" .PP -.B "int attr_removef (int fd, const char \(**attrname, int flags);" +.B "int attr_removef (int fd, const char **attrname, int flags);" .Op .SH DESCRIPTION The diff --git a/man/man3/attr_set.3 b/man/man3/attr_set.3 index 79b1e83..567ba74 100644 --- a/man/man3/attr_set.3 +++ b/man/man3/attr_set.3 @@ -7,12 +7,12 @@ attr_set, attr_setf \- set the value of a user attribute of a filesystem object .nf .B #include <attr/attributes.h> .sp -.B "int attr_set (const char \(**path, const char \(**attrname, " -.B " const char \(**attrvalue, const int valuelength," +.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 attr_setf (int fd, const char **attrname, " +.B " const char **attrvalue, const int valuelength," .B " int flags);" .Op .SH DESCRIPTION |