public string[] GetDirectoryEntires(string path, string searchPattern)
{
//TODO:Ignoring searchPattern for the moment
if (searchPattern != "*")
throw new NotImplementedException("Search patterns other than * are not yet implemented");
var found = new List<string>();
if (IsRoot(path))
{
foreach (ZipEntry entry in _storage.Entries)
{
string[] parts = entry.FileName.Split(new[] { '\\', '/' }, StringSplitOptions.RemoveEmptyEntries);
if ((parts.Length == 1 && entry.IsDirectory) || parts.Length > 1)
{
string dir = GetFullName(parts[0]);
if (!found.Contains(dir))
found.Add(dir);
}
}
return found.ToArray();
}
ZipEntry root = GetEntry(path);
if (root == null)
return new string[0];
string target = VirtualFileUtils.NormalizePath(root.FileName);
foreach (ZipEntry entry in _storage.Entries)
{
if (entry.IsDirectory == false)
continue;
string normalizedEntry = VirtualFileUtils.NormalizePath(Path.GetDirectoryName(entry.FileName));
int lastSlash = normalizedEntry.LastIndexOf('/');
string entryDirectoryName = lastSlash > 0
? normalizedEntry.Substring(0, normalizedEntry.LastIndexOf('/'))
: String.Empty;
if (String.Compare(target, entryDirectoryName, true) == 0)
found.Add(GetFullName(normalizedEntry));
}
return found.ToArray();
}