1d4af9e69SDag-Erling Smørgrav /* 2f7167e0eSDag-Erling Smørgrav * Copyright (c) 2008,2014 Darren Tucker <dtucker@zip.com.au> 3d4af9e69SDag-Erling Smørgrav * 4d4af9e69SDag-Erling Smørgrav * Permission to use, copy, modify, and distribute this software for any 5d4af9e69SDag-Erling Smørgrav * purpose with or without fee is hereby granted, provided that the above 6d4af9e69SDag-Erling Smørgrav * copyright notice and this permission notice appear in all copies. 7d4af9e69SDag-Erling Smørgrav * 8d4af9e69SDag-Erling Smørgrav * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9d4af9e69SDag-Erling Smørgrav * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10d4af9e69SDag-Erling Smørgrav * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11d4af9e69SDag-Erling Smørgrav * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12d4af9e69SDag-Erling Smørgrav * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER 13d4af9e69SDag-Erling Smørgrav * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING 14d4af9e69SDag-Erling Smørgrav * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15d4af9e69SDag-Erling Smørgrav */ 16d4af9e69SDag-Erling Smørgrav 17d4af9e69SDag-Erling Smørgrav #include "includes.h" 18d4af9e69SDag-Erling Smørgrav 19f7167e0eSDag-Erling Smørgrav #if !defined(HAVE_STATVFS) || !defined(HAVE_FSTATVFS) 20f7167e0eSDag-Erling Smørgrav 21d4af9e69SDag-Erling Smørgrav #include <sys/types.h> 22d4af9e69SDag-Erling Smørgrav 23f7167e0eSDag-Erling Smørgrav #ifdef HAVE_SYS_MOUNT_H 24f7167e0eSDag-Erling Smørgrav #include <sys/mount.h> 25f7167e0eSDag-Erling Smørgrav #endif 26d4af9e69SDag-Erling Smørgrav #ifdef HAVE_SYS_STATFS_H 27d4af9e69SDag-Erling Smørgrav #include <sys/statfs.h> 28d4af9e69SDag-Erling Smørgrav #endif 29*47dd1d1bSDag-Erling Smørgrav #ifdef HAVE_SYS_VFS_H 30*47dd1d1bSDag-Erling Smørgrav #include <sys/vfs.h> 31*47dd1d1bSDag-Erling Smørgrav #endif 32d4af9e69SDag-Erling Smørgrav 33d4af9e69SDag-Erling Smørgrav #ifndef HAVE_FSBLKCNT_T 34d4af9e69SDag-Erling Smørgrav typedef unsigned long fsblkcnt_t; 35d4af9e69SDag-Erling Smørgrav #endif 36d4af9e69SDag-Erling Smørgrav #ifndef HAVE_FSFILCNT_T 37d4af9e69SDag-Erling Smørgrav typedef unsigned long fsfilcnt_t; 38d4af9e69SDag-Erling Smørgrav #endif 39d4af9e69SDag-Erling Smørgrav 40d4af9e69SDag-Erling Smørgrav #ifndef ST_RDONLY 41d4af9e69SDag-Erling Smørgrav #define ST_RDONLY 1 42d4af9e69SDag-Erling Smørgrav #endif 43d4af9e69SDag-Erling Smørgrav #ifndef ST_NOSUID 44d4af9e69SDag-Erling Smørgrav #define ST_NOSUID 2 45d4af9e69SDag-Erling Smørgrav #endif 46d4af9e69SDag-Erling Smørgrav 47d4af9e69SDag-Erling Smørgrav /* as defined in IEEE Std 1003.1, 2004 Edition */ 48d4af9e69SDag-Erling Smørgrav struct statvfs { 49d4af9e69SDag-Erling Smørgrav unsigned long f_bsize; /* File system block size. */ 50d4af9e69SDag-Erling Smørgrav unsigned long f_frsize; /* Fundamental file system block size. */ 51d4af9e69SDag-Erling Smørgrav fsblkcnt_t f_blocks; /* Total number of blocks on file system in */ 52d4af9e69SDag-Erling Smørgrav /* units of f_frsize. */ 53d4af9e69SDag-Erling Smørgrav fsblkcnt_t f_bfree; /* Total number of free blocks. */ 54d4af9e69SDag-Erling Smørgrav fsblkcnt_t f_bavail; /* Number of free blocks available to */ 55d4af9e69SDag-Erling Smørgrav /* non-privileged process. */ 56d4af9e69SDag-Erling Smørgrav fsfilcnt_t f_files; /* Total number of file serial numbers. */ 57d4af9e69SDag-Erling Smørgrav fsfilcnt_t f_ffree; /* Total number of free file serial numbers. */ 58d4af9e69SDag-Erling Smørgrav fsfilcnt_t f_favail; /* Number of file serial numbers available to */ 59d4af9e69SDag-Erling Smørgrav /* non-privileged process. */ 60d4af9e69SDag-Erling Smørgrav unsigned long f_fsid; /* File system ID. */ 61d4af9e69SDag-Erling Smørgrav unsigned long f_flag; /* BBit mask of f_flag values. */ 62d4af9e69SDag-Erling Smørgrav unsigned long f_namemax;/* Maximum filename length. */ 63d4af9e69SDag-Erling Smørgrav }; 64d4af9e69SDag-Erling Smørgrav #endif 65d4af9e69SDag-Erling Smørgrav 66d4af9e69SDag-Erling Smørgrav #ifndef HAVE_STATVFS 67d4af9e69SDag-Erling Smørgrav int statvfs(const char *, struct statvfs *); 68d4af9e69SDag-Erling Smørgrav #endif 69d4af9e69SDag-Erling Smørgrav 70d4af9e69SDag-Erling Smørgrav #ifndef HAVE_FSTATVFS 71d4af9e69SDag-Erling Smørgrav int fstatvfs(int, struct statvfs *); 72d4af9e69SDag-Erling Smørgrav #endif 73