X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=lib%2Flibnfs-sync.c;h=701cd0678a747716d514227a590f8d786ca2975a;hb=1ec6b50aef06d7b3e27db1b406e080f7785677e9;hp=bd6048eb2751233cf3f66e4f105ec39333a091cb;hpb=86ef4910045771a1da4023a1880ba1c9e265eb6d;p=deb_libnfs.git diff --git a/lib/libnfs-sync.c b/lib/libnfs-sync.c index bd6048e..701cd06 100644 --- a/lib/libnfs-sync.c +++ b/lib/libnfs-sync.c @@ -576,7 +576,37 @@ int nfs_creat(struct nfs_context *nfs, const char *path, int mode, struct nfsfh return cb_data.status; } +/* + * mknod() + */ +static void mknod_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, "mknod call failed with \"%s\"", (char *)data); + return; + } +} + +int nfs_mknod(struct nfs_context *nfs, const char *path, int mode, int dev) +{ + struct sync_cb_data cb_data; + + cb_data.is_finished = 0; + + if (nfs_mknod_async(nfs, path, mode, dev, mknod_cb, &cb_data) != 0) { + nfs_set_error(nfs, "nfs_creat_async failed"); + return -1; + } + + wait_for_nfs_reply(nfs, &cb_data); + + return cb_data.status; +} /*