1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-02 09:47:23 +03:00

s3: Convert cli_posix_getfacl to cli_qpathinfo_send

This commit is contained in:
Volker Lendecke 2010-07-25 17:46:01 +02:00
parent cb9baa7c2c
commit 786e4cd098

View File

@ -587,22 +587,7 @@ struct getfacl_state {
uint8_t *data;
};
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);
}
static void cli_posix_getfacl_done(struct tevent_req *subreq);
struct tevent_req *cli_posix_getfacl_send(TALLOC_CTX *mem_ctx,
struct event_context *ev,
@ -616,43 +601,8 @@ struct tevent_req *cli_posix_getfacl_send(TALLOC_CTX *mem_ctx,
if (req == NULL) {
return NULL;
}
/* Setup setup word. */
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. */
subreq = cli_qpathinfo_send(state, ev, cli, fname, SMB_QUERY_POSIX_ACL,
0, cli->max_xmit);
if (tevent_req_nomem(subreq, req)) {
return tevent_req_post(req, ev);
}
@ -660,6 +610,24 @@ struct tevent_req *cli_posix_getfacl_send(TALLOC_CTX *mem_ctx,
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,
TALLOC_CTX *mem_ctx,
size_t *prb_size,