int file_set_dosmode(connection_struct *conn,
struct smb_filename *smb_fname,
uint32_t dosmode,
- const char *parent_dir,
+ struct smb_filename *parent_dir,
bool newfile)
{
int mask=0;
}
/* Fall back to UNIX modes. */
- unixmode = unix_mode(conn, dosmode, smb_fname, parent_dir);
+ unixmode = unix_mode(conn, dosmode, smb_fname, parent_dir->base_name);
/* preserve the file type bits */
mask |= S_IFMT;
status = NT_STATUS_NO_MEMORY;
goto out;
}
- file_set_dosmode(conn, smb_fname_dst, fattr, parent->base_name, false);
+ file_set_dosmode(conn, smb_fname_dst, fattr, parent, false);
TALLOC_FREE(parent);
if (ret < (off_t)smb_fname_src->st.st_ex_size) {
if (!posix_open) {
if (file_set_dosmode(conn, smb_fname,
new_dos_attributes | FILE_ATTRIBUTE_ARCHIVE,
- parent_dir, true) == 0) {
+ parent_dir_fname, true) == 0) {
unx_mode = smb_fname->st.st_ex_mode;
}
}
if (!posix_open) {
file_set_dosmode(conn, smb_dname,
file_attributes | FILE_ATTRIBUTE_DIRECTORY,
- parent_dir, true);
+ parent_dir_fname, true);
}
}
int file_set_dosmode(connection_struct *conn,
struct smb_filename *smb_fname,
uint32_t dosmode,
- const char *parent_dir,
+ struct smb_filename *parent_dir,
bool newfile);
NTSTATUS file_set_sparse(connection_struct *conn,
struct files_struct *fsp,