public void Test() { IFilter filter = new XZ(); filter.Open(location); Assert.AreEqual(true, filter.IsOpened()); Assert.AreEqual(1048576, filter.GetDataForkLength()); Assert.AreNotEqual(null, filter.GetDataForkStream()); Assert.AreEqual(0, filter.GetResourceForkLength()); Assert.AreEqual(null, filter.GetResourceForkStream()); Assert.AreEqual(false, filter.HasResourceFork()); filter.Close(); }
public void CheckContents() { IFilter filter = new XZ(); filter.Open(location); Stream str = filter.GetDataForkStream(); byte[] data = new byte[1048576]; str.Read(data, 0, 1048576); str.Close(); str.Dispose(); filter.Close(); Md5Context.Data(data, out byte[] result); Assert.AreEqual(ExpectedContents, result); }
public override int GetHashCode() { int result = 17; result = 31 * result + XX.GetHashCode(); result = 31 * result + XY.GetHashCode(); result = 31 * result + XZ.GetHashCode(); result = 31 * result + YX.GetHashCode(); result = 31 * result + YY.GetHashCode(); result = 31 * result + YZ.GetHashCode(); result = 31 * result + ZX.GetHashCode(); result = 31 * result + ZY.GetHashCode(); result = 31 * result + ZZ.GetHashCode(); return(result); }
public override int GetHashCode() { int h = 17; unchecked { h = h * 23 + XX.GetHashCode(); h = h * 23 + XY.GetHashCode(); h = h * 23 + XZ.GetHashCode(); h = h * 23 + YX.GetHashCode(); h = h * 23 + YY.GetHashCode(); h = h * 23 + YZ.GetHashCode(); h = h * 23 + ZX.GetHashCode(); h = h * 23 + ZY.GetHashCode(); h = h * 23 + ZZ.GetHashCode(); } return(h); }
private ArticleCluster GetArticleCluster(int ClusterNumber) { ArticleCluster AC = new ArticleCluster(); zimFileBinaryReader.BaseStream.Seek(ClusterPointers [ClusterNumber], SeekOrigin.Begin); AC.Compression = (ArticleCluster.CompressionType)zimFileBinaryReader.ReadByte(); switch (AC.Compression) { case ArticleCluster.CompressionType.LZMA2: AC.PopulateArticle(XZ.OpenXZ(zimFileBinaryReader)); break; default: AC.PopulateArticle(zimFileBinaryReader.BaseStream); break; } return(AC); }
/// <summary> /// Get the content-detectable protections associated with a single path /// </summary> /// <param name="file">Path to the file to scan</param> /// <returns>Dictionary of list of strings representing the found protections</returns> private Dictionary <string, List <string> > GetInternalProtections(string file) { // Quick sanity check before continuing if (!File.Exists(file)) { return(null); } // Initialze the protections found var protections = new Dictionary <string, List <string> >(); // Get the extension for certain checks string extension = Path.GetExtension(file).ToLower().TrimStart('.'); // Open the file and begin scanning using (FileStream fs = File.OpenRead(file)) { // Get the first 16 bytes for matching byte[] magic = new byte[16]; try { fs.Read(magic, 0, 16); fs.Seek(-16, SeekOrigin.Current); } catch { // We don't care what the issue was, we can't read or seek the file return(null); } #region Non-Archive File Types // Executable if (ScanAllFiles || new Executable().ShouldScan(magic)) { var subProtections = new Executable().Scan(this, fs, file); Utilities.AppendToDictionary(protections, subProtections); } // Text-based files if (ScanAllFiles || new Textfile().ShouldScan(magic, extension)) { var subProtections = new Textfile().Scan(this, fs, file); Utilities.AppendToDictionary(protections, subProtections); } #endregion #region Archive File Types // If we're scanning archives, we have a few to try out if (ScanArchives) { // 7-Zip archive if (new SevenZip().ShouldScan(magic)) { var subProtections = new SevenZip().Scan(this, fs, file); Utilities.PrependToKeys(subProtections, file); Utilities.AppendToDictionary(protections, subProtections); } // BFPK archive if (new BFPK().ShouldScan(magic)) { var subProtections = new BFPK().Scan(this, fs, file); Utilities.PrependToKeys(subProtections, file); Utilities.AppendToDictionary(protections, subProtections); } // BZip2 if (new BZip2().ShouldScan(magic)) { var subProtections = new BZip2().Scan(this, fs, file); Utilities.PrependToKeys(subProtections, file); Utilities.AppendToDictionary(protections, subProtections); } // GZIP if (new GZIP().ShouldScan(magic)) { var subProtections = new GZIP().Scan(this, fs, file); Utilities.PrependToKeys(subProtections, file); Utilities.AppendToDictionary(protections, subProtections); } // InstallShield Cabinet if (file != null && new InstallShieldCAB().ShouldScan(magic)) { var subProtections = new InstallShieldCAB().Scan(this, file); Utilities.PrependToKeys(subProtections, file); Utilities.AppendToDictionary(protections, subProtections); } // Microsoft Cabinet if (file != null && new MicrosoftCAB().ShouldScan(magic)) { var subProtections = new MicrosoftCAB().Scan(this, file); Utilities.PrependToKeys(subProtections, file); Utilities.AppendToDictionary(protections, subProtections); } // MSI if (file != null && new MSI().ShouldScan(magic)) { var subProtections = new MSI().Scan(this, file); Utilities.PrependToKeys(subProtections, file); Utilities.AppendToDictionary(protections, subProtections); } // MPQ archive if (file != null && new MPQ().ShouldScan(magic)) { var subProtections = new MPQ().Scan(this, file); Utilities.PrependToKeys(subProtections, file); Utilities.AppendToDictionary(protections, subProtections); } // PKZIP archive (and derivatives) if (new PKZIP().ShouldScan(magic)) { var subProtections = new PKZIP().Scan(this, fs, file); Utilities.PrependToKeys(subProtections, file); Utilities.AppendToDictionary(protections, subProtections); } // RAR archive if (new RAR().ShouldScan(magic)) { var subProtections = new RAR().Scan(this, fs, file); Utilities.PrependToKeys(subProtections, file); Utilities.AppendToDictionary(protections, subProtections); } // Tape Archive if (new TapeArchive().ShouldScan(magic)) { var subProtections = new TapeArchive().Scan(this, fs, file); Utilities.PrependToKeys(subProtections, file); Utilities.AppendToDictionary(protections, subProtections); } // Valve archive formats if (file != null && new Valve().ShouldScan(magic)) { var subProtections = new Valve().Scan(this, file); Utilities.PrependToKeys(subProtections, file); Utilities.AppendToDictionary(protections, subProtections); } // XZ if (new XZ().ShouldScan(magic)) { var subProtections = new XZ().Scan(this, fs, file); Utilities.PrependToKeys(subProtections, file); Utilities.AppendToDictionary(protections, subProtections); } } #endregion } // Clear out any empty keys Utilities.ClearEmptyKeys(protections); return(protections); }
public void CheckFilterId() { IFilter filter = new XZ(); Assert.AreEqual(true, filter.Identify(location)); }