mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Preemptive FileTypes cleanup
This commit is contained in:
@@ -60,11 +60,8 @@ namespace SabreTools.FileTypes.Archives
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Create a new TorrentGZipArchive from the given file
|
/// Create a new TorrentGZipArchive from the given file
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="filename">Name of the file to use as an archive</param>
|
public GZipArchive(string filename)
|
||||||
/// <param name="read">True for opening file as read, false for opening file as write</param>
|
: base(filename)
|
||||||
/// <param name="getHashes">True if hashes for this file should be calculated, false otherwise (default)</param>
|
|
||||||
public GZipArchive(string filename, bool getHashes = false)
|
|
||||||
: base(filename, getHashes)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,10 +31,8 @@ namespace SabreTools.FileTypes.Archives
|
|||||||
/// Create a new TorrentRARArchive from the given file
|
/// Create a new TorrentRARArchive from the given file
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="filename">Name of the file to use as an archive</param>
|
/// <param name="filename">Name of the file to use as an archive</param>
|
||||||
/// <param name="read">True for opening file as read, false for opening file as write</param>
|
public RarArchive(string filename)
|
||||||
/// <param name="getHashes">True if hashes for this file should be calculated, false otherwise (default)</param>
|
: base(filename)
|
||||||
public RarArchive(string filename, bool getHashes = false)
|
|
||||||
: base(filename, getHashes)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -38,9 +38,8 @@ namespace SabreTools.FileTypes.Archives
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="filename">Name of the file to use as an archive</param>
|
/// <param name="filename">Name of the file to use as an archive</param>
|
||||||
/// <param name="read">True for opening file as read, false for opening file as write</param>
|
/// <param name="read">True for opening file as read, false for opening file as write</param>
|
||||||
/// <param name="getHashes">True if hashes for this file should be calculated, false otherwise (default)</param>
|
public SevenZipArchive(string filename)
|
||||||
public SevenZipArchive(string filename, bool getHashes = false)
|
: base(filename)
|
||||||
: base(filename, getHashes)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,10 +36,8 @@ namespace SabreTools.FileTypes.Archives
|
|||||||
/// Create a new Tape archive from the given file
|
/// Create a new Tape archive from the given file
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="filename">Name of the file to use as an archive</param>
|
/// <param name="filename">Name of the file to use as an archive</param>
|
||||||
/// <param name="read">True for opening file as read, false for opening file as write</param>
|
public TapeArchive(string filename)
|
||||||
/// <param name="getHashes">True if hashes for this file should be calculated, false otherwise (default)</param>
|
: base(filename)
|
||||||
public TapeArchive(string filename, bool getHashes = false)
|
|
||||||
: base(filename, getHashes)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,10 +46,8 @@ namespace SabreTools.FileTypes.Archives
|
|||||||
/// Create a new TorrentGZipArchive from the given file
|
/// Create a new TorrentGZipArchive from the given file
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="filename">Name of the file to use as an archive</param>
|
/// <param name="filename">Name of the file to use as an archive</param>
|
||||||
/// <param name="read">True for opening file as read, false for opening file as write</param>
|
public XZArchive(string filename)
|
||||||
/// <param name="getHashes">True if hashes for this file should be calculated, false otherwise (default)</param>
|
: base(filename)
|
||||||
public XZArchive(string filename, bool getHashes = false)
|
|
||||||
: base(filename, getHashes)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -44,10 +44,8 @@ namespace SabreTools.FileTypes.Archives
|
|||||||
/// Create a new TorrentZipArchive from the given file
|
/// Create a new TorrentZipArchive from the given file
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="filename">Name of the file to use as an archive</param>
|
/// <param name="filename">Name of the file to use as an archive</param>
|
||||||
/// <param name="read">True for opening file as read, false for opening file as write</param>
|
public ZipArchive(string filename)
|
||||||
/// <param name="getHashes">True if hashes for this file should be calculated, false otherwise (default)</param>
|
: base(filename)
|
||||||
public ZipArchive(string filename, bool getHashes = false)
|
|
||||||
: base(filename, getHashes)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -34,12 +34,11 @@ namespace SabreTools.FileTypes
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Create a new Archive from the given file
|
/// Create a new BaseArchive from the given file
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="filename">Name of the file to use as an archive</param>
|
/// <param name="filename">Name of the file to use</param>
|
||||||
/// <param name="getHashes">True if hashes for this file should be calculated, false otherwise (default)</param>
|
public BaseArchive(string filename)
|
||||||
public BaseArchive(string filename, bool getHashes = false)
|
: base(filename)
|
||||||
: base(filename, getHashes)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,25 +14,16 @@ namespace SabreTools.FileTypes
|
|||||||
|
|
||||||
protected static readonly byte[] SevenZipSignature = [0x37, 0x7a, 0xbc, 0xaf, 0x27, 0x1c];
|
protected static readonly byte[] SevenZipSignature = [0x37, 0x7a, 0xbc, 0xaf, 0x27, 0x1c];
|
||||||
protected static readonly byte[] AaruFormatSignature = [0x41, 0x41, 0x52, 0x55, 0x46, 0x52, 0x4d, 0x54];
|
protected static readonly byte[] AaruFormatSignature = [0x41, 0x41, 0x52, 0x55, 0x46, 0x52, 0x4d, 0x54];
|
||||||
protected static readonly byte[] BZ2Signature = [0x42, 0x5a, 0x68];
|
|
||||||
protected static readonly byte[] CabinetSignature = [0x4d, 0x53, 0x43, 0x46];
|
|
||||||
protected static readonly byte[] CHDSignature = [0x4d, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x48, 0x44];
|
protected static readonly byte[] CHDSignature = [0x4d, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x48, 0x44];
|
||||||
protected static readonly byte[] ELFSignature = [0x7f, 0x45, 0x4c, 0x46];
|
|
||||||
protected static readonly byte[] FreeArcSignature = [0x41, 0x72, 0x43, 0x01];
|
|
||||||
protected static readonly byte[] GzSignature = [0x1f, 0x8b, 0x08];
|
protected static readonly byte[] GzSignature = [0x1f, 0x8b, 0x08];
|
||||||
protected static readonly byte[] PESignature = [0x4d, 0x5a];
|
|
||||||
protected static readonly byte[] RarSignature = [0x52, 0x61, 0x72, 0x21, 0x1a, 0x07, 0x00];
|
protected static readonly byte[] RarSignature = [0x52, 0x61, 0x72, 0x21, 0x1a, 0x07, 0x00];
|
||||||
protected static readonly byte[] RarFiveSignature = [0x52, 0x61, 0x72, 0x21, 0x1a, 0x07, 0x01, 0x00];
|
protected static readonly byte[] RarFiveSignature = [0x52, 0x61, 0x72, 0x21, 0x1a, 0x07, 0x01, 0x00];
|
||||||
protected static readonly byte[] TarSignature = [0x75, 0x73, 0x74, 0x61, 0x72, 0x20, 0x20, 0x00];
|
protected static readonly byte[] TarSignature = [0x75, 0x73, 0x74, 0x61, 0x72, 0x20, 0x20, 0x00];
|
||||||
protected static readonly byte[] TarZeroSignature = [0x75, 0x73, 0x74, 0x61, 0x72, 0x00, 0x30, 0x30];
|
protected static readonly byte[] TarZeroSignature = [0x75, 0x73, 0x74, 0x61, 0x72, 0x00, 0x30, 0x30];
|
||||||
protected static readonly byte[] XZSignature = [0xfd, 0x37, 0x7a, 0x58, 0x5a, 0x00, 0x00];
|
protected static readonly byte[] XZSignature = [0xfd, 0x37, 0x7a, 0x58, 0x5a, 0x00, 0x00];
|
||||||
protected static readonly byte[] ZipSignature = [0x50, 0x4b, 0x03, 0x04];
|
|
||||||
protected static readonly byte[] ZipSignatureEmpty = [0x50, 0x4b, 0x05, 0x06];
|
|
||||||
protected static readonly byte[] ZipSignatureSpanned = [0x50, 0x4b, 0x07, 0x08];
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
// TODO: Get all of these values automatically so there is no public "set"
|
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -110,56 +101,9 @@ namespace SabreTools.FileTypes
|
|||||||
/// Create a new BaseFile from the given file
|
/// Create a new BaseFile from the given file
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="filename">Name of the file to use</param>
|
/// <param name="filename">Name of the file to use</param>
|
||||||
/// <param name="getHashes">True if hashes for this file should be calculated (default), false otherwise</param>
|
public BaseFile(string filename)
|
||||||
public BaseFile(string filename, bool getHashes = true)
|
|
||||||
{
|
{
|
||||||
Filename = filename;
|
Filename = filename;
|
||||||
|
|
||||||
if (getHashes)
|
|
||||||
{
|
|
||||||
BaseFile? temp = GetInfo(Filename, hashes: AvailableHashTypes);
|
|
||||||
if (temp != null)
|
|
||||||
{
|
|
||||||
Parent = temp.Parent;
|
|
||||||
Date = temp.Date;
|
|
||||||
CRC = temp.CRC;
|
|
||||||
MD5 = temp.MD5;
|
|
||||||
SHA1 = temp.SHA1;
|
|
||||||
SHA256 = temp.SHA256;
|
|
||||||
SHA384 = temp.SHA384;
|
|
||||||
SHA512 = temp.SHA512;
|
|
||||||
SpamSum = temp.SpamSum;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a new BaseFile from the given file
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="filename">Name of the file to use</param>
|
|
||||||
/// <param name="stream">Stream to populate information from</param>
|
|
||||||
/// <param name="getHashes">True if hashes for this file should be calculated (default), false otherwise</param>
|
|
||||||
public BaseFile(string filename, Stream stream, bool getHashes = true)
|
|
||||||
{
|
|
||||||
Filename = filename;
|
|
||||||
|
|
||||||
if (getHashes)
|
|
||||||
{
|
|
||||||
BaseFile temp = GetInfo(stream, hashes: AvailableHashTypes);
|
|
||||||
if (temp != null)
|
|
||||||
{
|
|
||||||
Parent = temp.Parent;
|
|
||||||
Date = temp.Date;
|
|
||||||
CRC = temp.CRC;
|
|
||||||
MD5 = temp.MD5;
|
|
||||||
SHA1 = temp.SHA1;
|
|
||||||
SHA256 = temp.SHA256;
|
|
||||||
SHA384 = temp.SHA384;
|
|
||||||
SHA512 = temp.SHA512;
|
|
||||||
SpamSum = temp.SpamSum;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@@ -221,9 +165,9 @@ namespace SabreTools.FileTypes
|
|||||||
{
|
{
|
||||||
outFileType = FileType.XZArchive;
|
outFileType = FileType.XZArchive;
|
||||||
}
|
}
|
||||||
else if (magic.StartsWith(ZipSignature)
|
else if (magic.StartsWith(Models.PKZIP.Constants.LocalFileHeaderSignatureBytes)
|
||||||
|| magic.StartsWith(ZipSignatureEmpty)
|
|| magic.StartsWith(Models.PKZIP.Constants.EndOfCentralDirectoryRecordSignatureBytes)
|
||||||
|| magic.StartsWith(ZipSignatureSpanned))
|
|| magic.StartsWith(Models.PKZIP.Constants.DataDescriptorSignatureBytes))
|
||||||
{
|
{
|
||||||
outFileType = FileType.ZipArchive;
|
outFileType = FileType.ZipArchive;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,10 +3,6 @@ using SabreTools.Models.CHD;
|
|||||||
|
|
||||||
namespace SabreTools.FileTypes.CHD
|
namespace SabreTools.FileTypes.CHD
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// This is code adapted from chd.h and chd.cpp in MAME
|
|
||||||
/// Additional archival code from https://github.com/rtissera/libchdr/blob/master/src/chd.h
|
|
||||||
/// </summary>
|
|
||||||
public class CHDFile : BaseFile
|
public class CHDFile : BaseFile
|
||||||
{
|
{
|
||||||
#region Private instance variables
|
#region Private instance variables
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
namespace SabreTools.FileTypes.CHD
|
|
||||||
{
|
|
||||||
internal static class Constants
|
|
||||||
{
|
|
||||||
public const string SignatureString = "MComprHD";
|
|
||||||
|
|
||||||
#region Header Sizes
|
|
||||||
|
|
||||||
public const int HeaderV1Size = 76;
|
|
||||||
public const int HeaderV2Size = 80;
|
|
||||||
public const int HeaderV3Size = 120;
|
|
||||||
public const int HeaderV4Size = 108;
|
|
||||||
public const int HeaderV5Size = 124;
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -31,14 +31,14 @@ namespace SabreTools.FileTypes
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Flag specific to Folder to omit Machine name from output path
|
/// Flag specific to Folder to omit Machine name from output path
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly bool _writeToParent = false;
|
private readonly bool _writeToParent;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Create a new folder with no base file
|
/// Create a new Folder with no base file
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="writeToParent">True to write directly to parent, false otherwise</param>
|
/// <param name="writeToParent">True to write directly to parent, false otherwise</param>
|
||||||
public Folder(bool writeToParent = false)
|
public Folder(bool writeToParent = false)
|
||||||
@@ -49,14 +49,14 @@ namespace SabreTools.FileTypes
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Create a new folder from the given file
|
/// Create a new Folder from the given file
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="filename">Name of the file to use as an archive</param>
|
/// <param name="filename">Name of the folder to use</param>
|
||||||
/// <param name="read">True for opening file as read, false for opening file as write</param>
|
/// <param name="writeToParent">True to write directly to parent, false otherwise</param>
|
||||||
/// <param name="getHashes">True if hashes for this file should be calculated, false otherwise (default)</param>
|
public Folder(string filename, bool writeToParent = false)
|
||||||
public Folder(string filename, bool getHashes = false)
|
: base(filename)
|
||||||
: base(filename, getHashes)
|
|
||||||
{
|
{
|
||||||
|
_writeToParent = writeToParent;
|
||||||
logger = new Logger(this);
|
logger = new Logger(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -271,7 +271,7 @@ namespace SabreTools.FileTypes
|
|||||||
foreach (string dir in Directory.EnumerateDirectories(Filename, "*", SearchOption.TopDirectoryOnly))
|
foreach (string dir in Directory.EnumerateDirectories(Filename, "*", SearchOption.TopDirectoryOnly))
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
Folder fl = new(dir);
|
var fl = new Folder(dir);
|
||||||
_children.Add(fl);
|
_children.Add(fl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user