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 )