public static IEnumerable<Duplicati.Library.Main.Volumes.IFileEntry> EnumerateFilesInDList(string file, Duplicati.Library.Utility.IFilter filter, Dictionary<string, string> options) { var p = Library.Main.Volumes.VolumeBase.ParseFilename(file); using(var cm = Library.DynamicLoader.CompressionLoader.GetModule(p.CompressionModule, file, options)) using(var filesetreader = new Library.Main.Volumes.FilesetVolumeReader(cm, new Duplicati.Library.Main.Options(options))) foreach(var f in filesetreader.Files) { if (f.Type != Duplicati.Library.Main.FilelistEntryType.File) continue; bool result; Library.Utility.IFilter evfilter; bool match = filter.Matches(f.Path, out result, out evfilter); if (!match || (match && result)) yield return f; } }
public static IEnumerable <Duplicati.Library.Main.Volumes.IFileEntry> EnumerateFilesInDList(string file, Duplicati.Library.Utility.IFilter filter, Dictionary <string, string> options) { var p = Library.Main.Volumes.VolumeBase.ParseFilename(file); using (var fs = new System.IO.FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read)) using (var cm = Library.DynamicLoader.CompressionLoader.GetModule(p.CompressionModule, fs, Library.Interface.ArchiveMode.Read, options)) using (var filesetreader = new Library.Main.Volumes.FilesetVolumeReader(cm, new Duplicati.Library.Main.Options(options))) foreach (var f in filesetreader.Files) { if (f.Type != Duplicati.Library.Main.FilelistEntryType.File) { continue; } bool result; bool match = filter.Matches(f.Path, out result, out _); if (!match || result) { yield return(f); } } }
public static IEnumerable <Duplicati.Library.Main.Volumes.IFileEntry> EnumerateFilesInDList(string file, Duplicati.Library.Utility.IFilter filter, Dictionary <string, string> options) { var p = Library.Main.Volumes.VolumeBase.ParseFilename(file); using (var cm = Library.DynamicLoader.CompressionLoader.GetModule(p.CompressionModule, file, options)) using (var filesetreader = new Library.Main.Volumes.FilesetVolumeReader(cm, new Duplicati.Library.Main.Options(options))) foreach (var f in filesetreader.Files) { if (f.Type != Duplicati.Library.Main.FilelistEntryType.File) { continue; } bool result; Library.Utility.IFilter evfilter; bool match = filter.Matches(f.Path, out result, out evfilter); if (!match || (match && result)) { yield return(f); } } }