mirror of
https://github.com/samba-team/samba.git
synced 2025-09-10 05:44:20 +03:00
s3: Convert cli_posix_getfacl to cli_qpathinfo_send
This commit is contained in:
@@ -587,22 +587,7 @@ struct getfacl_state {
|
|||||||
uint8_t *data;
|
uint8_t *data;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void cli_posix_getfacl_done(struct tevent_req *subreq)
|
static void cli_posix_getfacl_done(struct tevent_req *subreq);
|
||||||
{
|
|
||||||
struct tevent_req *req = tevent_req_callback_data(
|
|
||||||
subreq, struct tevent_req);
|
|
||||||
struct getfacl_state *state = tevent_req_data(req, struct getfacl_state);
|
|
||||||
NTSTATUS status;
|
|
||||||
|
|
||||||
status = cli_trans_recv(subreq, state, NULL, 0, NULL, NULL, 0, NULL,
|
|
||||||
&state->data, 0, &state->num_data);
|
|
||||||
TALLOC_FREE(subreq);
|
|
||||||
if (!NT_STATUS_IS_OK(status)) {
|
|
||||||
tevent_req_nterror(req, status);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
tevent_req_done(req);
|
|
||||||
}
|
|
||||||
|
|
||||||
struct tevent_req *cli_posix_getfacl_send(TALLOC_CTX *mem_ctx,
|
struct tevent_req *cli_posix_getfacl_send(TALLOC_CTX *mem_ctx,
|
||||||
struct event_context *ev,
|
struct event_context *ev,
|
||||||
@@ -616,43 +601,8 @@ struct tevent_req *cli_posix_getfacl_send(TALLOC_CTX *mem_ctx,
|
|||||||
if (req == NULL) {
|
if (req == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
subreq = cli_qpathinfo_send(state, ev, cli, fname, SMB_QUERY_POSIX_ACL,
|
||||||
/* Setup setup word. */
|
0, cli->max_xmit);
|
||||||
SSVAL(&state->setup, 0, TRANSACT2_QPATHINFO);
|
|
||||||
|
|
||||||
/* Setup param array. */
|
|
||||||
state->param = talloc_array(state, uint8_t, 6);
|
|
||||||
if (tevent_req_nomem(state->param, req)) {
|
|
||||||
return tevent_req_post(req, ev);
|
|
||||||
}
|
|
||||||
memset(state->param, '\0', 6);
|
|
||||||
SSVAL(state->param, 0, SMB_QUERY_POSIX_ACL);
|
|
||||||
|
|
||||||
state->param = trans2_bytes_push_str(state->param, cli_ucs2(cli), fname,
|
|
||||||
strlen(fname)+1, NULL);
|
|
||||||
|
|
||||||
if (tevent_req_nomem(state->param, req)) {
|
|
||||||
return tevent_req_post(req, ev);
|
|
||||||
}
|
|
||||||
|
|
||||||
subreq = cli_trans_send(state, /* mem ctx. */
|
|
||||||
ev, /* event ctx. */
|
|
||||||
cli, /* cli_state. */
|
|
||||||
SMBtrans2, /* cmd. */
|
|
||||||
NULL, /* pipe name. */
|
|
||||||
-1, /* fid. */
|
|
||||||
0, /* function. */
|
|
||||||
0, /* flags. */
|
|
||||||
&state->setup, /* setup. */
|
|
||||||
1, /* num setup uint16_t words. */
|
|
||||||
0, /* max returned setup. */
|
|
||||||
state->param, /* param. */
|
|
||||||
talloc_get_size(state->param), /* num param. */
|
|
||||||
2, /* max returned param. */
|
|
||||||
NULL, /* data. */
|
|
||||||
0, /* num data. */
|
|
||||||
cli->max_xmit); /* max returned data. */
|
|
||||||
|
|
||||||
if (tevent_req_nomem(subreq, req)) {
|
if (tevent_req_nomem(subreq, req)) {
|
||||||
return tevent_req_post(req, ev);
|
return tevent_req_post(req, ev);
|
||||||
}
|
}
|
||||||
@@ -660,6 +610,24 @@ struct tevent_req *cli_posix_getfacl_send(TALLOC_CTX *mem_ctx,
|
|||||||
return req;
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void cli_posix_getfacl_done(struct tevent_req *subreq)
|
||||||
|
{
|
||||||
|
struct tevent_req *req = tevent_req_callback_data(
|
||||||
|
subreq, struct tevent_req);
|
||||||
|
struct getfacl_state *state = tevent_req_data(
|
||||||
|
req, struct getfacl_state);
|
||||||
|
NTSTATUS status;
|
||||||
|
|
||||||
|
status = cli_qpathinfo_recv(subreq, state, &state->data,
|
||||||
|
&state->num_data);
|
||||||
|
TALLOC_FREE(subreq);
|
||||||
|
if (!NT_STATUS_IS_OK(status)) {
|
||||||
|
tevent_req_nterror(req, status);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
tevent_req_done(req);
|
||||||
|
}
|
||||||
|
|
||||||
NTSTATUS cli_posix_getfacl_recv(struct tevent_req *req,
|
NTSTATUS cli_posix_getfacl_recv(struct tevent_req *req,
|
||||||
TALLOC_CTX *mem_ctx,
|
TALLOC_CTX *mem_ctx,
|
||||||
size_t *prb_size,
|
size_t *prb_size,
|
||||||
|
Reference in New Issue
Block a user