#include "libnfs-raw.h"
#include "libnfs-raw-mount.h"
#include "libnfs-raw-nfs.h"
+#include "libnfs-private.h"
struct sync_cb_data {
int is_finished;
pfd.events = nfs_which_events(nfs);
if (poll(&pfd, 1, -1) < 0) {
- printf("Poll failed");
+ nfs_set_error(nfs, "Poll failed");
cb_data->status = -EIO;
break;
}
if (nfs_service(nfs, pfd.revents) < 0) {
- printf("nfs_service failed\n");
+ nfs_set_error(nfs, "nfs_service failed");
cb_data->status = -EIO;
break;
}
/*
* connect to the server and mount the export
*/
-static void mount_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void mount_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->status = status;
if (status < 0) {
- printf("mount/mnt call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "mount/mnt call failed with \"%s\"", (char *)data);
return;
}
}
cb_data.is_finished = 0;
if (nfs_mount_async(nfs, server, export, mount_cb, &cb_data) != 0) {
- printf("nfs_mount_async failed\n");
+ nfs_set_error(nfs, "nfs_mount_async failed");
return -1;
}
/*
* stat()
*/
-static void stat_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void stat_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->status = status;
if (status < 0) {
- printf("stat call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "stat call failed with \"%s\"", (char *)data);
return;
}
cb_data.return_data = st;
if (nfs_stat_async(nfs, path, stat_cb, &cb_data) != 0) {
- printf("nfs_stat_async failed\n");
+ nfs_set_error(nfs, "nfs_stat_async failed");
return -1;
}
/*
* open()
*/
-static void open_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void open_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
struct nfsfh *fh, **nfsfh;
cb_data->status = status;
if (status < 0) {
- printf("open call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "open call failed with \"%s\"", (char *)data);
return;
}
cb_data.return_data = nfsfh;
if (nfs_open_async(nfs, path, mode, open_cb, &cb_data) != 0) {
- printf("nfs_open_async failed\n");
+ nfs_set_error(nfs, "nfs_open_async failed");
return -1;
}
/*
* pread()
*/
-static void pread_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void pread_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
char *buffer;
cb_data->status = status;
if (status < 0) {
- printf("pread call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "pread call failed with \"%s\"", (char *)data);
return;
}
cb_data.return_data = buffer;
if (nfs_pread_async(nfs, nfsfh, offset, count, pread_cb, &cb_data) != 0) {
- printf("nfs_pread_async failed\n");
+ nfs_set_error(nfs, "nfs_pread_async failed");
return -1;
}
/*
* close()
*/
-static void close_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void close_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->is_finished = 1;
cb_data->status = status;
if (status < 0) {
- printf("close call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "close call failed with \"%s\"", (char *)data);
return;
}
}
cb_data.is_finished = 0;
if (nfs_close_async(nfs, nfsfh, close_cb, &cb_data) != 0) {
- printf("nfs_close_async failed\n");
+ nfs_set_error(nfs, "nfs_close_async failed");
return -1;
}
cb_data.return_data = st;
if (nfs_fstat_async(nfs, nfsfh, stat_cb, &cb_data) != 0) {
- printf("nfs_fstat_async failed\n");
+ nfs_set_error(nfs, "nfs_fstat_async failed");
return -1;
}
/*
* pwrite()
*/
-static void pwrite_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void pwrite_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->is_finished = 1;
cb_data->status = status;
if (status < 0) {
- printf("pwrite call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "pwrite call failed with \"%s\"", (char *)data);
return;
}
}
cb_data.is_finished = 0;
if (nfs_pwrite_async(nfs, nfsfh, offset, count, buf, pwrite_cb, &cb_data) != 0) {
- printf("nfs_pwrite_async failed\n");
+ nfs_set_error(nfs, "nfs_pwrite_async failed");
return -1;
}
/*
* fsync()
*/
-static void fsync_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void fsync_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->is_finished = 1;
cb_data->status = status;
if (status < 0) {
- printf("fsync call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "fsync call failed with \"%s\"", (char *)data);
return;
}
}
cb_data.is_finished = 0;
if (nfs_fsync_async(nfs, nfsfh, fsync_cb, &cb_data) != 0) {
- printf("nfs_fsync_async failed\n");
+ nfs_set_error(nfs, "nfs_fsync_async failed");
return -1;
}
/*
* ftruncate()
*/
-static void ftruncate_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void ftruncate_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->is_finished = 1;
cb_data->status = status;
if (status < 0) {
- printf("ftruncate call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "ftruncate call failed with \"%s\"", (char *)data);
return;
}
}
cb_data.is_finished = 0;
if (nfs_ftruncate_async(nfs, nfsfh, length, ftruncate_cb, &cb_data) != 0) {
- printf("nfs_ftruncate_async failed\n");
+ nfs_set_error(nfs, "nfs_ftruncate_async failed");
return -1;
}
/*
* truncate()
*/
-static void truncate_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void truncate_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->is_finished = 1;
cb_data->status = status;
if (status < 0) {
- printf("truncate call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "truncate call failed with \"%s\"", (char *)data);
return;
}
}
cb_data.is_finished = 0;
if (nfs_truncate_async(nfs, path, length, truncate_cb, &cb_data) != 0) {
- printf("nfs_ftruncate_async failed\n");
+ nfs_set_error(nfs, "nfs_ftruncate_async failed");
return -1;
}
/*
* mkdir()
*/
-static void mkdir_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void mkdir_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->is_finished = 1;
cb_data->status = status;
if (status < 0) {
- printf("mkdir call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "mkdir call failed with \"%s\"", (char *)data);
return;
}
}
cb_data.is_finished = 0;
if (nfs_mkdir_async(nfs, path, mkdir_cb, &cb_data) != 0) {
- printf("nfs_mkdir_async failed\n");
+ nfs_set_error(nfs, "nfs_mkdir_async failed");
return -1;
}
/*
* rmdir()
*/
-static void rmdir_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void rmdir_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->is_finished = 1;
cb_data->status = status;
if (status < 0) {
- printf("rmdir call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "rmdir call failed with \"%s\"", (char *)data);
return;
}
}
cb_data.is_finished = 0;
if (nfs_rmdir_async(nfs, path, rmdir_cb, &cb_data) != 0) {
- printf("nfs_rmdir_async failed\n");
+ nfs_set_error(nfs, "nfs_rmdir_async failed");
return -1;
}
/*
* creat()
*/
-static void creat_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void creat_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
struct nfsfh *fh, **nfsfh;
cb_data->status = status;
if (status < 0) {
- printf("creat call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "creat call failed with \"%s\"", (char *)data);
return;
}
cb_data.return_data = nfsfh;
if (nfs_creat_async(nfs, path, mode, creat_cb, &cb_data) != 0) {
- printf("nfs_creat_async failed\n");
+ nfs_set_error(nfs, "nfs_creat_async failed");
return -1;
}
/*
* unlink()
*/
-static void unlink_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void unlink_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->status = status;
if (status < 0) {
- printf("unlink call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "unlink call failed with \"%s\"", (char *)data);
return;
}
}
cb_data.is_finished = 0;
if (nfs_unlink_async(nfs, path, unlink_cb, &cb_data) != 0) {
- printf("nfs_unlink_async failed\n");
+ nfs_set_error(nfs, "nfs_unlink_async failed");
return -1;
}
/*
* opendir()
*/
-static void opendir_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void opendir_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
struct nfsdir *dir, **nfsdir;
cb_data->status = status;
if (status < 0) {
- printf("opendir call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "opendir call failed with \"%s\"", (char *)data);
return;
}
cb_data.return_data = nfsdir;
if (nfs_opendir_async(nfs, path, opendir_cb, &cb_data) != 0) {
- printf("nfs_opendir_async failed\n");
+ nfs_set_error(nfs, "nfs_opendir_async failed");
return -1;
}
/*
* lseek()
*/
-static void lseek_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void lseek_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->status = status;
if (status < 0) {
- printf("lseek call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "lseek call failed with \"%s\"", (char *)data);
return;
}
cb_data.return_data = current_offset;
if (nfs_lseek_async(nfs, nfsfh, offset, whence, lseek_cb, &cb_data) != 0) {
- printf("nfs_lseek_async failed\n");
+ nfs_set_error(nfs, "nfs_lseek_async failed");
return -1;
}
/*
* statvfs()
*/
-static void statvfs_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void statvfs_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->status = status;
if (status < 0) {
- printf("statvfs call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "statvfs call failed with \"%s\"", (char *)data);
return;
}
cb_data.return_data = svfs;
if (nfs_statvfs_async(nfs, path, statvfs_cb, &cb_data) != 0) {
- printf("nfs_statvfs_async failed\n");
+ nfs_set_error(nfs, "nfs_statvfs_async failed");
return -1;
}
/*
* readlink()
*/
-static void readlink_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void readlink_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->status = status;
if (status < 0) {
- printf("readlink call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "readlink call failed with \"%s\"", (char *)data);
return;
}
if (strlen(data) > (size_t)cb_data->return_int) {
- printf("Too small buffer for readlink\n");
+ nfs_set_error(nfs, "Too small buffer for readlink");
cb_data->status = -ENAMETOOLONG;
return;
}
cb_data.return_int = bufsize;
if (nfs_readlink_async(nfs, path, readlink_cb, &cb_data) != 0) {
- printf("nfs_readlink_async failed\n");
+ nfs_set_error(nfs, "nfs_readlink_async failed");
return -1;
}
/*
* chmod()
*/
-static void chmod_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void chmod_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->status = status;
if (status < 0) {
- printf("chmod call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "chmod call failed with \"%s\"", (char *)data);
return;
}
}
cb_data.is_finished = 0;
if (nfs_chmod_async(nfs, path, mode, chmod_cb, &cb_data) != 0) {
- printf("nfs_chmod_async failed\n");
+ nfs_set_error(nfs, "nfs_chmod_async failed");
return -1;
}
/*
* fchmod()
*/
-static void fchmod_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void fchmod_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->status = status;
if (status < 0) {
- printf("fchmod call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "fchmod call failed with \"%s\"", (char *)data);
return;
}
}
cb_data.is_finished = 0;
if (nfs_fchmod_async(nfs, nfsfh, mode, fchmod_cb, &cb_data) != 0) {
- printf("nfs_fchmod_async failed\n");
+ nfs_set_error(nfs, "nfs_fchmod_async failed");
return -1;
}
/*
* chown()
*/
-static void chown_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void chown_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->status = status;
if (status < 0) {
- printf("chown call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "chown call failed with \"%s\"", (char *)data);
return;
}
}
cb_data.is_finished = 0;
if (nfs_chown_async(nfs, path, uid, gid, chown_cb, &cb_data) != 0) {
- printf("nfs_chown_async failed\n");
+ nfs_set_error(nfs, "nfs_chown_async failed");
return -1;
}
/*
* fchown()
*/
-static void fchown_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void fchown_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->status = status;
if (status < 0) {
- printf("fchown call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "fchown call failed with \"%s\"", (char *)data);
return;
}
}
cb_data.is_finished = 0;
if (nfs_fchown_async(nfs, nfsfh, uid, gid, fchown_cb, &cb_data) != 0) {
- printf("nfs_fchown_async failed\n");
+ nfs_set_error(nfs, "nfs_fchown_async failed");
return -1;
}
/*
* utimes()
*/
-static void utimes_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void utimes_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->status = status;
if (status < 0) {
- printf("utimes call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "utimes call failed with \"%s\"", (char *)data);
return;
}
}
cb_data.is_finished = 0;
if (nfs_utimes_async(nfs, path, times, utimes_cb, &cb_data) != 0) {
- printf("nfs_utimes_async failed\n");
+ nfs_set_error(nfs, "nfs_utimes_async failed");
return -1;
}
/*
* utime()
*/
-static void utime_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void utime_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->status = status;
if (status < 0) {
- printf("utime call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "utime call failed with \"%s\"", (char *)data);
return;
}
}
cb_data.is_finished = 0;
if (nfs_utime_async(nfs, path, times, utime_cb, &cb_data) != 0) {
- printf("nfs_utimes_async failed\n");
+ nfs_set_error(nfs, "nfs_utimes_async failed");
return -1;
}
/*
* access()
*/
-static void access_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void access_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->status = status;
if (status < 0) {
- printf("access call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "access call failed with \"%s\"", (char *)data);
return;
}
}
cb_data.is_finished = 0;
if (nfs_access_async(nfs, path, mode, access_cb, &cb_data) != 0) {
- printf("nfs_access_async failed\n");
+ nfs_set_error(nfs, "nfs_access_async failed");
return -1;
}
/*
* symlink()
*/
-static void symlink_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void symlink_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->status = status;
if (status < 0) {
- printf("symlink call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "symlink call failed with \"%s\"", (char *)data);
return;
}
}
cb_data.is_finished = 0;
if (nfs_symlink_async(nfs, oldpath, newpath, symlink_cb, &cb_data) != 0) {
- printf("nfs_symlink_async failed\n");
+ nfs_set_error(nfs, "nfs_symlink_async failed");
return -1;
}
/*
* rename()
*/
-static void rename_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void rename_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->status = status;
if (status < 0) {
- printf("rename call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "rename call failed with \"%s\"", (char *)data);
return;
}
}
cb_data.is_finished = 0;
if (nfs_rename_async(nfs, oldpath, newpath, rename_cb, &cb_data) != 0) {
- printf("nfs_rename_async failed\n");
+ nfs_set_error(nfs, "nfs_rename_async failed");
return -1;
}
/*
* link()
*/
-static void link_cb(int status, struct nfs_context *nfs _U_, void *data, void *private_data)
+static void link_cb(int status, struct nfs_context *nfs, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
cb_data->status = status;
if (status < 0) {
- printf("link call failed with \"%s\"\n", (char *)data);
+ nfs_set_error(nfs, "link call failed with \"%s\"", (char *)data);
return;
}
}
cb_data.is_finished = 0;
if (nfs_link_async(nfs, oldpath, newpath, link_cb, &cb_data) != 0) {
- printf("nfs_link_async failed\n");
+ nfs_set_error(nfs, "nfs_link_async failed");
return -1;
}