Net-LibNFS
view release on metacpan or search on metacpan
newCONSTSUB(gv_stashpv(PERL_NS, 0), "NFS4_F_SETLKW", newSVuv(NFS4_F_SETLKW));
newCONSTSUB(gv_stashpv(PERL_NS, 0), "F_RDLCK", newSVuv(F_RDLCK));
newCONSTSUB(gv_stashpv(PERL_NS, 0), "F_WRLCK", newSVuv(F_WRLCK));
newCONSTSUB(gv_stashpv(PERL_NS, 0), "F_UNLCK", newSVuv(F_UNLCK));
# ----------------------------------------------------------------------
# Static functions
void
find_local_servers ()
PPCODE:
struct nfs_server_list *servers = nfs_find_local_servers();
if (!servers) {
XSRETURN_EMPTY;
}
struct nfs_server_list *srvlist = servers;
struct nfs_server_list *cur_srv = srvlist;
unsigned srvcount = 0;
while (cur_srv) {
mPUSHs( newSVpv(cur_srv->addr, 0) );
cur_srv = cur_srv->next;
}
}
free_nfs_srvr_list(srvlist);
void
mount_getexports (SV* server_sv, SV* timeout_sv=&PL_sv_undef)
PPCODE:
const char* server = exs_SvPVbyte_nolen(server_sv);
struct exportnode* nodes;
if (SvOK(timeout_sv)) {
int timeout = SvIV(timeout_sv); // TODO
nodes = mount_getexports_timeout(server, timeout);
}
else {
nodes = mount_getexports(server);
nlnfs_s* perl_nfs = exs_structref_ptr(nfs_sv);
nfs_closedir( perl_nfs->nfs, nfs_dh->nfsdh );
}
SvREFCNT_dec(nfs_dh->perl_nfs);
void
read (SV* self_sv)
PPCODE:
_FORBID_VOID_CONTEXT;
nlnfs_dh_s* nfs_dh = exs_structref_ptr(self_sv);
SV* nfs_sv = nfs_dh->perl_nfs;
nlnfs_s* perl_nfs = exs_structref_ptr(nfs_sv);
unsigned retcount = 0;
struct nfsdirent* dent = nfs_readdir( perl_nfs->nfs, nfs_dh->nfsdh );
void
DESTROY (SV* self_sv)
CODE:
nlnfs_fh_s* nfs_fh = exs_structref_ptr(self_sv);
SvREFCNT_dec(nfs_fh->perl_nfs);
void
close (SV* self_sv)
PPCODE:
nlnfs_fh_s* nfs_fh = exs_structref_ptr(self_sv);
SV* nfs_sv = nfs_fh->perl_nfs;
nlnfs_s* perl_nfs = exs_structref_ptr(nfs_sv);
int err = nfs_close(perl_nfs->nfs, nfs_fh->nfsfh);
if (err) {
_croak_nfs_errno(aTHX_ perl_nfs->nfs, "close", err, NULL);
( run in 0.334 second using v1.01-cache-2.11-cpan-5511b514fd6 )