mirror of
https://github.com/winfsp/winfsp.git
synced 2025-06-08 04:52:10 -05:00
tst: memfs-dotnet: ReadDirectory fixes
This commit is contained in:
parent
bf64bcf9ba
commit
a6ff8a87de
@ -134,11 +134,11 @@ namespace memfs
|
|||||||
}
|
}
|
||||||
public Boolean HasChild(FileNode FileNode)
|
public Boolean HasChild(FileNode FileNode)
|
||||||
{
|
{
|
||||||
foreach (String Name in GetChildrenFileNames(FileNode))
|
foreach (String Name in GetChildrenFileNames(FileNode, null))
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
public IEnumerable<String> GetChildrenFileNames(FileNode FileNode)
|
public IEnumerable<String> GetChildrenFileNames(FileNode FileNode, String Marker)
|
||||||
{
|
{
|
||||||
String MinName = "\\";
|
String MinName = "\\";
|
||||||
String MaxName = "]";
|
String MaxName = "]";
|
||||||
@ -147,9 +147,11 @@ namespace memfs
|
|||||||
MinName = FileNode.FileName + "\\";
|
MinName = FileNode.FileName + "\\";
|
||||||
MaxName = FileNode.FileName + "]";
|
MaxName = FileNode.FileName + "]";
|
||||||
}
|
}
|
||||||
|
if (null != Marker)
|
||||||
|
MinName = FileNode.FileName + Marker;
|
||||||
foreach (String Name in Set.GetViewBetween(MinName, MaxName))
|
foreach (String Name in Set.GetViewBetween(MinName, MaxName))
|
||||||
if (Name.Length > MinName.Length &&
|
if (Name != MinName &&
|
||||||
-1 == Name.IndexOfAny(Delimiters, MinName.Length))
|
Name.Length > MaxName.Length && -1 == Name.IndexOfAny(Delimiters, MaxName.Length))
|
||||||
yield return Name;
|
yield return Name;
|
||||||
}
|
}
|
||||||
public IEnumerable<String> GetStreamFileNames(FileNode FileNode)
|
public IEnumerable<String> GetStreamFileNames(FileNode FileNode)
|
||||||
@ -776,25 +778,26 @@ namespace memfs
|
|||||||
ChildrenFileNames.Add(".");
|
ChildrenFileNames.Add(".");
|
||||||
ChildrenFileNames.Add("..");
|
ChildrenFileNames.Add("..");
|
||||||
}
|
}
|
||||||
ChildrenFileNames.AddRange(FileNodeMap.GetChildrenFileNames(FileNode));
|
ChildrenFileNames.AddRange(FileNodeMap.GetChildrenFileNames(FileNode, Marker));
|
||||||
Context = Enumerator = ChildrenFileNames.GetEnumerator();
|
Context = Enumerator = ChildrenFileNames.GetEnumerator();
|
||||||
}
|
}
|
||||||
|
|
||||||
while (Enumerator.MoveNext())
|
while (Enumerator.MoveNext())
|
||||||
{
|
{
|
||||||
String FullFileName = Enumerator.Current;
|
String FullFileName = Enumerator.Current;
|
||||||
FileName = Path.GetFileName(FullFileName);
|
if ("." == FullFileName)
|
||||||
if ("." == FileName)
|
|
||||||
{
|
{
|
||||||
|
FileName = ".";
|
||||||
FileInfo = FileNode.GetFileInfo();
|
FileInfo = FileNode.GetFileInfo();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (".." == FileName)
|
else if (".." == FullFileName)
|
||||||
{
|
{
|
||||||
Int32 Result = STATUS_SUCCESS;
|
Int32 Result = STATUS_SUCCESS;
|
||||||
FileNode ParentNode = FileNodeMap.GetParent(FileNode.FileName, ref Result);
|
FileNode ParentNode = FileNodeMap.GetParent(FileNode.FileName, ref Result);
|
||||||
if (null != ParentNode)
|
if (null != ParentNode)
|
||||||
{
|
{
|
||||||
|
FileName = "..";
|
||||||
FileInfo = ParentNode.GetFileInfo();
|
FileInfo = ParentNode.GetFileInfo();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -804,6 +807,7 @@ namespace memfs
|
|||||||
FileNode ChildFileNode = FileNodeMap.Get(FullFileName);
|
FileNode ChildFileNode = FileNodeMap.Get(FullFileName);
|
||||||
if (null != ChildFileNode)
|
if (null != ChildFileNode)
|
||||||
{
|
{
|
||||||
|
FileName = Path.GetFileName(FullFileName);
|
||||||
FileInfo = ChildFileNode.GetFileInfo();
|
FileInfo = ChildFileNode.GetFileInfo();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user