Net-LibNFS
view release on metacpan or search on metacpan
CODE:
nlnfs_s* perl_nfs = exs_structref_ptr(self_sv);
const char* path = exs_SvPVbyte_nolen(path_sv);
int mode = SvIV(mode_sv); // TODO
const char* funcname = ix ? "lchmod" : "chmod";
perl_cb_s* cb_sp = _create_callback_struct(aTHX_ funcname, cb, _parse_fallible_empty_return, NULL);
int err;
if (ix) {
err = nfs_lchmod_async(perl_nfs->nfs, path, mode, _do_perl_callback, cb_sp);
}
else {
err = nfs_chmod_async(perl_nfs->nfs, path, mode, _do_perl_callback, cb_sp);
}
if (err) {
_croak_nfs_errno(aTHX_ perl_nfs->nfs, funcname, err, NULL);
}
SV*
truncate (SV* self_sv, SV* path_sv, SV* length_sv)
CODE:
nlnfs_s* perl_nfs = exs_structref_ptr(self_sv);
const char* path = exs_SvPVbyte_nolen(path_sv);
uint64_t len = exs_SvUV(length_sv); // TODO
int err = nfs_truncate(perl_nfs->nfs, path, len);
if (err) {
_croak_nfs_errno(aTHX_ perl_nfs->nfs, "truncate", err, NULL);
}
RETVAL = SvREFCNT_inc(self_sv);
OUTPUT:
RETVAL
void
_async_truncate (SV* self_sv, SV* path_sv, SV* length_sv, SV* cb)
CODE:
nlnfs_s* perl_nfs = exs_structref_ptr(self_sv);
const char* path = exs_SvPVbyte_nolen(path_sv);
uint64_t len = exs_SvUV(length_sv); // TODO
const char* funcname = "truncate";
perl_cb_s* cb_sp = _create_callback_struct(aTHX_ funcname, cb, _parse_fallible_empty_return, NULL);
int err = nfs_truncate_async(perl_nfs->nfs, path, len, _do_perl_callback, cb_sp);
if (err) {
_croak_nfs_errno(aTHX_ perl_nfs->nfs, funcname, err, NULL);
}
SV*
chown (SV* self_sv, SV* path_sv, SV* uid_sv, SV* gid_sv)
ALIAS:
lchown = 1
CODE:
nlnfs_s* perl_nfs = exs_structref_ptr(self_sv);
const char* path = exs_SvPVbyte_nolen(path_sv);
int uid = SvIV(uid_sv); // TODO
int gid = SvIV(gid_sv); // TODO
int err;
if (ix) {
err = nfs_lchown(perl_nfs->nfs, path, uid, gid);
}
else {
err = nfs_chown(perl_nfs->nfs, path, uid, gid);
}
if (err) {
_croak_nfs_errno(aTHX_ perl_nfs->nfs, ix ? "lchown" : "chown", err, NULL);
}
RETVAL = SvREFCNT_inc(self_sv);
OUTPUT:
RETVAL
void
_async_chown (SV* self_sv, SV* path_sv, SV* uid_sv, SV* gid_sv, SV* cb)
ALIAS:
_async_lchown = 1
CODE:
nlnfs_s* perl_nfs = exs_structref_ptr(self_sv);
const char* path = exs_SvPVbyte_nolen(path_sv);
int uid = SvIV(uid_sv); // TODO
int gid = SvIV(gid_sv); // TODO
const char* funcname = ix ? "lchown" : "chown";
perl_cb_s* cb_sp = _create_callback_struct(aTHX_ funcname, cb, _parse_fallible_empty_return, NULL);
int err;
if (ix) {
err = nfs_lchown_async(perl_nfs->nfs, path, uid, gid, _do_perl_callback, cb_sp);
}
else {
err = nfs_chown_async(perl_nfs->nfs, path, uid, gid, _do_perl_callback, cb_sp);
}
if (err) {
_croak_nfs_errno(aTHX_ perl_nfs->nfs, funcname, err, NULL);
}
SV*
symlink (SV* self_sv, SV* old_sv, SV* new_sv)
ALIAS:
rename = 1
link = 2
CODE:
nlnfs_s* perl_nfs = exs_structref_ptr(self_sv);
const char* oldname = exs_SvPVbyte_nolen(old_sv);
const char* newname = exs_SvPVbyte_nolen(new_sv);
int err;
_nfs_void_2pathfunc func = VOID_2PATHFUNC_BY_IX[ix];
err = func(perl_nfs->nfs, oldname, newname);
if (err) {
const char *funcname = VOID_2PATHFUNC_NAME_BY_IX[ix];
_croak_nfs_errno(aTHX_ perl_nfs->nfs, funcname, err, NULL);
}
RETVAL = SvREFCNT_inc(self_sv);
OUTPUT:
RETVAL
void
_async_symlink (SV* self_sv, SV* old_sv, SV* new_sv, SV* cb)
ALIAS:
_async_rename = 1
_async_link = 2
CODE:
nlnfs_s* perl_nfs = exs_structref_ptr(self_sv);
const char* oldname = exs_SvPVbyte_nolen(old_sv);
const char* newname = exs_SvPVbyte_nolen(new_sv);
_nfs_async_void_2pathfunc func = ASYNC_VOID_2PATHFUNC_BY_IX[ix];
const char *funcname = VOID_2PATHFUNC_NAME_BY_IX[ix];
perl_cb_s* cb_sp = _create_callback_struct(aTHX_ funcname, cb, _parse_fallible_empty_return, NULL);
int err = func(perl_nfs->nfs, oldname, newname, _do_perl_callback, cb_sp);
if (err) {
_croak_nfs_errno(aTHX_ perl_nfs->nfs, funcname, err, NULL);
}
# ----------------------------------------------------------------------
# Async-oriented stuff
int
void
_async_truncate (SV* self_sv, SV* length_sv, SV* cb)
CODE:
uint64_t len = exs_SvUV(length_sv);
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);
perl_cb_s* cb_sp = _create_callback_struct(aTHX_ "truncate", cb, _parse_fallible_empty_return, NULL);
int err = nfs_ftruncate_async(perl_nfs->nfs, nfs_fh->nfsfh, len, _do_perl_callback, cb_sp);
if (err) {
_croak_nfs_errno(aTHX_ perl_nfs->nfs, "truncate", err, NULL);
}
SV*
chmod (SV* self_sv, SV* mode_sv)
CODE:
int mode = SvIV(mode_sv); // TODO
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_fchmod(perl_nfs->nfs, nfs_fh->nfsfh, mode);
if (err) {
_croak_nfs_errno(aTHX_ perl_nfs->nfs, "fchmod", err, NULL);
}
RETVAL = SvREFCNT_inc(self_sv);
OUTPUT:
RETVAL
void
_async_chmod (SV* self_sv, SV* mode_sv, SV* cb)
CODE:
int mode = SvIV(mode_sv); // TODO
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);
perl_cb_s* cb_sp = _create_callback_struct(aTHX_ "chmod", cb, _parse_fallible_empty_return, NULL);
int err = nfs_fchmod_async(perl_nfs->nfs, nfs_fh->nfsfh, mode, _do_perl_callback, cb_sp);
if (err) {
_croak_nfs_errno(aTHX_ perl_nfs->nfs, "chmod", err, NULL);
}
SV*
chown (SV* self_sv, SV* uid_sv, SV* gid_sv)
CODE:
int uid = SvIV(uid_sv); // TODO
int gid = SvIV(gid_sv); // TODO
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_fchown(perl_nfs->nfs, nfs_fh->nfsfh, uid, gid);
if (err) {
_croak_nfs_errno(aTHX_ perl_nfs->nfs, "fchown", err, NULL);
}
RETVAL = SvREFCNT_inc(self_sv);
OUTPUT:
RETVAL
void
_async_chown (SV* self_sv, SV* uid_sv, SV* gid_sv, SV* cb)
CODE:
int uid = SvIV(uid_sv); // TODO
int gid = SvIV(gid_sv); // TODO
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);
perl_cb_s* cb_sp = _create_callback_struct(aTHX_ "chown", cb, _parse_fallible_empty_return, NULL);
int err = nfs_fchown_async(perl_nfs->nfs, nfs_fh->nfsfh, uid, gid, _do_perl_callback, cb_sp);
if (err) {
_croak_nfs_errno(aTHX_ perl_nfs->nfs, "chown", err, NULL);
}
# ----------------------------------------------------------------------
MODULE = Net::LibNFS PACKAGE = Net::LibNFS::Stat
PROTOTYPES: DISABLE
UV
dev (SV* self_sv)
ALIAS:
ino = 1
mode = 2
nlink = 3
uid = 4
gid = 5
rdev = 6
size = 7
blksize = 8
blocks = 9
atime = 10
mtime = 11
ctime = 12
atime_nsec = 13
mtime_nsec = 14
ctime_nsec = 15
nfs_used = 16
CODE:
struct nfs_stat_64* stat_p = exs_structref_ptr(self_sv);
RETVAL = *( (uint64_t*) ((void*)(stat_p) + STAT64_OFFSET[ix]) );
OUTPUT:
RETVAL
# ----------------------------------------------------------------------
MODULE = Net::LibNFS PACKAGE = Net::LibNFS::StatVFS
PROTOTYPES: DISABLESTATVFS64_OFFSET
UV
bsize (SV* self_sv)
ALIAS:
frsize = 1
blocks = 2
bfree = 3
bavail = 4
files = 5
ffree = 6
favail = 7
fsid = 8
flag = 9
namemax = 10
CODE:
struct nfs_statvfs_64* p = exs_structref_ptr(self_sv);
RETVAL = *( (uint64_t*) ((void*)(p) + STATVFS64_OFFSET[ix]) );
OUTPUT:
RETVAL
# ----------------------------------------------------------------------
( run in 0.404 second using v1.01-cache-2.11-cpan-5511b514fd6 )