Net-LibNFS
view release on metacpan or search on metacpan
libnfs/lib/libnfs-sync.c view on Meta::CPAN
if (nfs_lchmod_async(nfs, path, mode, chmod_cb, &cb_data) != 0) {
nfs_set_error(nfs, "nfs_lchmod_async failed. %s",
nfs_get_error(nfs));
nfs_destroy_cb_sem(&cb_data);
return -1;
}
wait_for_nfs_reply(nfs, &cb_data);
nfs_destroy_cb_sem(&cb_data);
return cb_data.status;
}
/*
* fchmod()
*/
static void
fchmod_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
if (status < 0) {
nfs_set_error(nfs, "fchmod call failed with \"%s\"",
(char *)data);
goto finished;
}
finished:
cb_data_is_finished(cb_data, status);
}
int
nfs_fchmod(struct nfs_context *nfs, struct nfsfh *nfsfh, int mode)
{
struct sync_cb_data cb_data;
if (nfs_init_cb_data(&nfs, &cb_data)) {
return -1;
}
if (nfs_fchmod_async(nfs, nfsfh, mode, fchmod_cb, &cb_data) != 0) {
nfs_set_error(nfs, "nfs_fchmod_async failed. %s",
nfs_get_error(nfs));
nfs_destroy_cb_sem(&cb_data);
return -1;
}
wait_for_nfs_reply(nfs, &cb_data);
nfs_destroy_cb_sem(&cb_data);
return cb_data.status;
}
/*
* chown()
*/
static void
chown_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
if (status < 0) {
nfs_set_error(nfs, "chown call failed with \"%s\"",
(char *)data);
goto finished;
}
finished:
cb_data_is_finished(cb_data, status);
}
int
nfs_chown(struct nfs_context *nfs, const char *path, int uid, int gid)
{
struct sync_cb_data cb_data;
if (nfs_init_cb_data(&nfs, &cb_data)) {
return -1;
}
if (nfs_chown_async(nfs, path, uid, gid, chown_cb, &cb_data) != 0) {
nfs_set_error(nfs, "nfs_chown_async failed. %s",
nfs_get_error(nfs));
nfs_destroy_cb_sem(&cb_data);
return -1;
}
wait_for_nfs_reply(nfs, &cb_data);
nfs_destroy_cb_sem(&cb_data);
return cb_data.status;
}
/*
* lchown()
*/
int
nfs_lchown(struct nfs_context *nfs, const char *path, int uid, int gid)
{
struct sync_cb_data cb_data;
if (nfs_init_cb_data(&nfs, &cb_data)) {
return -1;
}
if (nfs_lchown_async(nfs, path, uid, gid, chown_cb, &cb_data) != 0) {
nfs_set_error(nfs, "nfs_lchown_async failed. %s",
nfs_get_error(nfs));
nfs_destroy_cb_sem(&cb_data);
return -1;
}
wait_for_nfs_reply(nfs, &cb_data);
nfs_destroy_cb_sem(&cb_data);
return cb_data.status;
}
/*
* fchown()
*/
static void
fchown_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
if (status < 0) {
nfs_set_error(nfs, "fchown call failed with \"%s\"",
(char *)data);
goto finished;
}
finished:
cb_data_is_finished(cb_data, status);
}
int
nfs_fchown(struct nfs_context *nfs, struct nfsfh *nfsfh, int uid, int gid)
{
struct sync_cb_data cb_data;
if (nfs_init_cb_data(&nfs, &cb_data)) {
return -1;
}
if (nfs_fchown_async(nfs, nfsfh, uid, gid, fchown_cb, &cb_data) != 0) {
nfs_set_error(nfs, "nfs_fchown_async failed. %s",
nfs_get_error(nfs));
nfs_destroy_cb_sem(&cb_data);
return -1;
}
wait_for_nfs_reply(nfs, &cb_data);
nfs_destroy_cb_sem(&cb_data);
return cb_data.status;
}
/*
* utimes()
*/
static void
utimes_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
if (status < 0) {
nfs_set_error(nfs, "utimes call failed with \"%s\"",
(char *)data);
goto finished;
}
finished:
cb_data_is_finished(cb_data, status);
}
int
nfs_utimes(struct nfs_context *nfs, const char *path, struct timeval *times)
{
struct sync_cb_data cb_data;
if (nfs_init_cb_data(&nfs, &cb_data)) {
return -1;
}
if (nfs_utimes_async(nfs, path, times, utimes_cb, &cb_data) != 0) {
nfs_set_error(nfs, "nfs_utimes_async failed. %s",
nfs_get_error(nfs));
nfs_destroy_cb_sem(&cb_data);
return -1;
}
wait_for_nfs_reply(nfs, &cb_data);
nfs_destroy_cb_sem(&cb_data);
return cb_data.status;
}
int
nfs_lutimes(struct nfs_context *nfs, const char *path, struct timeval *times)
{
struct sync_cb_data cb_data;
if (nfs_init_cb_data(&nfs, &cb_data)) {
return -1;
( run in 0.790 second using v1.01-cache-2.11-cpan-71847e10f99 )