[Patch] Configure broken for Solaris 2.6 (PR#12014)

David Collier-Brown davecb at Canada.Sun.COM
Thu Dec 17 13:00:42 GMT 1998

Jeremy Allison wrote:
> Well the autoconf tests look for *any* way of getting disk free
> space.
> These are : 
> statvfs64 - 64 bit statvfs
> statvfs - SVR4 statvfs

	those we have:  2.5.1 has statvfs
			2.6 has statvfs and statvfs64
			7 and later have both
Existing Interface   64-bit Definition        Header
------------------   -----------------        ------
int statvfs(...,     int statvfs64(...,       <sys/statvfs.h>
 struct statvfs *);   struct statvfs64 *);

	statfs should, in my opinion, have been a
	standardized function, returning the same
	structure on all variant of Unix.  Alas,
	it had already mutated, so we get a standard
	statvfs/fstatvfs, but almost no-one follows the
	standard (:-()

David Collier-Brown,  | Always do right. This will gratify some people
185 Ellerslie Ave.,   | and astonish the rest.        -- Mark Twain
Willowdale, Ontario   | http://java.science.yorku.ca/~davecb
Work: (905) 477-0437, Home: (416) 223-8968, Email: davecb at canada.sun.com
-------------- next part --------------

System Calls					       statvfs(2)

     statvfs, fstatvfs - get file system information

     #include <sys/types.h>
     #include <sys/statvfs.h>

     int statvfs(const char *path, struct statvfs *buf);

     int fstatvfs(int fildes, struct statvfs *buf);

     The statvfs function returns a "generic superblock" describ-
     ing a file	system;	it can be  used	 to  acquire  information
     about  mounted  file systems.  The	buf argument is	a pointer
     to	a structure (described below) that is filled by	the func-

     The  path	argument  should name a	file that resides on that
     file system. The file system type is known	to the	operating
     system.  Read,  write,  or	 execute permission for	the named
     file is not required, but all directories listed in the path
     name leading to the file must be searchable.

     The statvfs structure pointed to by buf includes the follow-
     ing members:
     u_long		  f_bsize;		 /* preferred file system block	size
     u_long		  f_frsize;		 /* fundamental	filesystem block
						 (size if supported) */
     fsblkcnt_t		  f_blocks;		 /* total # of blocks on file system
						 in units
						 of f_frsize */
     fsblkcnt_t		  f_bfree;		 /* total # of free blocks */
     fsblkcnt_t		  f_bavail;		 /* # of free blocks avail  to	non-
						 super-user */
     fsfilcnt_t		  f_files;		 /*  total  # of file nodes (inodes)
     fsfilcnt_t		  f_ffree;		 /* total # of free file nodes */
     fsfilcnt_t		  f_favail;		 /* # of inodes	avail to  non-super-
     u_long		  f_fsid;		 /* file system	id (dev	for now) */
     char		  f_basetype[FSTYPSZ];	 /*   target fs	type name, null-ter-
						 minated */
     u_long		  f_flag;		 /* bit	mask of	flags */
     u_long		  f_namemax;		 /* maximum file name length */
     char		  f_fstr[32];		 /* file system	specific string	*/
     u_long		  f_filler[16];		 /* reserved for future	expansion */

     The f_basetype member contains a null-terminated FSType name
     of	the mounted target.

SunOS 5.7	     Last change: 28 Jan 1998			1

System Calls					       statvfs(2)

     The following values can be returned in the f_flag	field:
     ST_RDONLY		  0x01			/* read-only file system */
     ST_NOSUID		  0x02			/* does	not support setuid/set-
						gid semantics */
     ST_NOTRUNC		  0x04			/* does	not truncate file names
						longer than {NAME_MAX}*/

     The fstatvfs function is similar to statvfs, except that the
     file  named  by  path in statvfs is instead identified by an
     open file	descriptor  fildes  obtained  from  a  successful
     open(2),  creat(2),  dup(2),  fcntl(2),  or pipe(2) function

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

     The statvfs and fstatvfs functions	will fail if:

     EOVERFLOW One  of the values to be	returned cannot	be repre-
	       sented correctly	in the structure  pointed  to  by

     The statvfs function will fail if:

     EACCES    Search  permission is denied on a component of the
	       path prefix.

     EFAULT    The path	or buf	argument  points  to  an  illegal

     EINTR     A  signal  was  caught during the execution of the
	       statvfs function.

     EIO       An I/O error occurred while reading the file  sys-

     ELOOP     Too many	symbolic links were encountered	in trans-
	       lating path.

     EMULTIHOP Components of path  require  hopping  to	 multiple
	       remote  machines	 and  file  system  type does not
	       allow it.

	       The length of a path component exceeds  {NAME_MAX}
	       characters,  or	the  length  of	 path The exceeds
	       {PATH_MAX} characters.

     ENOENT    Either a	component of the path prefix or	the  file
	       referred	to by path does	not exist.

SunOS 5.7	     Last change: 28 Jan 1998			2

System Calls					       statvfs(2)

     ENOLINK   The  path  argument points to a remote machine and
	       the link	to that	machine	is no longer active.

     ENOTDIR   A component of the path prefix of path  is  not	a

     The fstatvfs function will	fail if:

     EBADF     The  fildes  argument is	not an open file descrip-

     EFAULT    The buf argument	points to an illegal address.

     EINTR     A signal	was caught during the  execution  of  the
	       fstatvfs	function.

     EIO       An  I/O error occurred while reading the	file sys-

     The statvfs and fstatvfs functions	have transitional  inter-
     faces for 64-bit file offsets.  See lf64(5).

     chmod(2),	chown(2),  creat(2),  dup(2),  fcntl(2), link(2),
     mknod(2), open(2),	 pipe(2),  read(2),  time(2),  unlink(2),
     utime(2), write(2), lf64(5)

     The  values  returned for f_files,	f_ffree, and f_favail may
     not be valid for NFS mounted file systems.

SunOS 5.7	     Last change: 28 Jan 1998			3

More information about the samba-technical mailing list