30 |
#include <fuse/fuse.h> |
#include <fuse/fuse.h> |
31 |
|
|
32 |
#undef DEBUGf |
#undef DEBUGf |
33 |
#if 0 |
#if 1 |
34 |
#define DEBUGf(f, a...) fprintf(stderr, "%s:%d (%i): " f,__BASE_FILE__,__LINE__,sp-PL_stack_base ,##a ) |
#define DEBUGf(f, a...) fprintf(stderr, "%s:%d (%i): " f,__BASE_FILE__,__LINE__,sp-PL_stack_base ,##a ) |
35 |
#else |
#else |
36 |
#define DEBUGf(a...) |
#define DEBUGf(a...) |
542 |
} |
} |
543 |
|
|
544 |
/* FIXME check for old fuse API (< 21?) and use statfs here */ |
/* FIXME check for old fuse API (< 21?) and use statfs here */ |
545 |
int _PLfuse_statfs (const char *file, struct statvfs *st) { |
#ifdef __FreeBSD__ |
546 |
|
#define _fuse_statvfs statfs |
547 |
|
#else |
548 |
|
#define _fuse_statvfs statvfs |
549 |
|
#endif |
550 |
|
int _PLfuse_statfs (const char *file, struct _fuse_statvfs *st) { |
551 |
|
|
552 |
int rv; |
int rv; |
553 |
char *rvstr; |
char *rvstr; |
554 |
FUSE_CONTEXT_PRE; |
FUSE_CONTEXT_PRE; |
560 |
PUTBACK; |
PUTBACK; |
561 |
rv = call_sv(_PLfuse_callbacks[17],G_ARRAY); |
rv = call_sv(_PLfuse_callbacks[17],G_ARRAY); |
562 |
SPAGAIN; |
SPAGAIN; |
563 |
if(rv > 5) { |
DEBUGf("statfs got %i params\n",rv); |
564 |
st->f_bsize = POPi; |
if(rv == 6 || rv == 7) { |
565 |
st->f_bfree = st->f_bavail = POPi; |
st->f_bsize = POPi; |
566 |
st->f_blocks = POPi; |
st->f_bfree = POPi; |
567 |
st->f_ffree = st->f_favail = POPi; |
st->f_blocks = POPi; |
568 |
st->f_files = POPi; |
st->f_ffree = POPi; |
569 |
st->f_namemax = POPi; |
st->f_files = POPi; |
570 |
/* zero all other */ |
st->f_namemax = POPi; |
571 |
st->f_frsize = 4096; |
#ifndef __FreeBSD__ |
572 |
|
/* zero and fill-in other */ |
573 |
st->f_fsid = 0; |
st->f_fsid = 0; |
574 |
|
st->f_frsize = 4096; |
575 |
st->f_flag = 0; |
st->f_flag = 0; |
576 |
|
st->f_bavail = st->f_bfree; |
577 |
|
st->f_favail = st->f_ffree; |
578 |
|
#endif |
579 |
|
|
580 |
if(rv > 6) |
if(rv == 7) |
581 |
rv = POPi; |
rv = POPi; |
582 |
else |
else |
583 |
rv = 0; |
rv = 0; |