public readdirres(string dirName, uint count) { DirectoryInfo dir = new DirectoryInfo(dirName); FileSystemInfo[] files = dir.GetFileSystemInfos(); entries = new entry[files.Length + 2]; // Don't create new entries in FileTable for "." and "..". Find the real dirs. and use those id's uint dirFileId = FileTable.LookupFileHandle(dirName).Index; entries[0] = new entry(".", dirName + @"\.", 1, dirFileId); if (dirFileId == 1) // root { entries[1] = new entry("..", dirName + @"\..", files.Length == 0 ? count : 2, 1); } else { entries[1] = new entry("..", dirName + @"\..", files.Length == 0 ? count : 2, FileTable.LookupFileHandle(dir.Parent.FullName).Index); } uint i = 2; foreach (FileSystemInfo file in files) { if (files.Length == i - 1) { entries[i] = new entry(file, count); } else { entries[i] = new entry(file, ++i); } } }
public readdirres(string dirName, uint count) { DirectoryInfo dir = new DirectoryInfo(dirName); FileSystemInfo[] files = dir.GetFileSystemInfos(); entries = new entry[files.Length + 2]; // Don't create new entries in FileTable for "." and "..". Find the real dirs. and use those id's uint dirFileId = FileTable.LookupFileHandle(dirName).Index; entries[0] = new entry(".", dirName + @"\.", 1, dirFileId); if (dirFileId == 1) // root entries[1] = new entry("..", dirName + @"\..", files.Length == 0 ? count : 2, 1); else entries[1] = new entry("..", dirName + @"\..", files.Length == 0 ? count : 2, FileTable.LookupFileHandle(dir.Parent.FullName).Index); uint i = 2; foreach (FileSystemInfo file in files) if (files.Length == i - 1) entries[i] = new entry(file, count); else entries[i] = new entry(file, ++i); }