diff options
author | Tim Prouty <tprouty@samba.org> | 2009-07-08 16:53:01 -0700 |
---|---|---|
committer | Tim Prouty <tprouty@samba.org> | 2009-07-08 21:36:04 -0700 |
commit | 02aad05e0ed3e1d4790b323a94e43184f9c4e643 (patch) | |
tree | 466f2fe414d60700aa76416b76febc543860ebab | |
parent | dcc97c5ad7d274e88ee2be2bbd37234030737bc2 (diff) | |
download | samba-02aad05e0ed3e1d4790b323a94e43184f9c4e643.tar.gz samba-02aad05e0ed3e1d4790b323a94e43184f9c4e643.tar.bz2 samba-02aad05e0ed3e1d4790b323a94e43184f9c4e643.zip |
s3: Prepare open.c to switch fsp_name to an smb_filename struct
-rw-r--r-- | source3/modules/onefs_open.c | 27 | ||||
-rw-r--r-- | source3/smbd/open.c | 26 |
2 files changed, 30 insertions, 23 deletions
diff --git a/source3/modules/onefs_open.c b/source3/modules/onefs_open.c index 52324f8181..b51d516956 100644 --- a/source3/modules/onefs_open.c +++ b/source3/modules/onefs_open.c @@ -93,12 +93,6 @@ static NTSTATUS onefs_open_file(files_struct *fsp, fsp->fh->fd = -1; errno = EPERM; - status = get_full_smb_filename(talloc_tos(), smb_fname, - &path); - if (!NT_STATUS_IS_OK(status)) { - return status; - } - /* Check permissions */ /* @@ -165,7 +159,7 @@ static NTSTATUS onefs_open_file(files_struct *fsp, */ wild = fsp->base_fsp->fsp_name; } else { - wild = path; + wild = smb_fname->base_name; } if ((local_flags & O_CREAT) && !file_existed && ms_has_wild(wild)) { @@ -257,8 +251,8 @@ static NTSTATUS onefs_open_file(files_struct *fsp, /* Inherit the ACL if required */ if (lp_inherit_perms(SNUM(conn))) { - inherit_access_posix_acl(conn, parent_dir, path, - unx_mode); + inherit_access_posix_acl(conn, parent_dir, + smb_fname->base_name, unx_mode); } /* Change the owner if required. */ @@ -268,7 +262,7 @@ static NTSTATUS onefs_open_file(files_struct *fsp, } notify_fname(conn, NOTIFY_ACTION_ADDED, - FILE_NOTIFY_CHANGE_FILE_NAME, path); + FILE_NOTIFY_CHANGE_FILE_NAME, smb_fname->base_name); } if (!file_existed) { @@ -324,16 +318,25 @@ static NTSTATUS onefs_open_file(files_struct *fsp, fsp->sent_oplock_break = NO_BREAK_SENT; fsp->is_directory = False; if (conn->aio_write_behind_list && - is_in_path(path, conn->aio_write_behind_list, conn->case_sensitive)) { + is_in_path(smb_fname->base_name, conn->aio_write_behind_list, + conn->case_sensitive)) { fsp->aio_write_behind = True; } + status = get_full_smb_filename(talloc_tos(), smb_fname, + &path); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + string_set(&fsp->fsp_name, path); + TALLOC_FREE(path); + fsp->wcp = NULL; /* Write cache pointer. */ DEBUG(2,("%s opened file %s read=%s write=%s (numopen=%d)\n", conn->server_info->unix_name, - fsp->fsp_name, + smb_fname_str_dbg(smb_fname), BOOLSTR(fsp->can_read), BOOLSTR(fsp->can_write), conn->num_files_open)); diff --git a/source3/smbd/open.c b/source3/smbd/open.c index 3e7b9d2657..e01350f2bf 100644 --- a/source3/smbd/open.c +++ b/source3/smbd/open.c @@ -358,12 +358,6 @@ static NTSTATUS open_file(files_struct *fsp, fsp->fh->fd = -1; errno = EPERM; - status = get_full_smb_filename(talloc_tos(), smb_fname, - &path); - if (!NT_STATUS_IS_OK(status)) { - return status; - } - /* Check permissions */ /* @@ -442,7 +436,7 @@ static NTSTATUS open_file(files_struct *fsp, */ wild = fsp->base_fsp->fsp_name; } else { - wild = path; + wild = smb_fname->base_name; } if ((local_flags & O_CREAT) && !file_existed && ms_has_wild(wild)) { @@ -462,8 +456,9 @@ static NTSTATUS open_file(files_struct *fsp, /* Inherit the ACL if required */ if (lp_inherit_perms(SNUM(conn))) { - inherit_access_posix_acl(conn, parent_dir, path, - unx_mode); + inherit_access_posix_acl(conn, parent_dir, + smb_fname->base_name, + unx_mode); } /* Change the owner if required. */ @@ -473,7 +468,8 @@ static NTSTATUS open_file(files_struct *fsp, } notify_fname(conn, NOTIFY_ACTION_ADDED, - FILE_NOTIFY_CHANGE_FILE_NAME, path); + FILE_NOTIFY_CHANGE_FILE_NAME, + smb_fname->base_name); } } else { @@ -619,12 +615,20 @@ static NTSTATUS open_file(files_struct *fsp, fsp->aio_write_behind = True; } + status = get_full_smb_filename(talloc_tos(), smb_fname, + &path); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + string_set(&fsp->fsp_name, path); + TALLOC_FREE(path); + fsp->wcp = NULL; /* Write cache pointer. */ DEBUG(2,("%s opened file %s read=%s write=%s (numopen=%d)\n", conn->server_info->unix_name, - fsp->fsp_name, + smb_fname_str_dbg(smb_fname), BOOLSTR(fsp->can_read), BOOLSTR(fsp->can_write), conn->num_files_open)); |