11305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/* $Id: bsd-statvfs.h,v 1.1 2008/06/08 17:32:29 dtucker Exp $ */
21305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
31305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/*
41305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * Copyright (c) 2008 Darren Tucker <dtucker@zip.com.au>
51305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood *
61305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * Permission to use, copy, modify, and distribute this software for any
71305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * purpose with or without fee is hereby granted, provided that the above
81305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * copyright notice and this permission notice appear in all copies.
91305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood *
101305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
111305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
121305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
131305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
141305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
151305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
161305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
171305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood */
181305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
191305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include "includes.h"
201305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
211305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include <sys/types.h>
221305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
231305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifdef HAVE_SYS_STATFS_H
241305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include <sys/statfs.h>
251305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif
261305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
271305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_STATVFS
281305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
291305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_FSBLKCNT_T
301305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef unsigned long fsblkcnt_t;
311305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif
321305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_FSFILCNT_T
331305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef unsigned long fsfilcnt_t;
341305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif
351305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
361305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef ST_RDONLY
371305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ST_RDONLY	1
381305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif
391305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef ST_NOSUID
401305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ST_NOSUID	2
411305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif
421305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
431305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood	/* as defined in IEEE Std 1003.1, 2004 Edition */
441305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodstruct statvfs {
451305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood	unsigned long f_bsize;	/* File system block size. */
461305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood	unsigned long f_frsize;	/* Fundamental file system block size. */
471305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood	fsblkcnt_t f_blocks;	/* Total number of blocks on file system in */
481305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood				/* units of f_frsize. */
491305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood	fsblkcnt_t    f_bfree;	/* Total number of free blocks. */
501305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood	fsblkcnt_t    f_bavail;	/* Number of free blocks available to  */
511305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood				/* non-privileged process.  */
521305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood	fsfilcnt_t    f_files;	/* Total number of file serial numbers. */
531305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood	fsfilcnt_t    f_ffree;	/* Total number of free file serial numbers. */
541305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood	fsfilcnt_t    f_favail;	/* Number of file serial numbers available to */
551305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood				/* non-privileged process. */
561305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood	unsigned long f_fsid;	/* File system ID. */
571305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood	unsigned long f_flag;	/* BBit mask of f_flag values. */
581305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood	unsigned long f_namemax;/*  Maximum filename length. */
591305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood};
601305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif
611305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
621305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_STATVFS
631305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodint statvfs(const char *, struct statvfs *);
641305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif
651305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
661305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef HAVE_FSTATVFS
671305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodint fstatvfs(int, struct statvfs *);
681305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif
69