return result_fname;
}
-static NTSTATUS snapper_gmt_get_nt_acl(vfs_handle_struct *handle,
- const struct smb_filename *fname,
- uint32_t security_info,
- TALLOC_CTX *mem_ctx,
- struct security_descriptor **ppdesc)
-{
- time_t timestamp;
- char *stripped;
- NTSTATUS status;
- char *conv;
- struct smb_filename *smb_fname = NULL;
-
- if (!snapper_gmt_strip_snapshot(talloc_tos(), handle, fname,
- ×tamp, &stripped)) {
- return map_nt_error_from_unix(errno);
- }
- if (timestamp == 0) {
- return SMB_VFS_NEXT_GET_NT_ACL(handle, fname, security_info,
- mem_ctx, ppdesc);
- }
- conv = snapper_gmt_convert(talloc_tos(), handle, stripped, timestamp);
- TALLOC_FREE(stripped);
- if (conv == NULL) {
- return map_nt_error_from_unix(errno);
- }
- smb_fname = synthetic_smb_fname(talloc_tos(),
- conv,
- NULL,
- NULL,
- 0,
- fname->flags);
- TALLOC_FREE(conv);
- if (smb_fname == NULL) {
- return NT_STATUS_NO_MEMORY;
- }
-
- status = SMB_VFS_NEXT_GET_NT_ACL(handle, smb_fname, security_info,
- mem_ctx, ppdesc);
- TALLOC_FREE(smb_fname);
- return status;
-}
-
static NTSTATUS snapper_gmt_get_nt_acl_at(vfs_handle_struct *handle,
struct files_struct *dirfsp,
const struct smb_filename *fname,
.readlinkat_fn = snapper_gmt_readlinkat,
.mknodat_fn = snapper_gmt_mknodat,
.realpath_fn = snapper_gmt_realpath,
- .get_nt_acl_fn = snapper_gmt_get_nt_acl,
.get_nt_acl_at_fn = snapper_gmt_get_nt_acl_at,
.mkdirat_fn = snapper_gmt_mkdirat,
.getxattr_fn = snapper_gmt_getxattr,