Author: pschweitzer Date: Mon Oct 27 12:35:58 2014 New Revision: 65041
URL: http://svn.reactos.org/svn/reactos?rev=65041&view=rev Log: [NTFS] Bugfixing... Part 10/X: - Properly compute entry name length in CompareFileName() - Also, in CompareFileName() properly handle the return of RtlCompareUnicodeString(); this is not RtlEqualUnicodeString()! - In NtfsLookupFileAt(), don't return an error when we're done walking the path, it's a normal behavior
All these fixes allow our NTFS to go one step farther: it can open directory/files (reading files data remains untested so far) in root and in its subdirs. Which was broken previously. The said bugfixes in action (and in image): http://www.heisspiter.net/~Pierre/rostests/NTFS_listing_subdir.png
Modified: trunk/reactos/drivers/filesystems/ntfs/mft.c
Modified: trunk/reactos/drivers/filesystems/ntfs/mft.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/ntfs/mf... ============================================================================== --- trunk/reactos/drivers/filesystems/ntfs/mft.c [iso-8859-1] (original) +++ trunk/reactos/drivers/filesystems/ntfs/mft.c [iso-8859-1] Mon Oct 27 12:35:58 2014 @@ -469,7 +469,7 @@
EntryName.Buffer = IndexEntry->FileName.Name; EntryName.Length = - EntryName.MaximumLength = IndexEntry->FileName.NameLength; + EntryName.MaximumLength = IndexEntry->FileName.NameLength * sizeof(WCHAR);
if (DirSearch) { @@ -477,7 +477,7 @@ } else { - return (RtlCompareUnicodeString(FileName, &EntryName, (IndexEntry->FileName.NameType != NTFS_FILE_NAME_POSIX)) == TRUE); + return (RtlCompareUnicodeString(FileName, &EntryName, (IndexEntry->FileName.NameType != NTFS_FILE_NAME_POSIX)) == 0); } }
@@ -702,7 +702,7 @@ }
if (Remaining.Length == 0) - return STATUS_OBJECT_PATH_NOT_FOUND; + break;
FsRtlDissectName(Current, &Current, &Remaining); }