#include <sys/sockio.h>
#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
#include "libnfs-zdr.h"
#include "libnfs.h"
#include "libnfs-raw.h"
return cb_data.status;
}
+int nfs_lstat64(struct nfs_context *nfs, const char *path, struct nfs_stat_64 *st)
+{
+ struct sync_cb_data cb_data;
+
+ cb_data.is_finished = 0;
+ cb_data.return_data = st;
+
+ if (nfs_lstat64_async(nfs, path, stat64_cb, &cb_data) != 0) {
+ nfs_set_error(nfs, "nfs_lstat64_async failed");
+ return -1;
+ }
+
+ wait_for_nfs_reply(nfs, &cb_data);
+
+ return cb_data.status;
+}
+
/*
* open()
*/
return cb_data.status;
}
+int nfs_lchmod(struct nfs_context *nfs, const char *path, int mode)
+{
+ struct sync_cb_data cb_data;
+
+ cb_data.is_finished = 0;
+
+ if (nfs_lchmod_async(nfs, path, mode, chmod_cb, &cb_data) != 0) {
+ nfs_set_error(nfs, "nfs_lchmod_async failed");
+ return -1;
+ }
+
+ wait_for_nfs_reply(nfs, &cb_data);
+
+ return cb_data.status;
+}
+
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;
+
+ cb_data.is_finished = 0;
+
+ if (nfs_lchown_async(nfs, path, uid, gid, chown_cb, &cb_data) != 0) {
+ nfs_set_error(nfs, "nfs_lchown_async failed");
+ return -1;
+ }
+
+ wait_for_nfs_reply(nfs, &cb_data);
+
+ return cb_data.status;
+}
+
/*
* fchown()
*/
return cb_data.status;
}
+int nfs_lutimes(struct nfs_context *nfs, const char *path, struct timeval *times)
+{
+ struct sync_cb_data cb_data;
+
+ cb_data.is_finished = 0;
+
+ if (nfs_lutimes_async(nfs, path, times, utimes_cb, &cb_data) != 0) {
+ nfs_set_error(nfs, "nfs_lutimes_async failed");
+ return -1;
+ }
+
+ wait_for_nfs_reply(nfs, &cb_data);
+
+ return cb_data.status;
+}
+
/*
+/*
+ * access2()
+ */
+static void access2_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) {
+ nfs_set_error(nfs, "access2 call failed with \"%s\"", (char *)data);
+ return;
+ }
+}
+
+int nfs_access2(struct nfs_context *nfs, const char *path)
+{
+ struct sync_cb_data cb_data;
+
+ cb_data.is_finished = 0;
+
+ if (nfs_access2_async(nfs, path, access2_cb, &cb_data) != 0) {
+ nfs_set_error(nfs, "nfs_access2_async failed");
+ return -1;
+ }
+
+ wait_for_nfs_reply(nfs, &cb_data);
+
+ return cb_data.status;
+}
+
+
+
/*
* symlink()
*/