}
/* FIXME check for old fuse API (< 21?) and use statfs here */
-int _PLfuse_statfs (const char *file, struct statvfs *st) {
+#ifdef __FreeBSD__
+ #define _fuse_statvfs statfs
+#else
+ #define _fuse_statvfs statvfs
+#endif
+int _PLfuse_statfs (const char *file, struct _fuse_statvfs *st) {
+
int rv;
char *rvstr;
FUSE_CONTEXT_PRE;
SPAGAIN;
DEBUGf("statfs got %i params\n",rv);
if(rv == 6 || rv == 7) {
- st->f_bsize = POPi;
- st->f_bfree = st->f_bavail = POPi;
- st->f_blocks = POPi;
- st->f_ffree = st->f_favail = POPi;
- st->f_files = POPi;
- st->f_namemax = POPi;
- /* zero all other */
- st->f_frsize = 4096;
+ st->f_bsize = POPi;
+ st->f_bfree = POPi;
+ st->f_blocks = POPi;
+ st->f_ffree = POPi;
+ st->f_files = POPi;
+ st->f_namemax = POPi;
+#ifndef __FreeBSD__
+ /* zero and fill-in other */
st->f_fsid = 0;
+ st->f_frsize = 4096;
st->f_flag = 0;
+ st->f_bavail = st->f_bfree;
+ st->f_favail = st->f_ffree;
+#endif
if(rv == 7)
rv = POPi;