Filesys-Fuse3

 view release on metacpan or  search on metacpan

Fuse3.xs  view on Meta::CPAN

	FUSE_CONTEXT_POST;
	return rv;
}
#endif /* FUSE_FOUND_MICRO_VER >= 1 || FUSE_FOUND_MAJOR_VER >= 3 */

MODULE = Filesys::Fuse3		PACKAGE = Filesys::Fuse3
PROTOTYPES: DISABLE

BOOT:
	MY_CXT_INIT;
#ifdef USE_ITHREADS
	MY_CXT.self = aTHX;
#endif

void
CLONE(...)
	PREINIT:
#ifdef USE_ITHREADS
		int i;
		dTHX;
#endif
	CODE:
#ifdef USE_ITHREADS
		MY_CXT_CLONE;
		tTHX parent = MY_CXT.self;
		MY_CXT.self = my_perl;
		{
			CLONE_PARAMS *clone_param;
			clone_param = Perl_clone_params_new(parent, aTHX);
			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);
			Perl_clone_params_del(clone_param);
		}
#endif

SV*
fuse_get_context()
	PREINIT:
	struct fuse_context *fc;
	CODE:
	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);
		(void) hv_store(hash, "umask", 5, newSViv(fc->umask), 0);
		RETVAL = newRV_noinc((SV*)hash);
	} else {
		XSRETURN_UNDEF;
	}
	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


#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);
	OUTPUT:



( run in 0.450 second using v1.01-cache-2.11-cpan-5511b514fd6 )