From dfd8ec397cc24b7ed991a5ef9c544162a7228abc Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Sat, 2 Mar 2013 01:06:52 -0500 Subject: [PATCH] Windows: DirControl Reparse Point to File as File Implement the Reparse Point to File as File Policy for directory queries. Change-Id: I6458ae4721f6d8ddea59e78731893fa7b108de19 Reviewed-on: http://gerrit.openafs.org/9342 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- src/WINNT/afsrdr/kernel/lib/AFSDirControl.cpp | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/WINNT/afsrdr/kernel/lib/AFSDirControl.cpp b/src/WINNT/afsrdr/kernel/lib/AFSDirControl.cpp index 2ef7b71e6..b01c711cd 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSDirControl.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSDirControl.cpp @@ -734,6 +734,7 @@ AFSQueryDirectory( IN PIRP Irp) { ULONG ulBytesRemainingInBuffer; + BOOLEAN bUseFileInfo = FALSE; // // Drop the DirOpenReferenceCount held during a prior @@ -986,9 +987,18 @@ AFSQueryDirectory( IN PIRP Irp) ulAdditionalAttributes = FILE_ATTRIBUTE_DIRECTORY; } + else if ( AFSIgnoreReparsePointToFile()) + { + + bUseFileInfo = TRUE; + } } - ulAdditionalAttributes |= FILE_ATTRIBUTE_REPARSE_POINT; + if ( bUseFileInfo == FALSE) + { + + ulAdditionalAttributes |= FILE_ATTRIBUTE_REPARSE_POINT; + } break; } @@ -1044,9 +1054,23 @@ AFSQueryDirectory( IN PIRP Irp) } case FileDirectoryInformation: { + pDirInfo = (PFILE_DIRECTORY_INFORMATION)&pBuffer[ ulNextEntry]; - if( BooleanFlagOn( pDirEntry->Flags, AFS_DIR_ENTRY_FAKE)) + if( bUseFileInfo) + { + + pDirInfo->CreationTime = stFileInfo.CreationTime; + pDirInfo->LastWriteTime = stFileInfo.LastWriteTime; + pDirInfo->LastAccessTime = stFileInfo.LastAccessTime; + pDirInfo->ChangeTime = stFileInfo.ChangeTime; + + pDirInfo->EndOfFile = stFileInfo.EndOfFile; + pDirInfo->AllocationSize = stFileInfo.AllocationSize; + + pDirInfo->FileAttributes = stFileInfo.FileAttributes | ulAdditionalAttributes; + } + else if( BooleanFlagOn( pDirEntry->Flags, AFS_DIR_ENTRY_FAKE)) { pDirInfo->CreationTime = pFcb->ObjectInformation->CreationTime; -- 2.39.5