*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->IRIX man pages -> standard/attr_set (2)              
Title
Content
Arch
Section
 

f(2)

Contents


ATTR_SET(2)							   ATTR_SET(2)


NAME    [Toc]    [Back]

     attr_set, attr_setf - set the value of a user attribute of	a filesystem
     object

C SYNOPSIS    [Toc]    [Back]

     #include <sys/attributes.h>

     int attr_set (const char *path, const char	*attrname,
		   const char *attrvalue, const	int valuelength,
		   int flags);

     int attr_setf (int	fd, const char *attrname,
		    const char *attrvalue, const int valuelength,
		    int	flags);

OVERVIEW    [Toc]    [Back]

     The attr group of system calls implement the ability for a	user to	attach
     name/value	pairs to objects within	the filesystem.

     They could	be used	to store meta-information about	the file.  For example
     "character-set=kanji" could tell a	document browser to use	the Kanji
     character set when	displaying that	document and "thumbnail=..." could
     provide a reduced resolution overview of a	high resolution	graphic	image.

     The names can be up to MAXNAMELEN bytes in	length,	terminated by the
     first 0 byte.  The	intent is that they be printable ASCII (or other
     character set) names for the attribute.

     The values	can be up to ATTR_MAX_VALUELEN (currently 64KB)	of arbitrary
     binary data.

     Attributes	can be attached	to all types of	inodes:	 regular files,
     directories, symbolic links, device nodes,	etc.

     There are 2 disjoint attribute name spaces	associated with	every
     filesystem	object.	 They are the root and user address spaces.  The root
     address space is accessible only to privileged users, and only then by
     specifying	a flag argument	to the function	call.  A privileged user can
     be	either the superuser in	an IRIX	environment, or	a user with
     CAP_DEVICE_MGT capability.	 Other users will not see or be	able to	modify
     attributes	in the root address space.  The	user address space is
     protected by the normal file permissions mechanism, so the	owner of the
     file can decide who is able to see	and/or modify the value	of attributes
     on	any particular file.

     Attributes	are currently fully supported only in the XFS and CXFS
     filesystem	types.	Other filesystem types may provide a partial
     implementation.







									Page 1






ATTR_SET(2)							   ATTR_SET(2)



DESCRIPTION
     The attr_set and attr_setf	functions provide a way	to create attributes
     and set/change their values.

     Path points to a path name	for a filesystem object, and fd	refers to the
     file descriptor associated	with a file.  If the attribute 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	attrvalue buffer for a total of	valuelength bytes.
     The flags argument	can contain the	following symbols bitwise OR'ed
     together:

     ATTR_ROOT
	  Look for attrname 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_set
	  function call.  The default is to follow symbolic links.

     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 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.

     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
	  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.

     attr_set will fail	if one or more of the following	are true:

     [ENOATTR]	      The attribute name given is not associated with the
		      indicated	filesystem object and the ATTR_REPLACE flag
		      bit was set.

     [E2BIG]	      The value	of the given attribute is too large, it
		      exceeds the maximum allowable size of an attribute
		      value.






									Page 2






ATTR_SET(2)							   ATTR_SET(2)



     [EEXIST]	      The attribute name given is already associated with the
		      indicated	filesystem object and the ATTR_CREATE flag bit
		      was set.

     [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 both the	ATTR_CREATE and
		      ATTR_REPLACE flags bits were set.

     [EFAULT]	      Path, attrname, or attrvalue points outside the
		      allocated	address	space of the process.

     [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}.

     attr_setf will fail if:

     [ENOATTR]	    The	attribute name given is	not associated with the
		    indicated filesystem object	and the	ATTR_REPLACE flag bit
		    was	set.

     [E2BIG]	    The	value of the given attribute is	too large, it exceeds
		    the	maximum	allowable size of an attribute value.

     [EEXIST]	    The	attribute name given is	already	associated with	the
		    indicated filesystem object	and the	ATTR_CREATE flag bit
		    was	set.

     [EINVAL]	    A bit was set in the flag argument that is not defined for
		    this system	call, or both the ATTR_CREATE and ATTR_REPLACE
		    flags bits were set, or fd refers to a socket, not a file.

     [EFAULT]	    Attrname, or attrvalue points outside the allocated
		    address space of the process.

     [EBADF]	    Fd does not	refer to a valid descriptor.

SEE ALSO    [Toc]    [Back]

      
      
     attr(1),
     attr_get(2), attr_getf(2),
     attr_list(2), attr_listf(2)



									Page 3






ATTR_SET(2)							   ATTR_SET(2)



     attr_multi(2), attr_multi
,

DIAGNOSTICS    [Toc]    [Back]

     Upon successful completion, a value of 0 is returned.  Otherwise, a value
     of	-1 is returned and errno is set	to indicate the	error.


									PPPPaaaaggggeeee 4444
[ Back ]
 Similar pages
Name OS Title
attr_get IRIX get the value of a user attribute of a filesystem object
attr_remove IRIX remove a user attribute of a filesystem object
attr_list IRIX list the names of the user attributes of a filesystem object
attr_multi IRIX manipulate multiple user attributes on a filesystem object at once
pthread_attr_setname_np Tru64 Change the object name attribute in a thread attributes object
pthread_attr_getname_np Tru64 Obtain the object name attribute in a thread attributes object
getpwent_r Tru64 Access user attribute information in the user database
setpwent Tru64 Access user attribute information in the user database
setpwfile Tru64 Access user attribute information in the user database
endpwent_r Tru64 Access user attribute information in the user database
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service