mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 18:15:11 +00:00
[NTFS]
- In NtfsQueryDirectory(), don't upcase name in dir search pattern, it can conflict with POSIX names. - In CompareFileName(), handle the fact that for Win32 & DOS we do case insensitive comparisons by upcasing name before match. Don't do it for POSIX names! This fixes name completion in cmd for POSIX. And doesn't break it for Win32 :-). svn path=/trunk/; revision=65462
This commit is contained in:
parent
16aefd4c54
commit
d010ffc7df
2 changed files with 21 additions and 9 deletions
|
@ -348,14 +348,7 @@ NtfsQueryDirectory(PNTFS_IRP_CONTEXT IrpContext)
|
|||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
}
|
||||
|
||||
Status = RtlUpcaseUnicodeString(&Pattern, SearchPattern, FALSE);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("RtlUpcaseUnicodeString('%wZ') failed with status 0x%08lx\n", &Pattern, Status);
|
||||
ExFreePoolWithTag(Ccb->DirectorySearchPattern, TAG_NTFS);
|
||||
Ccb->DirectorySearchPattern = NULL;
|
||||
return Status;
|
||||
}
|
||||
memcpy(Ccb->DirectorySearchPattern, SearchPattern->Buffer, SearchPattern->Length);
|
||||
Ccb->DirectorySearchPattern[SearchPattern->Length / sizeof(WCHAR)] = 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -466,6 +466,7 @@ CompareFileName(PUNICODE_STRING FileName,
|
|||
PINDEX_ENTRY_ATTRIBUTE IndexEntry,
|
||||
BOOLEAN DirSearch)
|
||||
{
|
||||
BOOLEAN Ret, Alloc = FALSE;
|
||||
UNICODE_STRING EntryName;
|
||||
|
||||
EntryName.Buffer = IndexEntry->FileName.Name;
|
||||
|
@ -474,7 +475,25 @@ CompareFileName(PUNICODE_STRING FileName,
|
|||
|
||||
if (DirSearch)
|
||||
{
|
||||
return FsRtlIsNameInExpression(FileName, &EntryName, (IndexEntry->FileName.NameType != NTFS_FILE_NAME_POSIX), NULL);
|
||||
UNICODE_STRING IntFileName;
|
||||
if (IndexEntry->FileName.NameType != NTFS_FILE_NAME_POSIX)
|
||||
{
|
||||
ASSERT(NT_SUCCESS(RtlUpcaseUnicodeString(&IntFileName, FileName, TRUE)));
|
||||
Alloc = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
IntFileName = *FileName;
|
||||
}
|
||||
|
||||
Ret = FsRtlIsNameInExpression(&IntFileName, &EntryName, (IndexEntry->FileName.NameType != NTFS_FILE_NAME_POSIX), NULL);
|
||||
|
||||
if (Alloc)
|
||||
{
|
||||
RtlFreeUnicodeString(&IntFileName);
|
||||
}
|
||||
|
||||
return Ret;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue