Fuse
view release on metacpan or search on metacpan
/* CLONE entered without a pointer table, so we can't safely clone static data */
if(!PL_ptr_table) {
for(i=0;i<N_CALLBACKS;i++) {
MY_CXT.callback[i] = NULL;
}
MY_CXT.handles = newHV();
} else
#endif
{
CLONE_PARAMS *clone_param;
#if (PERL_VERSION > 13) || (PERL_VERSION == 13 && PERL_SUBVERSION >= 2)
clone_param = Perl_clone_params_new(parent, aTHX);
#else
CLONE_PARAMS raw_param;
raw_param.flags = 0;
raw_param.proto_perl = parent;
raw_param.stashes = (AV*)sv_2mortal((SV*)newAV());
clone_param = &raw_param;
#endif
for(i=0;i<N_CALLBACKS;i++) {
MY_CXT.callback[i] = sv_dup(MY_CXT.callback[i], clone_param);
}
MY_CXT.handles = (HV*)sv_dup((SV*)MY_CXT.handles, clone_param);
#if (PERL_VERSION > 13) || (PERL_VERSION == 13 && PERL_SUBVERSION >= 2)
Perl_clone_params_del(clone_param);
#endif
}
#endif
SV*
fuse_get_context()
PREINIT:
#ifndef __OpenBSD__
struct fuse_context *fc;
#endif /* !defined(__OpenBSD__) */
CODE:
#ifndef __OpenBSD__
fc = fuse_get_context();
if(fc) {
HV *hash = newHV();
(void) hv_store(hash, "uid", 3, newSViv(fc->uid), 0);
(void) hv_store(hash, "gid", 3, newSViv(fc->gid), 0);
(void) hv_store(hash, "pid", 3, newSViv(fc->pid), 0);
if (fc->private_data)
(void) hv_store(hash, "private", 7, fc->private_data, 0);
#if FUSE_VERSION >= 28
(void) hv_store(hash, "umask", 5, newSViv(fc->umask), 0);
#endif /* FUSE_VERSION >= 28 */
RETVAL = newRV_noinc((SV*)hash);
} else {
#endif /* !defined(__OpenBSD__) */
XSRETURN_UNDEF;
#ifndef __OpenBSD__
}
#endif /* !defined(__OpenBSD__) */
OUTPUT:
RETVAL
void
fuse_version()
PPCODE:
int gimme = GIMME_V;
if (gimme == G_SCALAR)
XPUSHs(sv_2mortal(newSVpvf("%d.%d", FUSE_MAJOR_VERSION, FUSE_MINOR_VERSION)));
else if (gimme == G_ARRAY) {
#ifdef FUSE_FOUND_MICRO_VER
XPUSHs(sv_2mortal(newSViv(FUSE_FOUND_MAJOR_VER)));
XPUSHs(sv_2mortal(newSViv(FUSE_FOUND_MINOR_VER)));
XPUSHs(sv_2mortal(newSViv(FUSE_FOUND_MICRO_VER)));
#else
XPUSHs(sv_2mortal(newSViv(FUSE_MAJOR_VERSION)));
XPUSHs(sv_2mortal(newSViv(FUSE_MINOR_VERSION)));
XPUSHs(sv_2mortal(newSViv(0)));
#endif
}
SV *
XATTR_CREATE()
CODE:
RETVAL = newSViv(XATTR_CREATE);
OUTPUT:
RETVAL
SV *
XATTR_REPLACE()
CODE:
RETVAL = newSViv(XATTR_REPLACE);
OUTPUT:
RETVAL
#if FUSE_VERSION >= 29
#ifdef __linux__
SV *
UTIME_NOW()
CODE:
RETVAL = newSViv(UTIME_NOW);
OUTPUT:
RETVAL
SV *
UTIME_OMIT()
CODE:
RETVAL = newSViv(UTIME_OMIT);
OUTPUT:
RETVAL
#endif /* defined(__linux__) */
SV *
FUSE_BUF_IS_FD()
CODE:
RETVAL = newSViv(FUSE_BUF_IS_FD);
OUTPUT:
RETVAL
SV *
FUSE_BUF_FD_SEEK()
CODE:
RETVAL = newSViv(FUSE_BUF_FD_SEEK);
( run in 1.619 second using v1.01-cache-2.11-cpan-71847e10f99 )