From 21d5485e062e37f112ce82ab3ae4e73c53ce081d Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sun, 16 Jan 2011 12:49:59 +0100 Subject: s3: Add cli_setpathinfo --- source3/include/proto.h | 5 +++++ source3/libsmb/clifile.c | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/source3/include/proto.h b/source3/include/proto.h index d8a13bb2aa..b710d713b0 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -1786,6 +1786,11 @@ struct tevent_req *cli_setpathinfo_send(TALLOC_CTX *mem_ctx, uint8_t *data, size_t data_len); NTSTATUS cli_setpathinfo_recv(struct tevent_req *req); +NTSTATUS cli_setpathinfo(struct cli_state *cli, + uint16_t level, + const char *path, + uint8_t *data, + size_t data_len); struct tevent_req *cli_posix_symlink_send(TALLOC_CTX *mem_ctx, struct event_context *ev, diff --git a/source3/libsmb/clifile.c b/source3/libsmb/clifile.c index 394968f506..f68c99fc71 100644 --- a/source3/libsmb/clifile.c +++ b/source3/libsmb/clifile.c @@ -205,6 +205,41 @@ NTSTATUS cli_setpathinfo_recv(struct tevent_req *req) return tevent_req_simple_recv_ntstatus(req); } +NTSTATUS cli_setpathinfo(struct cli_state *cli, + uint16_t level, + const char *path, + uint8_t *data, + size_t data_len) +{ + TALLOC_CTX *frame = talloc_stackframe(); + struct tevent_context *ev; + struct tevent_req *req; + NTSTATUS status = NT_STATUS_NO_MEMORY; + + if (cli_has_async_calls(cli)) { + /* + * Can't use sync call while an async call is in flight + */ + status = NT_STATUS_INVALID_PARAMETER; + goto fail; + } + ev = tevent_context_init(frame); + if (ev == NULL) { + goto fail; + } + req = cli_setpathinfo_send(ev, ev, cli, level, path, data, data_len); + if (req == NULL) { + goto fail; + } + if (!tevent_req_poll_ntstatus(req, ev, &status)) { + goto fail; + } + status = cli_setpathinfo_recv(req); + fail: + TALLOC_FREE(frame); + return status; +} + /**************************************************************************** Hard/Symlink a file (UNIX extensions). Creates new name (sym)linked to oldname. -- cgit