From af478a92d10b418c291e0a3b51ddb2cc919c9d9c Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Fri, 22 Dec 2017 16:17:40 +0000 Subject: [PATCH] REFACTOR: All refactor in DiscImageChef.Filters. --- DiscImageChef.Filters/AppleDouble.cs | 11 ++--- DiscImageChef.Filters/AppleSingle.cs | 4 +- DiscImageChef.Filters/BZip2.cs | 11 ++--- DiscImageChef.Filters/Filters.cs | 10 ++--- DiscImageChef.Filters/ForcedSeekStream.cs | 53 ++++++++--------------- DiscImageChef.Filters/GZip.cs | 2 +- DiscImageChef.Filters/LZip.cs | 2 +- DiscImageChef.Filters/MacBinary.cs | 10 ++--- DiscImageChef.Filters/OffsetStream.cs | 22 +++------- DiscImageChef.Filters/PCExchange.cs | 28 ++++++------ DiscImageChef.Filters/XZ.cs | 15 +++---- DiscImageChef.Filters/ZZZNoFilter.cs | 4 +- DiscImageChef/Commands/Formats.cs | 2 +- 13 files changed, 68 insertions(+), 106 deletions(-) diff --git a/DiscImageChef.Filters/AppleDouble.cs b/DiscImageChef.Filters/AppleDouble.cs index 705eb3c13..0185ce3d1 100644 --- a/DiscImageChef.Filters/AppleDouble.cs +++ b/DiscImageChef.Filters/AppleDouble.cs @@ -180,7 +180,7 @@ namespace DiscImageChef.Filters public override string GetFilename() { - return basePath != null ? Path.GetFileName(basePath) : null; + return Path.GetFileName(basePath); } public override DateTime GetLastWriteTime() @@ -380,10 +380,8 @@ namespace DiscImageChef.Filters unarStream.Read(unar_b, 0, 26); header = BigEndianMarshal.ByteArrayToStructureBigEndian(unar_b); unarStream.Close(); - if(header.magic == AppleDoubleMagic && - (header.version == AppleDoubleVersion || header.version == AppleDoubleVersion2)) return true; - - return false; + return header.magic == AppleDoubleMagic && + (header.version == AppleDoubleVersion || header.version == AppleDoubleVersion2); } public override bool IsOpened() @@ -633,8 +631,7 @@ namespace DiscImageChef.Filters break; } - dataFork = new AppleDoubleEntry(); - dataFork.id = (uint)AppleDoubleEntryID.DataFork; + dataFork = new AppleDoubleEntry {id = (uint)AppleDoubleEntryID.DataFork}; if(File.Exists(path)) { FileStream dataFs = new FileStream(path, FileMode.Open, FileAccess.Read); diff --git a/DiscImageChef.Filters/AppleSingle.cs b/DiscImageChef.Filters/AppleSingle.cs index 947730f02..a8be0c752 100644 --- a/DiscImageChef.Filters/AppleSingle.cs +++ b/DiscImageChef.Filters/AppleSingle.cs @@ -157,7 +157,7 @@ namespace DiscImageChef.Filters public override void Close() { bytes = null; - if(stream != null) stream.Close(); + stream?.Close(); isBytes = false; isStream = false; isPath = false; @@ -194,7 +194,7 @@ namespace DiscImageChef.Filters public override string GetFilename() { - return basePath != null ? Path.GetFileName(basePath) : null; + return Path.GetFileName(basePath); } public override DateTime GetLastWriteTime() diff --git a/DiscImageChef.Filters/BZip2.cs b/DiscImageChef.Filters/BZip2.cs index f7038d5fd..5523332b5 100644 --- a/DiscImageChef.Filters/BZip2.cs +++ b/DiscImageChef.Filters/BZip2.cs @@ -55,7 +55,7 @@ namespace DiscImageChef.Filters public override void Close() { - if(dataStream != null) dataStream.Close(); + dataStream?.Close(); dataStream = null; basePath = null; opened = false; @@ -93,10 +93,7 @@ namespace DiscImageChef.Filters if(buffer.Length <= 512) return true; - if(buffer[buffer.Length - 512] == 0x6B && buffer[buffer.Length - 511] == 0x6F && - buffer[buffer.Length - 510] == 0x6C && buffer[buffer.Length - 509] == 0x79) return false; - - return true; + return buffer[buffer.Length - 512] != 0x6B || buffer[buffer.Length - 511] != 0x6F || buffer[buffer.Length - 510] != 0x6C || buffer[buffer.Length - 509] != 0x79; } public override bool Identify(Stream stream) @@ -116,9 +113,7 @@ namespace DiscImageChef.Filters stream.Read(buffer, 0, 4); stream.Seek(0, SeekOrigin.Begin); // Check it is not an UDIF - if(buffer[0] == 0x6B && buffer[1] == 0x6F && buffer[2] == 0x6C && buffer[3] == 0x79) return false; - - return true; + return buffer[0] != 0x6B || buffer[1] != 0x6F || buffer[2] != 0x6C || buffer[3] != 0x79; } public override bool Identify(string path) diff --git a/DiscImageChef.Filters/Filters.cs b/DiscImageChef.Filters/Filters.cs index 44cf5f8f8..24d46d194 100644 --- a/DiscImageChef.Filters/Filters.cs +++ b/DiscImageChef.Filters/Filters.cs @@ -39,12 +39,12 @@ namespace DiscImageChef.Filters { public class FiltersList { - public SortedDictionary filtersList; + public SortedDictionary Filters; public FiltersList() { Assembly assembly = Assembly.GetAssembly(typeof(Filter)); - filtersList = new SortedDictionary(); + Filters = new SortedDictionary(); foreach(Type type in assembly.GetTypes()) try @@ -52,7 +52,7 @@ namespace DiscImageChef.Filters if(!type.IsSubclassOf(typeof(Filter))) continue; Filter filter = (Filter)type.GetConstructor(Type.EmptyTypes)?.Invoke(new object[] { }); - if(filter != null && !filtersList.ContainsKey(filter.Name.ToLower())) filtersList.Add(filter.Name.ToLower(), filter); + if(filter != null && !Filters.ContainsKey(filter.Name.ToLower())) Filters.Add(filter.Name.ToLower(), filter); } catch(Exception exception) { DicConsole.ErrorWriteLine("Exception {0}", exception); } } @@ -61,7 +61,7 @@ namespace DiscImageChef.Filters { Filter noFilter = null; - foreach(Filter filter in filtersList.Values) + foreach(Filter filter in Filters.Values) if(filter.UUID != new Guid("12345678-AAAA-BBBB-CCCC-123456789000")) { if(!filter.Identify(path)) continue; @@ -84,7 +84,7 @@ namespace DiscImageChef.Filters public SortedDictionary GetFiltersList() { - return filtersList; + return Filters; } } } \ No newline at end of file diff --git a/DiscImageChef.Filters/ForcedSeekStream.cs b/DiscImageChef.Filters/ForcedSeekStream.cs index 386c1675f..821b74dbf 100644 --- a/DiscImageChef.Filters/ForcedSeekStream.cs +++ b/DiscImageChef.Filters/ForcedSeekStream.cs @@ -42,9 +42,8 @@ namespace DiscImageChef.Filters public class ForcedSeekStream : Stream where T : Stream { T baseStream; - object[] parameters; long streamLength; - const int bufferLen = 1048576; + const int BUFFER_LEN = 1048576; FileStream backStream; string backFile; @@ -55,9 +54,8 @@ namespace DiscImageChef.Filters /// Parameters that are used to create the base stream. public ForcedSeekStream(long length, params object[] args) { - parameters = args; streamLength = length; - baseStream = (T)Activator.CreateInstance(typeof(T), parameters); + baseStream = (T)Activator.CreateInstance(typeof(T), args); backFile = Path.GetTempFileName(); backStream = new FileStream(backFile, FileMode.Open, FileAccess.ReadWrite, FileShare.None); if(length == 0) CalculateLength(); @@ -69,8 +67,7 @@ namespace DiscImageChef.Filters /// Parameters that are used to create the base stream. public ForcedSeekStream(params object[] args) { - parameters = args; - baseStream = (T)Activator.CreateInstance(typeof(T), parameters); + baseStream = (T)Activator.CreateInstance(typeof(T), args); backFile = Path.GetTempFileName(); backStream = new FileStream(backFile, FileMode.Open, FileAccess.ReadWrite, FileShare.None); CalculateLength(); @@ -87,41 +84,29 @@ namespace DiscImageChef.Filters int read; do { - byte[] buffer = new byte[bufferLen]; - read = baseStream.Read(buffer, 0, bufferLen); + byte[] buffer = new byte[BUFFER_LEN]; + read = baseStream.Read(buffer, 0, BUFFER_LEN); backStream.Write(buffer, 0, read); } - while(read == bufferLen); + while(read == BUFFER_LEN); streamLength = backStream.Length; backStream.Position = 0; } - public override bool CanRead - { - get { return baseStream.CanRead; } - } + public override bool CanRead => baseStream.CanRead; - public override bool CanSeek - { - get { return true; } - } + public override bool CanSeek => true; - public override bool CanWrite - { - get { return false; } - } + public override bool CanWrite => false; - public override long Length - { - get { return streamLength; } - } + public override long Length => streamLength; public override long Position { - get { return backStream.Position; } + get => backStream.Position; - set { SetPosition(value); } + set => SetPosition(value); } void SetPosition(long position) @@ -136,15 +121,15 @@ namespace DiscImageChef.Filters backStream.Position = backStream.Length; long toposition = position - backStream.Position; - int fullBufferReads = (int)(toposition / bufferLen); - int restToRead = (int)(toposition % bufferLen); + int fullBufferReads = (int)(toposition / BUFFER_LEN); + int restToRead = (int)(toposition % BUFFER_LEN); byte[] buffer; for(int i = 0; i < fullBufferReads; i++) { - buffer = new byte[bufferLen]; - baseStream.Read(buffer, 0, bufferLen); - backStream.Write(buffer, 0, bufferLen); + buffer = new byte[BUFFER_LEN]; + baseStream.Read(buffer, 0, BUFFER_LEN); + backStream.Write(buffer, 0, BUFFER_LEN); } buffer = new byte[restToRead]; @@ -213,13 +198,13 @@ namespace DiscImageChef.Filters public override void Close() { - if(backStream != null) backStream.Close(); + backStream?.Close(); File.Delete(backFile); } ~ForcedSeekStream() { - if(backStream != null) backStream.Close(); + backStream?.Close(); File.Delete(backFile); } } diff --git a/DiscImageChef.Filters/GZip.cs b/DiscImageChef.Filters/GZip.cs index e97d325b3..90e1cc539 100644 --- a/DiscImageChef.Filters/GZip.cs +++ b/DiscImageChef.Filters/GZip.cs @@ -54,7 +54,7 @@ namespace DiscImageChef.Filters public override void Close() { - if(dataStream != null) dataStream.Close(); + dataStream?.Close(); dataStream = null; basePath = null; opened = false; diff --git a/DiscImageChef.Filters/LZip.cs b/DiscImageChef.Filters/LZip.cs index e22507789..ff378494a 100644 --- a/DiscImageChef.Filters/LZip.cs +++ b/DiscImageChef.Filters/LZip.cs @@ -55,7 +55,7 @@ namespace DiscImageChef.Filters public override void Close() { - if(dataStream != null) dataStream.Close(); + dataStream?.Close(); dataStream = null; basePath = null; opened = false; diff --git a/DiscImageChef.Filters/MacBinary.cs b/DiscImageChef.Filters/MacBinary.cs index a41b0914e..0e20b2e10 100644 --- a/DiscImageChef.Filters/MacBinary.cs +++ b/DiscImageChef.Filters/MacBinary.cs @@ -161,7 +161,7 @@ namespace DiscImageChef.Filters public short computerID; } - const uint MacBinaryMagic = 0x6D42494E; + const uint MACBINARY_MAGIC = 0x6D42494E; long dataForkOff; long rsrcForkOff; @@ -183,7 +183,7 @@ namespace DiscImageChef.Filters public override void Close() { bytes = null; - if(stream != null) stream.Close(); + stream?.Close(); isBytes = false; isStream = false; isPath = false; @@ -274,7 +274,7 @@ namespace DiscImageChef.Filters Array.Copy(buffer, 0, hdr_b, 0, 128); header = BigEndianMarshal.ByteArrayToStructureBigEndian(hdr_b); - return header.magic == MacBinaryMagic || header.version == 0 && header.filename[0] > 0 && + return header.magic == MACBINARY_MAGIC || header.version == 0 && header.filename[0] > 0 && header.filename[0] < 64 && header.zero1 == 0 && header.zero2 == 0 && header.reserved == 0 && (header.dataLength > 0 || header.resourceLength > 0); @@ -289,7 +289,7 @@ namespace DiscImageChef.Filters stream.Read(hdr_b, 0, 128); header = BigEndianMarshal.ByteArrayToStructureBigEndian(hdr_b); - return header.magic == MacBinaryMagic || header.version == 0 && header.filename[0] > 0 && + return header.magic == MACBINARY_MAGIC || header.version == 0 && header.filename[0] > 0 && header.filename[0] < 64 && header.zero1 == 0 && header.zero2 == 0 && header.reserved == 0 && (header.dataLength > 0 || header.resourceLength > 0); @@ -305,7 +305,7 @@ namespace DiscImageChef.Filters header = BigEndianMarshal.ByteArrayToStructureBigEndian(hdr_b); fstream.Close(); - return header.magic == MacBinaryMagic || header.version == 0 && header.filename[0] > 0 && + return header.magic == MACBINARY_MAGIC || header.version == 0 && header.filename[0] > 0 && header.filename[0] < 64 && header.zero1 == 0 && header.zero2 == 0 && header.reserved == 0 && (header.dataLength > 0 || header.resourceLength > 0); diff --git a/DiscImageChef.Filters/OffsetStream.cs b/DiscImageChef.Filters/OffsetStream.cs index fb405314a..96319f248 100644 --- a/DiscImageChef.Filters/OffsetStream.cs +++ b/DiscImageChef.Filters/OffsetStream.cs @@ -297,29 +297,17 @@ namespace DiscImageChef.Filters baseStream.Dispose(); } - public override bool CanRead - { - get { return baseStream.CanRead; } - } + public override bool CanRead => baseStream.CanRead; - public override bool CanSeek - { - get { return baseStream.CanSeek; } - } + public override bool CanSeek => baseStream.CanSeek; - public override bool CanWrite - { - get { return baseStream.CanWrite; } - } + public override bool CanWrite => baseStream.CanWrite; - public override long Length - { - get { return streamEnd - streamStart + 1; } - } + public override long Length => streamEnd - streamStart + 1; public override long Position { - get { return baseStream.Position - streamStart; } + get => baseStream.Position - streamStart; set { diff --git a/DiscImageChef.Filters/PCExchange.cs b/DiscImageChef.Filters/PCExchange.cs index 4641281fc..a949a49f3 100644 --- a/DiscImageChef.Filters/PCExchange.cs +++ b/DiscImageChef.Filters/PCExchange.cs @@ -41,9 +41,9 @@ namespace DiscImageChef.Filters { public class PCExchange : Filter { - const string FileId = "FILEID.DAT"; - const string FinderInfo = "FINDER.DAT"; - const string Resources = "RESOURCE.FRK"; + const string FILE_ID = "FILEID.DAT"; + const string FINDER_INFO = "FINDER.DAT"; + const string RESOURCES = "RESOURCE.FRK"; [StructLayout(LayoutKind.Sequential, Pack = 1)] struct PCExchangeEntry @@ -147,7 +147,7 @@ namespace DiscImageChef.Filters public override string GetFilename() { - return basePath != null ? Path.GetFileName(basePath) : null; + return Path.GetFileName(basePath); } public override DateTime GetLastWriteTime() @@ -200,9 +200,9 @@ namespace DiscImageChef.Filters { string parentFolder = Path.GetDirectoryName(path); - if(!File.Exists(Path.Combine(parentFolder ?? throw new InvalidOperationException(), FinderInfo))) return false; + if(!File.Exists(Path.Combine(parentFolder ?? throw new InvalidOperationException(), FINDER_INFO))) return false; - if(!Directory.Exists(Path.Combine(parentFolder, Resources))) return false; + if(!Directory.Exists(Path.Combine(parentFolder, RESOURCES))) return false; string baseFilename = Path.GetFileName(path); @@ -210,7 +210,7 @@ namespace DiscImageChef.Filters bool rsrcFound = false; FileStream finderDatStream = - new FileStream(Path.Combine(parentFolder, FinderInfo), FileMode.Open, FileAccess.Read); + new FileStream(Path.Combine(parentFolder, FINDER_INFO), FileMode.Open, FileAccess.Read); while(finderDatStream.Position + 0x5C <= finderDatStream.Length) { @@ -234,8 +234,8 @@ namespace DiscImageChef.Filters File.Exists(Path.Combine(parentFolder, dosName)) || File.Exists(Path.Combine(parentFolder, dosNameLow)); - rsrcFound |= File.Exists(Path.Combine(parentFolder, Resources, dosName)) || - File.Exists(Path.Combine(parentFolder, Resources, dosNameLow)); + rsrcFound |= File.Exists(Path.Combine(parentFolder, RESOURCES, dosName)) || + File.Exists(Path.Combine(parentFolder, RESOURCES, dosNameLow)); break; } @@ -266,7 +266,7 @@ namespace DiscImageChef.Filters string baseFilename = Path.GetFileName(path); FileStream finderDatStream = - new FileStream(Path.Combine(parentFolder ?? throw new InvalidOperationException(), FinderInfo), FileMode.Open, FileAccess.Read); + new FileStream(Path.Combine(parentFolder ?? throw new InvalidOperationException(), FINDER_INFO), FileMode.Open, FileAccess.Read); while(finderDatStream.Position + 0x5C <= finderDatStream.Length) { @@ -292,10 +292,10 @@ namespace DiscImageChef.Filters dataPath = Path.Combine(parentFolder, dosNameLow); else dataPath = null; - if(File.Exists(Path.Combine(parentFolder, Resources, dosName))) - rsrcPath = Path.Combine(parentFolder, Resources, dosName); - else if(File.Exists(Path.Combine(parentFolder, Resources, dosNameLow))) - rsrcPath = Path.Combine(parentFolder, Resources, dosNameLow); + if(File.Exists(Path.Combine(parentFolder, RESOURCES, dosName))) + rsrcPath = Path.Combine(parentFolder, RESOURCES, dosName); + else if(File.Exists(Path.Combine(parentFolder, RESOURCES, dosNameLow))) + rsrcPath = Path.Combine(parentFolder, RESOURCES, dosNameLow); else rsrcPath = null; lastWriteTime = DateHandlers.MacToDateTime(datEntry.modificationDate); diff --git a/DiscImageChef.Filters/XZ.cs b/DiscImageChef.Filters/XZ.cs index a88832f16..882d02134 100644 --- a/DiscImageChef.Filters/XZ.cs +++ b/DiscImageChef.Filters/XZ.cs @@ -54,7 +54,7 @@ namespace DiscImageChef.Filters public override void Close() { - if(dataStream != null) dataStream.Close(); + dataStream?.Close(); dataStream = null; basePath = null; opened = false; @@ -153,18 +153,18 @@ namespace DiscImageChef.Filters dataStream.Seek(0, SeekOrigin.Begin); } - int Decode(byte[] buf, int size_max, ref ulong num) + int Decode(byte[] buf, int sizeMax, ref ulong num) { - if(size_max == 0) return 0; + if(sizeMax == 0) return 0; - if(size_max > 9) size_max = 9; + if(sizeMax > 9) sizeMax = 9; num = (ulong)(buf[0] & 0x7F); int i = 0; while((buf[i++] & 0x80) == 0x80) { - if(i >= size_max || buf[i] == 0x00) return 0; + if(i >= sizeMax || buf[i] == 0x00) return 0; num |= (ulong)(buf[i] & 0x7F) << (i * 7); } @@ -239,10 +239,7 @@ namespace DiscImageChef.Filters { if(basePath?.EndsWith(".xz", StringComparison.InvariantCultureIgnoreCase) == true) return basePath.Substring(0, basePath.Length - 3); - if(basePath?.EndsWith(".xzip", StringComparison.InvariantCultureIgnoreCase) == true) - return basePath.Substring(0, basePath.Length - 5); - - return basePath; + return basePath?.EndsWith(".xzip", StringComparison.InvariantCultureIgnoreCase) == true ? basePath.Substring(0, basePath.Length - 5) : basePath; } public override string GetParentFolder() diff --git a/DiscImageChef.Filters/ZZZNoFilter.cs b/DiscImageChef.Filters/ZZZNoFilter.cs index fc8e15fcb..2ecd9349f 100644 --- a/DiscImageChef.Filters/ZZZNoFilter.cs +++ b/DiscImageChef.Filters/ZZZNoFilter.cs @@ -51,7 +51,7 @@ namespace DiscImageChef.Filters public override void Close() { - if(dataStream != null) dataStream.Close(); + dataStream?.Close(); dataStream = null; basePath = null; opened = false; @@ -153,7 +153,7 @@ namespace DiscImageChef.Filters public override string GetFilename() { - return basePath != null ? Path.GetFileName(basePath) : null; + return Path.GetFileName(basePath); } public override string GetParentFolder() diff --git a/DiscImageChef/Commands/Formats.cs b/DiscImageChef/Commands/Formats.cs index e723b16b7..7df4e04da 100644 --- a/DiscImageChef/Commands/Formats.cs +++ b/DiscImageChef/Commands/Formats.cs @@ -50,7 +50,7 @@ namespace DiscImageChef.Commands DicConsole.WriteLine("Supported filters:"); if(formatsOptions.Verbose) DicConsole.VerboseWriteLine("GUID\t\t\t\t\tFilter"); - foreach(KeyValuePair kvp in filtersList.filtersList) + foreach(KeyValuePair kvp in filtersList.Filters) if(formatsOptions.Verbose) DicConsole.VerboseWriteLine("{0}\t{1}", kvp.Value.UUID, kvp.Value.Name); else DicConsole.WriteLine(kvp.Value.Name);