fgetattr man page on SmartOS

Man page or keyword search:  
man Server   16655 pages
apropos Keyword Search (all sections)
Output format
SmartOS logo
[printable version]

FGETATTR(3C)							  FGETATTR(3C)

NAME
       fgetattr,   fsetattr,   getattrat,  setattrat  -	 get  and  set	system
       attributes

SYNOPSIS
       #include <fcntl.h>
       #include <sys/types.h>
       #include <attr.h>
       #include <sys/nvpair.h>

       int fgetattr(int fildes, xattr_view_t view,nvlist_t **response);

       int fsetattr(int fildes, xattr_view_t view,nvlist_t *request)

       int getattrat(int fildes, xattr_view_t view, const char *filename,
	    nvlist_t **response);

       int setattrat(int fildes, xattr_view_t view, const char *filename,
	    nvlist_t *request);

DESCRIPTION
       The fgetattr() function obtains an nvlist of system attribute  informa‐
       tion about an open file object specified by the file descriptor fildes,
       obtained from a successful  open(2),  creat(2),	dup(2),	 fcntl(2),  or
       pipe(2) function.

       The getattrat() function first opens the extended attribute file speci‐
       fied by filename in the already opened file directory object  specified
       by  fildes.  It then retrieves an nvlist of system attributes and their
       values from filename.

       The response argument is allocated by either fgetattr() or getattrat().
       The  application	 must call nvlist_free(3NVPAIR) to deallocate the mem‐
       ory.

       Upon successful completion, the nvlist will contain one nvpair for each
       of  the	system attributes associated with view.	 The list of views and
       the attributes associated with each view are  listed  below.   Not  all
       underlying  file	 systems  support  all	views  and all attributes. The
       nvlist will not contain an nvpair for any attribute  not	 supported  by
       the underlying filesystem.

       The fsetattr() function uses the nvlist pointed to by request to update
       one or more of the system attribute's information about	an  open  file
       object  specified  by  the file descriptor fildes, obtained from a suc‐
       cessful open(), creat(), dup(), fcntl(), or pipe() function. The setat‐
       trat()  function	 first	opens the extended attribute file specified by
       filename in the already	opened	file  directory	 object	 specified  by
       fildes.	It then uses the nvlist pointed to by request to update one or
       more of the system attributes of filename.

       If completion is not successful then no system attribute information is
       updated.

       The  following  chart  lists the supported views, attributes, and  data
       types for each view:

	       View		 Attribute	      Data type
       ──────────────────────────────────────────────────────────────
       XATTR_VIEW_READONLY    A_FSID		 uint64_value
			      A_OPAQUE		 boolean_value
			      A_AV_SCANSTAMP	 uint8_array[]
       XATTR_VIEW_READWRITE   A_READONLY	 boolean_value
			      A_HIDDEN		 boolean_value
			      A_SYSTEM		 boolean_value
			      A_ARCHIVE		 boolean_value
			      A_CRTIME		 uint64_array[2]
			      A_NOUNLINK	 boolean_value
			      A_IMMUTABLE	 boolean_value
			      A_APPENDONLY	 boolean_value
			      A_NODUMP		 boolean_value
			      A_AV_QUARANTINED	 boolean_value
			      A_AV_MODIFIED	 boolean_value
			      A_OWNERSID	 nvlist composed  of
						 uint32_value	 and
						 string
			      A_GROUPSID	 nvlist composed  of
						 uint32_value	 and
						 string

RETURN VALUES
       Upon successful completion, 0 is returned. Otherwise, -1	  is  returned
       and errno is set to indicate the error.

ERRORS
       The  fgetattr(),	 getattrat(),  fsetattr(),  and setattrat(), functions
       will fail if:

       EBADF
		 The fildes argument is not a valid open file descriptor.

       EINVAL
		 The underlying file system does  not  support	extended  file
		 attributes.

       EIO
		 An error occurred while reading from the file system.

       The getattrat() and setattrat() functions will fail if:

       EACCES
		 Search permission or write permission for filename is denied.

       ENOENT
		 The  filename	argument does not name an existing file in the
		 extended attribute directory represented by fildes.

       EPERM
		 There are insufficient privileges to manipulate attributes.

EXAMPLES
       Example 1 Obtain an nvlist of readonly system attributes	 for  an  open
       file object.

       Use  fgetattr()	to  obtain an nvlist of the readonly system attributes
       for the open file object represented by file descriptor fildes.

	 #include <fcntl.h>
	 #include <sys/types.h>
	 #include <attr.h>
	 #include <sys/nvpair.h>

	 nvlist_t *response;
	 nvpair_t *pair = NULL;

	 if (fgetattr(fildes, XATTR_VIEW_READONLY, &response)) {
		      exit(1);
	 }
	 while (pair = nvlist_next_nvpair(response, pair)) {
	     .
	     .
	     .
	 }
	 nvlist_free(response);

       Example 2 Set the A_READONLY system attribute on an open file object.

       Use fsetattr() to set the A_OPAQUE system attribute on  the  open  file
       object represented by file descriptor fildes.

	 nvlist_t *request;
	 nvpair_t *pair = NULL;

	 if (nvlist_alloc(&request, NV_UNIQUE_NAME, 0) != 0) {
		     exit(1);
	 }
	 if (nvlist_add_boolean_value(request, A_READONLY, 1) != 0) {
		     exit(1);
	 }
	 if (fsetattr(fildes, XATTR_VIEW_READWRITE, request)) {
		     exit(1);
	 }

       Example	3  Obtain  an nvlist of the read/write system attributes for a
       file.

       Use getattrat() to obtain an nvlist of the read/write system attributes
       for the file named xattrfile in the extended attribute directory of the
       open file represented by file descriptor fildes.

	 nvlist_t *response;
	 nvpair_t *pair = NULL;

	 if (getattrat(fildes, XATTR_VIEW_READWRITE, "file", &response)) {
		      exit(1);
	 }
	 while (pair = nvlist_next_nvpair(response, pair)) {
	     .
	     .
	     .
	 }
	 nvlist_free(response);

       Example 4 Set the A_APPENDONLY system attribute on a file.

       Use setattrat() to set the A_APPENDONLY system attribute	 on  the  file
       named  file in the extended attribute directory of the open file repre‐
       sented by file descriptor fildes.

	 nvlist_t *request;
	 nvpair_t *pair = NULL;

	 if (nvlist_alloc(&request, NV_UNIQUE_NAME, 0) != 0) {
		     exit(1);
	 }
	 if (nvlist_add_boolean_value(request, A_APPENDONLY, 1) != 0) {
		     exit(1);
	 }
	 if (setattrat(fildes, XATTR_VIEW_READWRITE, "file", request)) {
		     exit(1);
	      }

ATTRIBUTES
       See attributes(5) for descriptions of the following attributes:

       ┌────────────────────┬─────────────────┐
       │  ATTRIBUTE TYPE    │ ATTRIBUTE VALUE │
       ├────────────────────┼─────────────────┤
       │Interface Stability │ Committed	      │
       ├────────────────────┼─────────────────┤
       │MT-Level	    │ Safe	      │
       └────────────────────┴─────────────────┘

SEE ALSO
       creat(2), dup(2), fcntl(2),  fstat(2),  fstatat(2),  open(2),  pipe(2),
       libnvpair(3LIB), attributes(5), fsattr(5)

				  Aug 4, 2008			  FGETATTR(3C)
[top]

List of man pages available for SmartOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net