-
- if (NT_STATUS_IS_OK(status)) {
- state->fnum = SVAL(vwv+2, 0);
- tevent_req_done(req);
- return;
- }
-
- if (!NT_STATUS_EQUAL(status, NT_STATUS_NOT_SUPPORTED)) {
- tevent_req_nterror(req, status);
- return;
- }
-
- /*
- * For the new shiny OS/X Lion SMB server, try a ntcreate
- * fallback.
- */
-
- if (!map_open_params_to_ntcreate(state->fname, state->dos_deny,
- state->openfn, &access_mask,
- &share_mode, &create_disposition,
- &create_options, NULL)) {
- tevent_req_nterror(req, NT_STATUS_NOT_SUPPORTED);
- return;
- }
-
- subreq = cli_ntcreate_send(state, state->ev, state->cli,
- state->fname, 0, access_mask,
- 0, share_mode, create_disposition,
- create_options, 0);
- if (tevent_req_nomem(subreq, req)) {
- return;
- }
- tevent_req_set_callback(subreq, cli_open_ntcreate_done, req);
-}
-
-static void cli_open_ntcreate_done(struct tevent_req *subreq)
-{
- struct tevent_req *req = tevent_req_callback_data(
- subreq, struct tevent_req);
- struct cli_openx_state *state = tevent_req_data(
- req, struct cli_openx_state);
- NTSTATUS status;
-
- status = cli_ntcreate_recv(subreq, &state->fnum);
- TALLOC_FREE(subreq);