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

  man pages->FreeBSD man pages -> VOP_GETATTR (9)              
Title
Content
Arch
Section
 

VOP_ATTRIB(9)

Contents


NAME    [Toc]    [Back]

     VOP_GETATTR, VOP_SETATTR -- get and set attributes on a file or directory

SYNOPSIS    [Toc]    [Back]

     #include <sys/param.h>
     #include <sys/vnode.h>

     int
     VOP_GETATTR(struct vnode *vp, struct vattr *vap, struct ucred *cred,
	 struct thread *td);

     int
     VOP_SETATTR(struct vnode *vp, struct vattr *vap, struct ucred *cred,
	 struct thread *td);

DESCRIPTION    [Toc]    [Back]

     These entry points manipulate various attributes of a file or directory,
     including file permissions, owner, group, size, access time and modification
 time.

     The arguments are:

     vp    the vnode of the file

     vap   the attributes of the file

     cred  the user credentials of the calling process

     td    the thread

     Attributes which are not being modified by VOP_SETATTR() should be set to
     the value VNOVAL; VATTR_NULL() may be used to clear all the values, and
     should generally be used to reset the contents of *vap prior to setting
     specific values.

LOCKS    [Toc]    [Back]

     VOP_GETATTR() expects the vnode to be locked on entry and will leave the
     vnode locked on return.  The lock type can be either shared or exclusive.

     VOP_SETATTR() expects the vnode to be locked on entry and will leave the
     vnode locked on return.  The lock type must be exclusive.

RETURN VALUES    [Toc]    [Back]

     VOP_GETATTR() returns 0 if it was able to retrieve the attribute data via
     *vap, otherwise an appropriate error is returned.	VOP_SETATTR() returns
     zero if the attributes were changed successfully, otherwise an appropriate
 error is returned.

PSEUDOCODE    [Toc]    [Back]

     int
     vop_getattr(struct vnode *vp, struct vattr *vap,
		 struct ucred *cred, struct thread *td)
     {
	 /*
	  * Fill in the contents of *vap with information from
	  * the file system.
	  */
	 ...;

	 return 0;
     }

     int
     vop_setattr(struct vnode *vp, struct vattr *vap,
		 struct ucred *cred, struct thread *td)
     {
	 /*
	  * Check for unsettable attributes.
	  */
	 if ((vap->va_type != VNON) || (vap->va_nlink != VNOVAL) ||
	     (vap->va_fsid != VNOVAL) || (vap->va_fileid != VNOVAL) ||
	     (vap->va_blocksize != VNOVAL) || (vap->va_rdev != VNOVAL) ||
	     ((int)vap->va_bytes != VNOVAL) || (vap->va_gen != VNOVAL)) {
	     return (EINVAL);
	 }

	 if (vap->va_flags != VNOVAL) {
	     /*
	      * Set the immutable and append flags of the file.
	      */
	 }

	 if (vap->va_uid != (uid_t)VNOVAL || vap->va_gid != (gid_t)VNOVAL) {
	     /*
	      * Change owner and/or group of the file.
	      */
	 }

	 if (vap->va_size != VNOVAL) {
	     /*
	      * Truncate the file to the specified size.
	      */
	 }

	 if (vap->va_atime.tv_sec != VNOVAL || vap->va_mtime.tv_sec != VNOVAL) {
	     /*
	      * Change access and/or modification time of file.
	      */
	 }

	 if (vap->va_mode != (mode_t)VNOVAL) {
	     /*
	      * Change permissions of file.
	      */
	 }

	 return 0;
     }

ERRORS    [Toc]    [Back]

     [EPERM]		The file is immutable.

     [EACCES]		The caller does not have permission to modify the file
			or directory attributes.

     [EROFS]		The file system is read-only.

SEE ALSO    [Toc]    [Back]

      
      
     VFS(9), vnode(9), VOP_ACCESS(9)

AUTHORS    [Toc]    [Back]

     This man page was written by Doug Rabson.


FreeBSD 5.2.1			 July 24, 1996			 FreeBSD 5.2.1
[ Back ]
 Similar pages
Name OS Title
add_directory HP-UX (including application-defined attributes) of a directory
remove_directory HP-UX attribute (including application-defined attributes) of a directory
libAF Tru64 Provide Attribute File Library functions to manipulate file attributes
chattr Linux change file attributes on a Linux second extended file system
lsattr Linux list file attributes on a Linux second extended file system
acl_set_fd Tru64 Sets the ACL on the file or directory designated by the file descriptor
rename Tru64 Rename a directory or a file within a file system
fdelproplist Tru64 removes Extended File Attributes from a file
setproplist Tru64 assigns Extended File Attributes to a file
fsetproplist Tru64 assigns Extended File Attributes to a file
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service