#include <fuse/fuse.h>
#undef DEBUGf
-#if 0
+#if 1
#define DEBUGf(f, a...) fprintf(stderr, "%s:%d (%i): " f,__BASE_FILE__,__LINE__,sp-PL_stack_base ,##a )
#else
#define DEBUGf(a...)
return rv;
}
-int _PLfuse_statfs (const char *file, struct statfs *st) {
+/* FIXME check for old fuse API (< 21?) and use statfs here */
+int _PLfuse_statfs (const char *file, struct statvfs *st) {
int rv;
char *rvstr;
FUSE_CONTEXT_PRE;
PUTBACK;
rv = call_sv(_PLfuse_callbacks[17],G_ARRAY);
SPAGAIN;
- if(rv > 5) {
+ DEBUGf("statfs got %i params\n",rv);
+ if(rv == 6 || rv == 7) {
st->f_bsize = POPi;
- st->f_bfree = POPi;
+ st->f_bfree = st->f_bavail = POPi;
st->f_blocks = POPi;
- st->f_ffree = POPi;
+ st->f_ffree = st->f_favail = POPi;
st->f_files = POPi;
- st->f_namelen = POPi;
- if(rv > 6)
+ st->f_namemax = POPi;
+ /* zero all other */
+ st->f_frsize = 4096;
+ st->f_fsid = 0;
+ st->f_flag = 0;
+
+ if(rv == 7)
rv = POPi;
else
rv = 0;