123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
|
/**
* statvfs - VFS File System information structure
* from sys/statvfs.h
* http://www.opengroup.org/onlinepubs/009695399/basedefs/sys/statvfs.h.html
*
* Copyright: Fawzi Mohamed
* License: tango license
* Authors: Fawzi Mohamed
*/
module tango.stdc.posix.sys.statvfs;
import tango.stdc.config;
/+
// possible errno:
public import tango.sys.consts.errno:
EACCES, // (statfs()) Search permission is denied for a component of the path prefix of path. (See also path_resolution(2).)
EBADF, // (fstatfs()) fd is not a valid open file descriptor.
EFAULT, // buf or path points to an invalid address.
EINTR, // This call was interrupted by a signal.
EIO, // An I/O error occurred while reading from the file system.
ELOOP, // (statfs()) Too many symbolic links were encountered in translating path.
ENAMETOOLONG, // (statfs()) path is too long.
ENOENT, // (statfs()) The file referred to by path does not exist.
ENOMEM, // Insufficient kernel memory was available.
ENOSYS, // The file system does not support this call.
ENOTDIR, // (statfs()) A component of the path prefix of path is not a directory.
EOVERFLOW // Some values were too large to be represented in the returned struct.
;
+/
version(darwin) {
struct statvfs_t {
c_ulong f_bsize;
c_ulong f_frsize;
uint f_blocks;
uint f_bfree;
uint f_bavail;
uint f_files;
uint f_ffree;
uint f_favail;
c_ulong f_fsid;
c_ulong f_flag;
c_ulong f_namemax;
}
enum{
ST_RDONLY=0x00000001,
ST_NOSUID=0x00000002,
}
}
version( FreeBSD )
{
alias ulong __fsblkcnt_t, __fsfilcnt_t;
struct statvfs_t {
__fsblkcnt_t f_bavail; /* Number of blocks */
__fsblkcnt_t f_bfree;
__fsblkcnt_t f_blocks;
__fsfilcnt_t f_favail; /* Number of files (e.g., inodes) */
__fsfilcnt_t f_ffree;
__fsfilcnt_t f_files;
c_ulong f_bsize; /* Size of blocks counted above */
c_ulong f_flag;
c_ulong f_frsize; /* Size of fragments */
c_ulong f_fsid; /* Not meaningful */
c_ulong f_namemax; /* Same as pathconf(_PC_NAME_MAX) */
}
enum {
ST_RDONLY = 1,
ST_NOSUID = 2,
}
}
version(linux){
struct statvfs_t
{
c_ulong f_bsize;
c_ulong f_frsize;
c_ulong f_blocks;
c_ulong f_bfree;
c_ulong f_bavail;
c_ulong f_files;
c_ulong f_ffree;
c_ulong f_favail;
c_ulong f_fsid;
c_ulong f_flag;
c_ulong f_namemax;
int __f_spare[6];
};
enum
{
ST_RDONLY = 1,
ST_NOSUID = 2,
}
}
version(solaris)
{
const _FSTYPSZ = 16;
alias c_ulong fsblkcnt_t;
alias c_ulong fsfilcnt_t;
struct statvfs_t {
c_ulong f_bsize; /* fundamental file system block size */
c_ulong f_frsize; /* fragment size */
fsblkcnt_t f_blocks; /* total blocks of f_frsize on fs */
fsblkcnt_t f_bfree; /* total free blocks of f_frsize */
fsblkcnt_t f_bavail; /* free blocks avail to non-superuser */
fsfilcnt_t f_files; /* total file nodes (inodes) */
fsfilcnt_t f_ffree; /* total free file nodes */
fsfilcnt_t f_favail; /* free nodes avail to non-superuser */
c_ulong f_fsid; /* file system id (dev for now) */
char[_FSTYPSZ] f_basetype; /* target fs type name, */
/* null-terminated */
c_ulong f_flag; /* bit-mask of flags */
c_ulong f_namemax; /* maximum file name length */
char[32] f_fstr; /* filesystem-specific string */
static if(size_t.sizeof == 8) //#if !defined(_LP64)
{
c_ulong[16] f_filler; /* reserved for future expansion */
}
};
enum
{
ST_RDONLY = 1,
ST_NOSUID = 2,
}
}
extern(C){
int fstatvfs(int, statvfs_t *);
int statvfs(in char * , statvfs_t *);
}
|