fallback to defaults if pkg-config is not found
[perl-fuse.git] / Fuse.xs
diff --git a/Fuse.xs b/Fuse.xs
index cbbc80c..e473751 100644 (file)
--- a/Fuse.xs
+++ b/Fuse.xs
@@ -30,7 +30,7 @@ static inline void create_perl_context() {
 #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...)
@@ -541,7 +541,8 @@ int _PLfuse_write (const char *file, const char *buf, size_t buflen, off_t off)
        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;
@@ -553,14 +554,20 @@ int _PLfuse_statfs (const char *file, struct statfs *st) {
        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;