X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=lib%2Flibnfs-sync.c;h=7ba52225395fcfc10f715181030882240c672640;hb=479302f72943be9f45d6b18c82c5502be12efa5a;hp=580f76dd63ce3ef453f97a5fd675ce94c085a571;hpb=c8f0bac1bbe9b0e70607979d51b74e59304fcc41;p=deb_libnfs.git diff --git a/lib/libnfs-sync.c b/lib/libnfs-sync.c index 580f76d..7ba5222 100644 --- a/lib/libnfs-sync.c +++ b/lib/libnfs-sync.c @@ -236,6 +236,36 @@ int nfs_stat(struct nfs_context *nfs, const char *path, struct stat *st) return cb_data.status; } +static void stat64_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, "stat call failed with \"%s\"", (char *)data); + return; + } + memcpy(cb_data->return_data, data, sizeof(struct nfs_stat_64)); +} + +int nfs_stat64(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_stat64_async(nfs, path, stat64_cb, &cb_data) != 0) { + nfs_set_error(nfs, "nfs_stat64_async failed"); + return -1; + } + + wait_for_nfs_reply(nfs, &cb_data); + + return cb_data.status; +} /* * open()