// Token: 0x06001A2F RID: 6703 RVA: 0x0006FF0A File Offset: 0x0006E10A protected override IEnumerable <UPath> EnumeratePathsImpl(UPath path, string searchPattern, SearchOption searchOption, SearchTarget searchTarget) { this.UpdateDirectories(); SearchPattern search = SearchPattern.Parse(ref path, ref searchPattern); List <UPath> foldersToProcess = new List <UPath> { path }; SortedSet <UPath> entries = new SortedSet <UPath>(UPath.DefaultComparerIgnoreCase); while (foldersToProcess.Count > 0) { UPath upath = foldersToProcess[0]; foldersToProcess.RemoveAt(0); int num = 0; entries.Clear(); SteamworksRemoteStorageFileSystem.EnterFileSystemShared(); try { SteamworksRemoteStorageFileSystem.Node directoryNode = this.GetDirectoryNode(upath); if (upath == path) { this.AssertDirectory(directoryNode, upath); } else if (!(directoryNode is SteamworksRemoteStorageFileSystem.DirectoryNode)) { continue; } SteamworksRemoteStorageFileSystem.DirectoryNode directoryNode2 = (SteamworksRemoteStorageFileSystem.DirectoryNode)directoryNode; for (int i = 0; i < directoryNode2.childCount; i++) { SteamworksRemoteStorageFileSystem.Node child = directoryNode2.GetChild(i); if (!(child is SteamworksRemoteStorageFileSystem.FileNode) || searchTarget != SearchTarget.Directory) { bool flag = search.Match(child.path); bool flag2 = searchOption == SearchOption.AllDirectories && child is SteamworksRemoteStorageFileSystem.DirectoryNode; bool flag3 = (child is SteamworksRemoteStorageFileSystem.FileNode && searchTarget != SearchTarget.Directory && flag) || (child is SteamworksRemoteStorageFileSystem.DirectoryNode && searchTarget != SearchTarget.File && flag); UPath item = upath / child.path; if (flag2) { foldersToProcess.Insert(num++, item); } if (flag3) { entries.Add(item); } } } } finally { SteamworksRemoteStorageFileSystem.ExitFileSystemShared(); } foreach (UPath upath2 in entries) { yield return(upath2); } SortedSet <UPath> .Enumerator enumerator = default(SortedSet <UPath> .Enumerator); } yield break; yield break; }
public IEnumerable<string> FindMatchingEntries([NotNull] string pattern) { Validate.ArgumentNotNull(pattern, "pattern"); var sp = new SearchPattern(pattern); foreach (var entry in DirectoryList) { if (entry.Name == SpecialNameCurrentDir || entry.Name == SpecialNameNavigateUp) { // skip special names, as framework does continue; } if (sp.Match(entry.Name)) { yield return entry.Name; } } }