From: Jeffrey Altman Date: Mon, 1 Oct 2012 16:03:49 +0000 (-0400) Subject: Windows: File Info Query Symlinks X-Git-Tag: upstream/1.8.0_pre1^2~1950 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=338014a231235fe25116b09c1e8978db2db1dbb3;p=packages%2Fo%2Fopenafs.git Windows: File Info Query Symlinks For Symlinks, always set the Reparse Point attribute and set the Directory attribute if the target is a directory. Do not return the file attributes of the target. Change-Id: I72dcde912c998e1ab3eea45426d019314e10e740 Reviewed-on: http://gerrit.openafs.org/8171 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- diff --git a/src/WINNT/afsrdr/kernel/lib/AFSFileInfo.cpp b/src/WINNT/afsrdr/kernel/lib/AFSFileInfo.cpp index fe9654d41..3353256df 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSFileInfo.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSFileInfo.cpp @@ -829,9 +829,23 @@ AFSQueryBasicInfo( IN PIRP Irp, &pCcb->AuthGroup, &stFileInfo))) { - ulFileAttribs = stFileInfo.FileAttributes; - ulFileAttribs |= FILE_ATTRIBUTE_REPARSE_POINT; + if ( ulFileAttribs == FILE_ATTRIBUTE_NORMAL) + { + + ulFileAttribs = FILE_ATTRIBUTE_REPARSE_POINT; + } + else + { + + ulFileAttribs |= FILE_ATTRIBUTE_REPARSE_POINT; + } + + if ( stFileInfo.FileAttributes & FILE_ATTRIBUTE_DIRECTORY) + { + + ulFileAttribs |= FILE_ATTRIBUTE_DIRECTORY; + } } AFSAcquireShared( &pFcb->NPFcb->Resource, @@ -936,7 +950,23 @@ AFSQueryStandardInfo( IN PIRP Irp, &pCcb->AuthGroup, &stFileInfo))) { - ulFileAttribs = stFileInfo.FileAttributes; + + if ( ulFileAttribs == FILE_ATTRIBUTE_NORMAL) + { + + ulFileAttribs = FILE_ATTRIBUTE_REPARSE_POINT; + } + else + { + + ulFileAttribs |= FILE_ATTRIBUTE_REPARSE_POINT; + } + + if ( stFileInfo.FileAttributes & FILE_ATTRIBUTE_DIRECTORY) + { + + ulFileAttribs |= FILE_ATTRIBUTE_DIRECTORY; + } } AFSAcquireShared( &pFcb->NPFcb->Resource, @@ -1419,9 +1449,23 @@ AFSQueryNetworkInfo( IN PIRP Irp, &pCcb->AuthGroup, &stFileInfo))) { - ulFileAttribs = stFileInfo.FileAttributes; - ulFileAttribs |= FILE_ATTRIBUTE_REPARSE_POINT; + if ( ulFileAttribs == FILE_ATTRIBUTE_NORMAL) + { + + ulFileAttribs = FILE_ATTRIBUTE_REPARSE_POINT; + } + else + { + + ulFileAttribs |= FILE_ATTRIBUTE_REPARSE_POINT; + } + + if ( stFileInfo.FileAttributes & FILE_ATTRIBUTE_DIRECTORY) + { + + ulFileAttribs |= FILE_ATTRIBUTE_DIRECTORY; + } } AFSAcquireShared( &pFcb->NPFcb->Resource, @@ -1596,9 +1640,23 @@ AFSQueryAttribTagInfo( IN PIRP Irp, &pCcb->AuthGroup, &stFileInfo))) { - ulFileAttribs = stFileInfo.FileAttributes; - ulFileAttribs |= FILE_ATTRIBUTE_REPARSE_POINT; + if ( ulFileAttribs == FILE_ATTRIBUTE_NORMAL) + { + + ulFileAttribs = FILE_ATTRIBUTE_REPARSE_POINT; + } + else + { + + ulFileAttribs |= FILE_ATTRIBUTE_REPARSE_POINT; + } + + if ( stFileInfo.FileAttributes & FILE_ATTRIBUTE_DIRECTORY) + { + + ulFileAttribs |= FILE_ATTRIBUTE_DIRECTORY; + } } AFSAcquireShared( &pFcb->NPFcb->Resource,