mirror of
https://github.com/samba-team/samba.git
synced 2025-01-11 05:18:09 +03:00
Move the callers that need to use the new cli_open() back to calling
it from cli_openx().
This commit is contained in:
parent
b44cfdf163
commit
c8a1082f2b
@ -300,121 +300,6 @@ static void send_message(const char *username)
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
Wrapper function around cli_open() that does an NtCreateX open by preference.
|
||||
****************************************************************************/
|
||||
|
||||
NTSTATUS smbclient_cli_open(struct cli_state *cli, const char *fname, int flags,
|
||||
int share_mode_in, uint16_t *pfnum)
|
||||
{
|
||||
NTSTATUS status;
|
||||
unsigned int openfn = 0;
|
||||
unsigned int dos_deny = 0;
|
||||
uint32_t access_mask, share_mode, create_disposition, create_options;
|
||||
|
||||
/* Do the initial mapping into OpenX parameters. */
|
||||
if (flags & O_CREAT) {
|
||||
openfn |= (1<<4);
|
||||
}
|
||||
if (!(flags & O_EXCL)) {
|
||||
if (flags & O_TRUNC)
|
||||
openfn |= (1<<1);
|
||||
else
|
||||
openfn |= (1<<0);
|
||||
}
|
||||
|
||||
dos_deny = (share_mode_in<<4);
|
||||
|
||||
if ((flags & O_ACCMODE) == O_RDWR) {
|
||||
dos_deny |= 2;
|
||||
} else if ((flags & O_ACCMODE) == O_WRONLY) {
|
||||
dos_deny |= 1;
|
||||
}
|
||||
|
||||
#if defined(O_SYNC)
|
||||
if ((flags & O_SYNC) == O_SYNC) {
|
||||
dos_deny |= (1<<14);
|
||||
}
|
||||
#endif /* O_SYNC */
|
||||
|
||||
if (share_mode_in == DENY_FCB) {
|
||||
dos_deny = 0xFF;
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* Hmmm. This is what I think the above code
|
||||
should look like if it's using the constants
|
||||
we #define. JRA. */
|
||||
|
||||
if (flags & O_CREAT) {
|
||||
openfn |= OPENX_FILE_CREATE_IF_NOT_EXIST;
|
||||
}
|
||||
if (!(flags & O_EXCL)) {
|
||||
if (flags & O_TRUNC)
|
||||
openfn |= OPENX_FILE_EXISTS_TRUNCATE;
|
||||
else
|
||||
openfn |= OPENX_FILE_EXISTS_OPEN;
|
||||
}
|
||||
|
||||
dos_deny = SET_DENY_MODE(share_mode_in);
|
||||
|
||||
if ((flags & O_ACCMODE) == O_RDWR) {
|
||||
dos_deny |= DOS_OPEN_RDWR;
|
||||
} else if ((flags & O_ACCMODE) == O_WRONLY) {
|
||||
dos_deny |= DOS_OPEN_WRONLY;
|
||||
}
|
||||
|
||||
#if defined(O_SYNC)
|
||||
if ((flags & O_SYNC) == O_SYNC) {
|
||||
dos_deny |= FILE_SYNC_OPENMODE;
|
||||
}
|
||||
#endif /* O_SYNC */
|
||||
|
||||
if (share_mode_in == DENY_FCB) {
|
||||
dos_deny = 0xFF;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!map_open_params_to_ntcreate(fname, dos_deny,
|
||||
openfn, &access_mask,
|
||||
&share_mode, &create_disposition,
|
||||
&create_options, NULL)) {
|
||||
goto try_openx;
|
||||
}
|
||||
|
||||
status = cli_ntcreate(cli,
|
||||
fname,
|
||||
0,
|
||||
access_mask,
|
||||
0,
|
||||
share_mode,
|
||||
create_disposition,
|
||||
create_options,
|
||||
0,
|
||||
pfnum);
|
||||
|
||||
/* Try and cope will all varients of "we don't do this call"
|
||||
and fall back to openX. */
|
||||
|
||||
if (NT_STATUS_EQUAL(status,NT_STATUS_NOT_IMPLEMENTED) ||
|
||||
NT_STATUS_EQUAL(status,NT_STATUS_INVALID_INFO_CLASS) ||
|
||||
NT_STATUS_EQUAL(status,NT_STATUS_PROCEDURE_NOT_FOUND) ||
|
||||
NT_STATUS_EQUAL(status,NT_STATUS_INVALID_LEVEL) ||
|
||||
NT_STATUS_EQUAL(status,NT_STATUS_INVALID_PARAMETER) ||
|
||||
NT_STATUS_EQUAL(status,NT_STATUS_INVALID_DEVICE_REQUEST) ||
|
||||
NT_STATUS_EQUAL(status,NT_STATUS_INVALID_DEVICE_STATE) ||
|
||||
NT_STATUS_EQUAL(status,NT_STATUS_CTL_FILE_NOT_SUPPORTED) ||
|
||||
NT_STATUS_EQUAL(status,NT_STATUS_UNSUCCESSFUL)) {
|
||||
goto try_openx;
|
||||
}
|
||||
|
||||
return status;
|
||||
|
||||
try_openx:
|
||||
|
||||
return cli_openx(cli, fname, flags, share_mode_in, pfnum);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
Check the space on a device.
|
||||
****************************************************************************/
|
||||
@ -1212,7 +1097,7 @@ static int do_get(const char *rname, const char *lname_in, bool reget)
|
||||
|
||||
clock_gettime_mono(&tp_start);
|
||||
|
||||
status = smbclient_cli_open(targetcli, targetname, O_RDONLY, DENY_NONE, &fnum);
|
||||
status = cli_open(targetcli, targetname, O_RDONLY, DENY_NONE, &fnum);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
d_printf("%s opening remote file %s\n", nt_errstr(status),
|
||||
rname);
|
||||
@ -1971,7 +1856,7 @@ static int do_put(const char *rname, const char *lname, bool reput)
|
||||
clock_gettime_mono(&tp_start);
|
||||
|
||||
if (reput) {
|
||||
status = smbclient_cli_open(targetcli, targetname, O_RDWR|O_CREAT, DENY_NONE, &fnum);
|
||||
status = cli_open(targetcli, targetname, O_RDWR|O_CREAT, DENY_NONE, &fnum);
|
||||
if (NT_STATUS_IS_OK(status)) {
|
||||
if (!NT_STATUS_IS_OK(status = cli_qfileinfo_basic(
|
||||
targetcli, fnum, NULL,
|
||||
@ -1986,7 +1871,7 @@ static int do_put(const char *rname, const char *lname, bool reput)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
status = smbclient_cli_open(targetcli, targetname, O_RDWR|O_CREAT|O_TRUNC, DENY_NONE, &fnum);
|
||||
status = cli_open(targetcli, targetname, O_RDWR|O_CREAT|O_TRUNC, DENY_NONE, &fnum);
|
||||
}
|
||||
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
|
@ -30,8 +30,6 @@ struct file_info;
|
||||
|
||||
const char *client_get_cur_dir(void);
|
||||
const char *client_set_cur_dir(const char *newdir);
|
||||
NTSTATUS smbclient_cli_open(struct cli_state *cli, const char *fname, int flags,
|
||||
int share_mode_in, uint16_t *pfnum);
|
||||
NTSTATUS do_list(const char *mask,
|
||||
uint16 attribute,
|
||||
NTSTATUS (*fn)(struct cli_state *cli_state, struct file_info *,
|
||||
|
@ -655,7 +655,7 @@ static NTSTATUS do_atar(const char *rname_in, char *lname,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
status = smbclient_cli_open(cli, rname, O_RDONLY, DENY_NONE, &fnum);
|
||||
status = cli_open(cli, rname, O_RDONLY, DENY_NONE, &fnum);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
DEBUG(0,("%s opening remote file %s (%s)\n",
|
||||
nt_errstr(status),rname, client_get_cur_dir()));
|
||||
@ -1016,7 +1016,7 @@ static int get_file(file_info2 finfo)
|
||||
return False;
|
||||
}
|
||||
|
||||
status = smbclient_cli_open(cli, finfo.name, O_RDWR|O_CREAT|O_TRUNC, DENY_NONE, &fnum);
|
||||
status = cli_open(cli, finfo.name, O_RDWR|O_CREAT|O_TRUNC, DENY_NONE, &fnum);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
DEBUG(0, ("abandoning restore\n"));
|
||||
return False;
|
||||
|
@ -576,7 +576,7 @@ smb_print(struct cli_state * cli, /* I - SMB connection */
|
||||
* Open the printer device...
|
||||
*/
|
||||
|
||||
nt_status = cli_openx(cli, title, O_RDWR | O_CREAT | O_TRUNC, DENY_NONE,
|
||||
nt_status = cli_open(cli, title, O_RDWR | O_CREAT | O_TRUNC, DENY_NONE,
|
||||
&fnum);
|
||||
if (!NT_STATUS_IS_OK(nt_status)) {
|
||||
fprintf(stderr, "ERROR: %s opening remote spool %s\n",
|
||||
|
@ -123,7 +123,7 @@ SMBC_open_ctx(SMBCCTX *context,
|
||||
}
|
||||
/*d_printf(">>>open: resolved %s as %s\n", path, targetpath);*/
|
||||
|
||||
status = cli_openx(targetcli, targetpath, flags,
|
||||
status = cli_open(targetcli, targetpath, flags,
|
||||
context->internal->share_mode, &fd);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
|
||||
@ -633,7 +633,7 @@ SMBC_setatr(SMBCCTX * context, SMBCSRV *srv, char *path,
|
||||
srv->no_pathinfo = True;
|
||||
|
||||
/* Open the file */
|
||||
if (!NT_STATUS_IS_OK(cli_openx(srv->cli, path, O_RDWR, DENY_NONE, &fd))) {
|
||||
if (!NT_STATUS_IS_OK(cli_open(srv->cli, path, O_RDWR, DENY_NONE, &fd))) {
|
||||
errno = SMBC_errno(context, srv->cli);
|
||||
TALLOC_FREE(frame);
|
||||
return -1;
|
||||
|
@ -327,7 +327,7 @@ NTSTATUS net_copy_file(struct net_context *c,
|
||||
DEBUGADD(3,("opening %s %s on originating server\n",
|
||||
is_file ? "file":"dir", src_name));
|
||||
if (is_file)
|
||||
nt_status = cli_openx(cli_share_src, src_name, O_RDONLY, DENY_NONE, &fnum_src);
|
||||
nt_status = cli_open(cli_share_src, src_name, O_RDONLY, DENY_NONE, &fnum_src);
|
||||
else
|
||||
nt_status = cli_ntcreate(cli_share_src, src_name, 0, READ_CONTROL_ACCESS, 0,
|
||||
FILE_SHARE_READ|FILE_SHARE_WRITE, FILE_OPEN, 0x0, 0x0, &fnum_src);
|
||||
@ -344,7 +344,7 @@ NTSTATUS net_copy_file(struct net_context *c,
|
||||
|
||||
/* open file on the destination server */
|
||||
DEBUGADD(3,("opening file %s on destination server\n", dst_name));
|
||||
nt_status = cli_openx(cli_share_dst, dst_name,
|
||||
nt_status = cli_open(cli_share_dst, dst_name,
|
||||
O_RDWR|O_CREAT|O_TRUNC, DENY_NONE, &fnum_dst);
|
||||
|
||||
if (!NT_STATUS_IS_OK(nt_status)) {
|
||||
|
Loading…
Reference in New Issue
Block a user