diff --git a/ChangeLog b/ChangeLog index da2e4efd9..a6bdac49f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2015-10-05 Natalia Portillo + + * DiscImageChef.sln: + Moved disc image plugins to a separate library. + 2015-10-05 Natalia Portillo * DiscImageChef.sln: diff --git a/DiscImageChef.CommonTypes/ChangeLog b/DiscImageChef.CommonTypes/ChangeLog new file mode 100644 index 000000000..0e298630f --- /dev/null +++ b/DiscImageChef.CommonTypes/ChangeLog @@ -0,0 +1,7 @@ +2015-10-05 Natalia Portillo + + * Partition.cs: + * Properties/AssemblyInfo.cs: + * DiscImageChef.CommonTypes.csproj: + Moved disc image plugins to a separate library. + diff --git a/DiscImageChef.CommonTypes/DiscImageChef.CommonTypes.csproj b/DiscImageChef.CommonTypes/DiscImageChef.CommonTypes.csproj new file mode 100644 index 000000000..4c2a8b3b7 --- /dev/null +++ b/DiscImageChef.CommonTypes/DiscImageChef.CommonTypes.csproj @@ -0,0 +1,41 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {F2B84194-26EB-4227-B1C5-6602517E85AE} + Library + DiscImageChef.CommonTypes + DiscImageChef.CommonTypes + 2.2 + v3.5 + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + false + + + full + true + bin\Release + prompt + 4 + false + + + + + + + + + + \ No newline at end of file diff --git a/DiscImageChef.CommonTypes/Partition.cs b/DiscImageChef.CommonTypes/Partition.cs new file mode 100644 index 000000000..85f0f1167 --- /dev/null +++ b/DiscImageChef.CommonTypes/Partition.cs @@ -0,0 +1,28 @@ +using System; + +namespace DiscImageChef.CommonTypes +{ + /// + /// Partition structure. + /// + public struct Partition + { + /// Partition number, 0-started + public ulong PartitionSequence; + /// Partition type + public string PartitionType; + /// Partition name (if the scheme supports it) + public string PartitionName; + /// Start of the partition, in bytes + public ulong PartitionStart; + /// LBA of partition start + public ulong PartitionStartSector; + /// Length in bytes of the partition + public ulong PartitionLength; + /// Length in sectors of the partition + public ulong PartitionSectors; + /// Information that does not find space in this struct + public string PartitionDescription; + } +} + diff --git a/DiscImageChef.CommonTypes/Properties/AssemblyInfo.cs b/DiscImageChef.CommonTypes/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..7a931fdde --- /dev/null +++ b/DiscImageChef.CommonTypes/Properties/AssemblyInfo.cs @@ -0,0 +1,27 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle("DiscImageChef.CommonTypes")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Claunia.com")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("© Claunia.com")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion("1.0.*")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + diff --git a/DiscImageChef/ImagePlugins/Apple2MG.cs b/DiscImageChef.DiscImages/Apple2MG.cs similarity index 99% rename from DiscImageChef/ImagePlugins/Apple2MG.cs rename to DiscImageChef.DiscImages/Apple2MG.cs index 289018c60..3fd531ce4 100644 --- a/DiscImageChef/ImagePlugins/Apple2MG.cs +++ b/DiscImageChef.DiscImages/Apple2MG.cs @@ -169,7 +169,7 @@ namespace DiscImageChef.ImagePlugins #endregion - public Apple2MG(PluginBase Core) + public Apple2MG() { Name = "Apple 2IMG"; PluginUUID = new Guid("CBAF8824-BA5F-415F-953A-19A03519B2D1"); @@ -273,12 +273,12 @@ namespace DiscImageChef.ImagePlugins if (ImageHeader.dataSize == 0x00800C00) { ImageHeader.dataSize = 0x000C8000; - if (MainClass.isDebug) + ////if (MainClass.isDebug) Console.WriteLine("DEBUG (2MG plugin): Detected incorrect endian on data size field, correcting."); } - if (MainClass.isDebug) - { + ////if (MainClass.isDebug) + //{ Console.WriteLine("DEBUG (2MG plugin): ImageHeader.magic = \"{0}\"", Encoding.ASCII.GetString(magic)); Console.WriteLine("DEBUG (2MG plugin): ImageHeader.creator = \"{0}\"", Encoding.ASCII.GetString(creator)); Console.WriteLine("DEBUG (2MG plugin): ImageHeader.headerSize = {0}", ImageHeader.headerSize); @@ -296,7 +296,7 @@ namespace DiscImageChef.ImagePlugins Console.WriteLine("DEBUG (2MG plugin): ImageHeader.reserved2 = 0x{0:X8}", ImageHeader.reserved2); Console.WriteLine("DEBUG (2MG plugin): ImageHeader.reserved3 = 0x{0:X8}", ImageHeader.reserved3); Console.WriteLine("DEBUG (2MG plugin): ImageHeader.reserved4 = 0x{0:X8}", ImageHeader.reserved4); - } + //} if (ImageHeader.dataSize == 0 && ImageHeader.blocks == 0 && ImageHeader.imageFormat != ProDOSSectorOrder) return false; @@ -584,7 +584,7 @@ namespace DiscImageChef.ImagePlugins return null; } - public override List GetPartitions() + public override List GetPartitions() { throw new FeatureUnsupportedImageException("Feature not supported by image format"); } diff --git a/DiscImageChef/ImagePlugins/CDRWin.cs b/DiscImageChef.DiscImages/CDRWin.cs similarity index 97% rename from DiscImageChef/ImagePlugins/CDRWin.cs rename to DiscImageChef.DiscImages/CDRWin.cs index 50675dfb7..93c43a969 100644 --- a/DiscImageChef/ImagePlugins/CDRWin.cs +++ b/DiscImageChef.DiscImages/CDRWin.cs @@ -252,7 +252,7 @@ namespace DiscImageChef.ImagePlugins Dictionary offsetmap; // Dictionary, index is track #, value is TrackFile CDRWinDisc discimage; - List partitions; + List partitions; #endregion @@ -286,7 +286,7 @@ namespace DiscImageChef.ImagePlugins #region Methods - public CDRWin(PluginBase Core) + public CDRWin() { Name = "CDRWin cuesheet"; PluginUUID = new Guid("664568B2-15D4-4E64-8A7A-20BDA8B8386F"); @@ -479,7 +479,7 @@ namespace DiscImageChef.ImagePlugins if (MatchDiskType.Success && !intrack) { - if (MainClass.isDebug) + ////if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): Found REM ORIGINAL MEDIA TYPE at line {0}", line); discimage.disktypestr = MatchDiskType.Groups[1].Value; } @@ -489,7 +489,7 @@ namespace DiscImageChef.ImagePlugins } else if (MatchSession.Success) { - if (MainClass.isDebug) + ////if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): Found REM SESSION at line {0}", line); currentsession = Byte.Parse(MatchSession.Groups[1].Value); @@ -497,19 +497,19 @@ namespace DiscImageChef.ImagePlugins } else if (MatchLBA.Success) { - if (MainClass.isDebug) + ////if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): Found REM MSF at line {0}", line); // Just ignored } else if (MatchLeadOut.Success) { - if (MainClass.isDebug) + ////if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): Found REM LEAD-OUT at line {0}", line); // Just ignored } else if (MatchComment.Success) { - if (MainClass.isDebug) + ////if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): Found REM at line {0}", line); if (discimage.comment == "") discimage.comment = MatchComment.Groups[1].Value; // First comment @@ -538,7 +538,7 @@ namespace DiscImageChef.ImagePlugins if (MatchArranger.Success) { - if (MainClass.isDebug) + ////if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): Found ARRANGER at line {0}", line); if (intrack) currenttrack.arranger = MatchArranger.Groups[1].Value; @@ -547,7 +547,7 @@ namespace DiscImageChef.ImagePlugins } else if (MatchBarCode.Success) { - if (MainClass.isDebug) + ////if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): Found UPC_EAN at line {0}", line); if (!intrack) discimage.barcode = MatchBarCode.Groups[1].Value; @@ -556,7 +556,7 @@ namespace DiscImageChef.ImagePlugins } else if (MatchCDText.Success) { - if (MainClass.isDebug) + ////if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): Found CDTEXTFILE at line {0}", line); if (!intrack) discimage.cdtextfile = MatchCDText.Groups[1].Value; @@ -565,7 +565,7 @@ namespace DiscImageChef.ImagePlugins } else if (MatchComposer.Success) { - if (MainClass.isDebug) + ////if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): Found COMPOSER at line {0}", line); if (intrack) currenttrack.arranger = MatchComposer.Groups[1].Value; @@ -574,7 +574,7 @@ namespace DiscImageChef.ImagePlugins } else if (MatchDiskID.Success) { - if (MainClass.isDebug) + ////if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): Found DISC_ID at line {0}", line); if (!intrack) discimage.disk_id = MatchDiskID.Groups[1].Value; @@ -583,7 +583,7 @@ namespace DiscImageChef.ImagePlugins } else if (MatchFile.Success) { - if (MainClass.isDebug) + ////if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): Found FILE at line {0}", line); if (currenttrack.sequence != 0) @@ -664,7 +664,7 @@ namespace DiscImageChef.ImagePlugins } // File does exist, process it - if (MainClass.isDebug) + ////if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): File \"{0}\" found", currentfile.datafile); switch (currentfile.filetype) @@ -686,14 +686,14 @@ namespace DiscImageChef.ImagePlugins else if (MatchFlags.Success) { // TODO: Implement FLAGS support. - if (MainClass.isDebug) + ////if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): Found FLAGS at line {0}", line); if (!intrack) throw new FeatureUnsupportedImageException(String.Format("Found FLAGS field in incorrect place at line {0}", line)); } else if (MatchGenre.Success) { - if (MainClass.isDebug) + ////if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): Found GENRE at line {0}", line); if (intrack) currenttrack.genre = MatchGenre.Groups[1].Value; @@ -702,7 +702,7 @@ namespace DiscImageChef.ImagePlugins } else if (MatchIndex.Success) { - if (MainClass.isDebug) + ////if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): Found INDEX at line {0}", line); if (!intrack) throw new FeatureUnsupportedImageException(String.Format("Found INDEX before a track {0}", line)); @@ -720,7 +720,7 @@ namespace DiscImageChef.ImagePlugins { cuetracks[currenttrack.sequence - 2].sectors = offset - currentfileoffsetsector; currentfile.offset += cuetracks[currenttrack.sequence - 2].sectors * cuetracks[currenttrack.sequence - 2].bps; - if (MainClass.isDebug) + ////if (MainClass.isDebug) { Console.WriteLine("DEBUG (CDRWin plugin): Sets currentfile.offset to {0} at line 553", currentfile.offset); Console.WriteLine("DEBUG (CDRWin plugin): cuetracks[currenttrack.sequence-2].sectors = {0}", cuetracks[currenttrack.sequence - 2].sectors); @@ -731,7 +731,7 @@ namespace DiscImageChef.ImagePlugins if ((index == 0 || (index == 1 && !currenttrack.indexes.ContainsKey(0))) && currenttrack.sequence == 1) { - if (MainClass.isDebug) + ////if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): Sets currentfile.offset to {0} at line 559", offset * currenttrack.bps); currentfile.offset = offset * currenttrack.bps; } @@ -742,7 +742,7 @@ namespace DiscImageChef.ImagePlugins } else if (MatchISRC.Success) { - if (MainClass.isDebug) + ////if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): Found ISRC at line {0}", line); if (!intrack) throw new FeatureUnsupportedImageException(String.Format("Found ISRC before a track {0}", line)); @@ -750,7 +750,7 @@ namespace DiscImageChef.ImagePlugins } else if (MatchMCN.Success) { - if (MainClass.isDebug) + ////if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): Found CATALOG at line {0}", line); if (!intrack) discimage.mcn = MatchMCN.Groups[1].Value; @@ -759,7 +759,7 @@ namespace DiscImageChef.ImagePlugins } else if (MatchPerformer.Success) { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): Found PERFORMER at line {0}", line); if (intrack) currenttrack.performer = MatchPerformer.Groups[1].Value; @@ -768,7 +768,7 @@ namespace DiscImageChef.ImagePlugins } else if (MatchPostgap.Success) { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): Found POSTGAP at line {0}", line); if (intrack) { @@ -779,7 +779,7 @@ namespace DiscImageChef.ImagePlugins } else if (MatchPregap.Success) { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): Found PREGAP at line {0}", line); if (intrack) { @@ -790,7 +790,7 @@ namespace DiscImageChef.ImagePlugins } else if (MatchSongWriter.Success) { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): Found SONGWRITER at line {0}", line); if (intrack) currenttrack.songwriter = MatchSongWriter.Groups[1].Value; @@ -799,7 +799,7 @@ namespace DiscImageChef.ImagePlugins } else if (MatchTitle.Success) { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): Found TITLE at line {0}", line); if (intrack) currenttrack.title = MatchTitle.Groups[1].Value; @@ -808,7 +808,7 @@ namespace DiscImageChef.ImagePlugins } else if (MatchTrack.Success) { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): Found TRACK at line {0}", line); if (currentfile.datafile == "") throw new FeatureUnsupportedImageException(String.Format("Found TRACK field before a file is defined at line {0}", line)); @@ -825,7 +825,7 @@ namespace DiscImageChef.ImagePlugins currenttrack = new CDRWinTrack(); currenttrack.indexes = new Dictionary(); currenttrack.sequence = uint.Parse(MatchTrack.Groups[1].Value); - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): Setting currenttrack.sequence to {0}", currenttrack.sequence); currentfile.sequence = currenttrack.sequence; currenttrack.bps = CDRWinTrackTypeToBytesPerSector(MatchTrack.Groups[2].Value); @@ -946,7 +946,7 @@ namespace DiscImageChef.ImagePlugins discimage.disktype = DiskType.CD; } - if (MainClass.isDebug) + //if (MainClass.isDebug) { // DEBUG information Console.WriteLine("DEBUG (CDRWin plugin): Disc image parsing results"); @@ -1070,10 +1070,10 @@ namespace DiscImageChef.ImagePlugins } } - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (CDRWin plugin): Building offset map"); - partitions = new List(); + partitions = new List(); ulong byte_offset = 0; ulong sector_offset = 0; @@ -1089,7 +1089,7 @@ namespace DiscImageChef.ImagePlugins if (discimage.tracks[i].sequence == 1 && i != 0) throw new ImageNotSupportedException("Unordered tracks"); - PartPlugins.Partition partition = new DiscImageChef.PartPlugins.Partition(); + CommonTypes.Partition partition = new CommonTypes.Partition(); if (discimage.tracks[i].pregap > 0) { @@ -1121,7 +1121,7 @@ namespace DiscImageChef.ImagePlugins } partitions.Add(partition); - partition = new DiscImageChef.PartPlugins.Partition(); + partition = new CommonTypes.Partition(); } index_zero |= discimage.tracks[i].indexes.TryGetValue(0, out index_zero_offset); @@ -1159,7 +1159,7 @@ namespace DiscImageChef.ImagePlugins } partitions.Add(partition); - partition = new DiscImageChef.PartPlugins.Partition(); + partition = new CommonTypes.Partition(); } // Index 01 @@ -1191,14 +1191,14 @@ namespace DiscImageChef.ImagePlugins } partitions.Add(partition); - partition = new DiscImageChef.PartPlugins.Partition(); + partition = new CommonTypes.Partition(); } // Print offset map - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (CDRWin plugin) printing partition map"); - foreach (DiscImageChef.PartPlugins.Partition partition in partitions) + foreach (CommonTypes.Partition partition in partitions) { Console.WriteLine("DEBUG (CDRWin plugin): Partition sequence: {0}", partition.PartitionSequence); Console.WriteLine("DEBUG (CDRWin plugin): \tPartition name: {0}", partition.PartitionName); @@ -1910,7 +1910,7 @@ namespace DiscImageChef.ImagePlugins return ImageInfo.diskType; } - public override List GetPartitions() + public override List GetPartitions() { return partitions; } diff --git a/DiscImageChef.DiscImages/ChangeLog b/DiscImageChef.DiscImages/ChangeLog new file mode 100644 index 000000000..ad992774b --- /dev/null +++ b/DiscImageChef.DiscImages/ChangeLog @@ -0,0 +1,15 @@ +2015-10-05 Natalia Portillo + + * VHD.cs: + * Nero.cs: + * CDRWin.cs: + * TeleDisk.cs: + * Apple2MG.cs: + * ImageInfo.cs: + * DiskCopy42.cs: + * ImagePlugin.cs: + * ZZZRawImage.cs: + * Properties/AssemblyInfo.cs: + * DiscImageChef.DiscImages.csproj: + Moved disc image plugins to a separate library. + diff --git a/DiscImageChef.DiscImages/DiscImageChef.DiscImages.csproj b/DiscImageChef.DiscImages/DiscImageChef.DiscImages.csproj new file mode 100644 index 000000000..2887a20de --- /dev/null +++ b/DiscImageChef.DiscImages/DiscImageChef.DiscImages.csproj @@ -0,0 +1,63 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {74032CBC-339B-42F3-AF6F-E96C261F3E6A} + Library + DiscImageChef.DiscImages + DiscImageChef.DiscImages + 2.2 + v3.5 + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + false + + + full + true + bin\Release + prompt + 4 + false + + + + + + + + + + + + + + + + + + + + {F2B84194-26EB-4227-B1C5-6602517E85AE} + DiscImageChef.CommonTypes + + + {CC48B324-A532-4A45-87A6-6F91F7141E8D} + DiscImageChef.Checksums + + + {F8BDF57B-1571-4CD0-84B3-B422088D359A} + DiscImageChef.Helpers + + + \ No newline at end of file diff --git a/DiscImageChef/ImagePlugins/DiskCopy42.cs b/DiscImageChef.DiscImages/DiskCopy42.cs similarity index 97% rename from DiscImageChef/ImagePlugins/DiskCopy42.cs rename to DiscImageChef.DiscImages/DiskCopy42.cs index 15f8759f6..42a0ccbb3 100644 --- a/DiscImageChef/ImagePlugins/DiskCopy42.cs +++ b/DiscImageChef.DiscImages/DiskCopy42.cs @@ -126,7 +126,7 @@ namespace DiscImageChef.ImagePlugins #endregion - public DiskCopy42(PluginBase Core) + public DiskCopy42() { Name = "Apple DiskCopy 4.2"; PluginUUID = new Guid("0240B7B1-E959-4CDC-B0BD-386D6E467B88"); @@ -181,7 +181,7 @@ namespace DiscImageChef.ImagePlugins tmp_header.valid = buffer[0x52]; tmp_header.reserved = buffer[0x53]; - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (DC42 plugin): tmp_header.diskName = \"{0}\"", tmp_header.diskName); Console.WriteLine("DEBUG (DC42 plugin): tmp_header.dataSize = {0} bytes", tmp_header.dataSize); @@ -205,7 +205,7 @@ namespace DiscImageChef.ImagePlugins if (tmp_header.format != kSonyFormat400K && tmp_header.format != kSonyFormat800K && tmp_header.format != kSonyFormat720K && tmp_header.format != kSonyFormat1440K && tmp_header.format != kSonyFormat1680K && tmp_header.format != kSigmaFormatTwiggy) { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("Unknown tmp_header.format = 0x{0:X2} value", tmp_header.format); return false; @@ -214,7 +214,7 @@ namespace DiscImageChef.ImagePlugins if (tmp_header.fmtByte != kSonyFmtByte400K && tmp_header.fmtByte != kSonyFmtByte800K && tmp_header.fmtByte != kSonyFmtByte800KIncorrect && tmp_header.fmtByte != kSonyFmtByteProDos && tmp_header.fmtByte != kInvalidFmtByte && tmp_header.fmtByte != kSigmaFmtByteTwiggy) { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("Unknown tmp_header.fmtByte = 0x{0:X2} value", tmp_header.fmtByte); return false; @@ -222,7 +222,7 @@ namespace DiscImageChef.ImagePlugins if (tmp_header.fmtByte == kInvalidFmtByte) { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("Image says it's unformatted"); return false; @@ -258,7 +258,7 @@ namespace DiscImageChef.ImagePlugins header.valid = buffer[0x52]; header.reserved = buffer[0x53]; - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (DC42 plugin): header.diskName = \"{0}\"", header.diskName); Console.WriteLine("DEBUG (DC42 plugin): header.dataSize = {0} bytes", header.dataSize); @@ -282,7 +282,7 @@ namespace DiscImageChef.ImagePlugins if (header.format != kSonyFormat400K && header.format != kSonyFormat800K && header.format != kSonyFormat720K && header.format != kSonyFormat1440K && header.format != kSonyFormat1680K && header.format != kSigmaFormatTwiggy) { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (DC42 plugin): Unknown header.format = 0x{0:X2} value", header.format); return false; @@ -291,7 +291,7 @@ namespace DiscImageChef.ImagePlugins if (header.fmtByte != kSonyFmtByte400K && header.fmtByte != kSonyFmtByte800K && header.fmtByte != kSonyFmtByte800KIncorrect && header.fmtByte != kSonyFmtByteProDos && header.fmtByte != kInvalidFmtByte && header.fmtByte != kSigmaFmtByteTwiggy) { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (DC42 plugin): Unknown tmp_header.fmtByte = 0x{0:X2} value", header.fmtByte); return false; @@ -299,7 +299,7 @@ namespace DiscImageChef.ImagePlugins if (header.fmtByte == kInvalidFmtByte) { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (DC42 plugin): Image says it's unformatted"); return false; @@ -317,7 +317,7 @@ namespace DiscImageChef.ImagePlugins { if (header.tagSize / 12 != ImageInfo.sectors) { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (DC42 plugin): header.tagSize / 12 != sectors"); return false; @@ -398,17 +398,17 @@ namespace DiscImageChef.ImagePlugins UInt32 dataChk; UInt32 tagsChk = 0; - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (DC42 plugin): Reading data"); FileStream datastream = new FileStream(dc42ImagePath, FileMode.Open, FileAccess.Read); datastream.Seek((long)(dataOffset), SeekOrigin.Begin); datastream.Read(data, 0, (int)header.dataSize); datastream.Close(); - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (DC42 plugin): Calculating data checksum"); dataChk = DC42CheckSum(data); - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (DC42 plugin): Calculated data checksum = 0x{0:X8}", dataChk); Console.WriteLine("DEBUG (DC42 plugin): Stored data checksum = 0x{0:X8}", header.dataChecksum); @@ -416,17 +416,17 @@ namespace DiscImageChef.ImagePlugins if (header.tagSize > 0) { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (DC42 plugin): Reading tags"); FileStream tagstream = new FileStream(dc42ImagePath, FileMode.Open, FileAccess.Read); tagstream.Seek((long)(tagOffset), SeekOrigin.Begin); tagstream.Read(tags, 0, (int)header.tagSize); tagstream.Close(); - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (DC42 plugin): Calculating tag checksum"); tagsChk = DC42CheckSum(tags); - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (DC42 plugin): Calculated tag checksum = 0x{0:X8}", tagsChk); Console.WriteLine("DEBUG (DC42 plugin): Stored tag checksum = 0x{0:X8}", header.tagChecksum); @@ -647,7 +647,7 @@ namespace DiscImageChef.ImagePlugins return ImageInfo.driveSerialNumber; } - public override List GetPartitions() + public override List GetPartitions() { throw new FeatureUnsupportedImageException("Feature not supported by image format"); } diff --git a/DiscImageChef/ImagePlugins/ImageInfo.cs b/DiscImageChef.DiscImages/ImageInfo.cs similarity index 100% rename from DiscImageChef/ImagePlugins/ImageInfo.cs rename to DiscImageChef.DiscImages/ImageInfo.cs diff --git a/DiscImageChef/ImagePlugins/ImagePlugin.cs b/DiscImageChef.DiscImages/ImagePlugin.cs similarity index 99% rename from DiscImageChef/ImagePlugins/ImagePlugin.cs rename to DiscImageChef.DiscImages/ImagePlugin.cs index d939ba414..2d7986100 100644 --- a/DiscImageChef/ImagePlugins/ImagePlugin.cs +++ b/DiscImageChef.DiscImages/ImagePlugin.cs @@ -342,7 +342,7 @@ namespace DiscImageChef.ImagePlugins /// reads can be relative to them. /// /// The partitions. - public abstract List GetPartitions(); + public abstract List GetPartitions(); /// /// Gets the disc track extents (start, length). diff --git a/DiscImageChef/ImagePlugins/Nero.cs b/DiscImageChef.DiscImages/Nero.cs similarity index 97% rename from DiscImageChef/ImagePlugins/Nero.cs rename to DiscImageChef.DiscImages/Nero.cs index 0159ea2b2..de56b3a71 100644 --- a/DiscImageChef/ImagePlugins/Nero.cs +++ b/DiscImageChef.DiscImages/Nero.cs @@ -855,13 +855,13 @@ namespace DiscImageChef.ImagePlugins Dictionary neroTracks; Dictionary offsetmap; List imageSessions; - List ImagePartitions; + List ImagePartitions; #endregion #region Methods - public Nero(PluginBase Core) + public Nero() { Name = "Nero Burning ROM image"; PluginUUID = new Guid("D160F9FF-5941-43FC-B037-AD81DD141F05"); @@ -874,7 +874,7 @@ namespace DiscImageChef.ImagePlugins neroTracks = new Dictionary(); offsetmap = new Dictionary(); imageSessions = new List(); - ImagePartitions = new List(); + ImagePartitions = new List(); } // Due to .cue format, this method must parse whole file, ignoring errors (those will be thrown by OpenImage()). @@ -900,7 +900,7 @@ namespace DiscImageChef.ImagePlugins footerV2.ChunkID = BigEndianBitConverter.ToUInt32(buffer, 0); footerV2.FirstChunkOffset = BigEndianBitConverter.ToUInt64(buffer, 4); - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (Nero plugin): imageInfo.Length = {0}", imageInfo.Length); Console.WriteLine("DEBUG (Nero plugin): footerV1.ChunkID = 0x{0:X2} (\"{1}\")", footerV1.ChunkID, System.Text.Encoding.ASCII.GetString(BigEndianBitConverter.GetBytes(footerV1.ChunkID))); @@ -948,7 +948,7 @@ namespace DiscImageChef.ImagePlugins footerV2.ChunkID = BigEndianBitConverter.ToUInt32(buffer, 0); footerV2.FirstChunkOffset = BigEndianBitConverter.ToUInt64(buffer, 4); - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (Nero plugin): imageInfo.Length = {0}", imageInfo.Length); Console.WriteLine("DEBUG (Nero plugin): footerV1.ChunkID = 0x{0:X2} (\"{1}\")", footerV1.ChunkID, System.Text.Encoding.ASCII.GetString(BigEndianBitConverter.GetBytes(footerV1.ChunkID))); @@ -993,7 +993,7 @@ namespace DiscImageChef.ImagePlugins ChunkID = BigEndianBitConverter.ToUInt32(ChunkHeaderBuffer, 0); ChunkLength = BigEndianBitConverter.ToUInt32(ChunkHeaderBuffer, 4); - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (Nero plugin): ChunkID = 0x{0:X2} (\"{1}\")", ChunkID, System.Text.Encoding.ASCII.GetString(BigEndianBitConverter.GetBytes(ChunkID))); Console.WriteLine("DEBUG (Nero plugin): ChunkLength = {0}", ChunkLength); @@ -1003,7 +1003,7 @@ namespace DiscImageChef.ImagePlugins { case NeroV1CUEID: { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (Nero plugin): Found \"CUES\" chunk, parsing {0} bytes", ChunkLength); neroCuesheetV1 = new NeroV1Cuesheet(); @@ -1024,7 +1024,7 @@ namespace DiscImageChef.ImagePlugins _entry.Second = tmpbuffer[6]; _entry.Frame = tmpbuffer[7]; - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (Nero plugin): Cuesheet entry {0}", (i / 8) + 1); Console.WriteLine("DEBUG (Nero plugin):\t _entry[{0}].Mode = {1:X2}", (i / 8) + 1, _entry.Mode); @@ -1043,7 +1043,7 @@ namespace DiscImageChef.ImagePlugins } case NeroV2CUEID: { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (Nero plugin): Found \"CUEX\" chunk, parsing {0} bytes", ChunkLength); neroCuesheetV2 = new NeroV2Cuesheet(); @@ -1062,7 +1062,7 @@ namespace DiscImageChef.ImagePlugins _entry.Dummy = tmpbuffer[3]; _entry.LBAStart = BigEndianBitConverter.ToInt32(tmpbuffer, 4); - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (Nero plugin): Cuesheet entry {0}", (i / 8) + 1); Console.WriteLine("DEBUG (Nero plugin):\t _entry[{0}].Mode = 0x{1:X2}", (i / 8) + 1, _entry.Mode); @@ -1079,7 +1079,7 @@ namespace DiscImageChef.ImagePlugins } case NeroV1DAOID: { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (Nero plugin): Found \"DAOI\" chunk, parsing {0} bytes", ChunkLength); neroDAOV1 = new NeroV1DAO(); @@ -1102,7 +1102,7 @@ namespace DiscImageChef.ImagePlugins if (!ImageInfo.readableSectorTags.Contains(SectorTagType.CDTrackISRC)) ImageInfo.readableSectorTags.Add(SectorTagType.CDTrackISRC); - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (Nero plugin): neroDAOV1.ChunkSizeLe = {0} bytes", neroDAOV1.ChunkSizeLe); Console.WriteLine("DEBUG (Nero plugin): neroDAOV1.UPC = \"{0}\"", StringHandlers.CToString(neroDAOV1.UPC)); @@ -1127,7 +1127,7 @@ namespace DiscImageChef.ImagePlugins _entry.Index1 = BigEndianBitConverter.ToUInt32(tmpbuffer, 22); _entry.EndOfTrack = BigEndianBitConverter.ToUInt32(tmpbuffer, 26); - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (Nero plugin): Disc-At-Once entry {0}", (i / 32) + 1); Console.WriteLine("DEBUG (Nero plugin):\t _entry[{0}].ISRC = \"{1}\"", (i / 32) + 1, StringHandlers.CToString(_entry.ISRC)); @@ -1169,7 +1169,7 @@ namespace DiscImageChef.ImagePlugins } case NeroV2DAOID: { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (Nero plugin): Found \"DAOX\" chunk, parsing {0} bytes", ChunkLength); neroDAOV2 = new NeroV2DAO(); @@ -1194,7 +1194,7 @@ namespace DiscImageChef.ImagePlugins UPC = neroDAOV2.UPC; - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (Nero plugin): neroDAOV2.ChunkSizeLe = {0} bytes", neroDAOV2.ChunkSizeLe); Console.WriteLine("DEBUG (Nero plugin): neroDAOV2.UPC = \"{0}\"", StringHandlers.CToString(neroDAOV2.UPC)); @@ -1217,7 +1217,7 @@ namespace DiscImageChef.ImagePlugins _entry.Index1 = BigEndianBitConverter.ToUInt64(tmpbuffer, 26); _entry.EndOfTrack = BigEndianBitConverter.ToUInt64(tmpbuffer, 34); - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (Nero plugin): Disc-At-Once entry {0}", (i / 32) + 1); Console.WriteLine("DEBUG (Nero plugin):\t _entry[{0}].ISRC = \"{1}\"", (i / 32) + 1, StringHandlers.CToString(_entry.ISRC)); @@ -1259,7 +1259,7 @@ namespace DiscImageChef.ImagePlugins } case NeroCDTextID: { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (Nero plugin): Found \"CDTX\" chunk, parsing {0} bytes", ChunkLength); neroCDTXT = new NeroCDText(); @@ -1281,7 +1281,7 @@ namespace DiscImageChef.ImagePlugins Array.Copy(tmpbuffer, 4, _entry.Text, 0, 12); _entry.CRC = BigEndianBitConverter.ToUInt16(tmpbuffer, 16); - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (Nero plugin): CD-TEXT entry {0}", (i / 18) + 1); Console.WriteLine("DEBUG (Nero plugin):\t _entry[{0}].PackType = 0x{1:X2}", (i / 18) + 1, _entry.PackType); @@ -1299,7 +1299,7 @@ namespace DiscImageChef.ImagePlugins } case NeroV1TAOID: { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (Nero plugin): Found \"ETNF\" chunk, parsing {0} bytes", ChunkLength); neroTAOV1 = new NeroV1TAO(); @@ -1319,7 +1319,7 @@ namespace DiscImageChef.ImagePlugins _entry.StartLBA = BigEndianBitConverter.ToUInt32(tmpbuffer, 12); _entry.Unknown = BigEndianBitConverter.ToUInt32(tmpbuffer, 16); - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (Nero plugin): Track-at-Once entry {0}", (i / 20) + 1); Console.WriteLine("DEBUG (Nero plugin):\t _entry[{0}].Offset = {1}", (i / 20) + 1, _entry.Offset); @@ -1357,7 +1357,7 @@ namespace DiscImageChef.ImagePlugins } case NeroV2TAOID: { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (Nero plugin): Found \"ETN2\" chunk, parsing {0} bytes", ChunkLength); neroTAOV2 = new NeroV2TAO(); @@ -1378,7 +1378,7 @@ namespace DiscImageChef.ImagePlugins _entry.Unknown = BigEndianBitConverter.ToUInt32(tmpbuffer, 24); _entry.Sectors = BigEndianBitConverter.ToUInt32(tmpbuffer, 28); - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (Nero plugin): Track-at-Once entry {0}", (i / 32) + 1); Console.WriteLine("DEBUG (Nero plugin):\t _entry[{0}].Offset = {1}", (i / 32) + 1, _entry.Offset); @@ -1417,7 +1417,7 @@ namespace DiscImageChef.ImagePlugins } case NeroSessionID: { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (Nero plugin): Found \"SINF\" chunk, parsing {0} bytes", ChunkLength); UInt32 sessionTracks; @@ -1426,7 +1426,7 @@ namespace DiscImageChef.ImagePlugins sessionTracks = BigEndianBitConverter.ToUInt32(tmpbuffer, 0); neroSessions.Add(currentsession, sessionTracks); - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (Nero plugin): \tSession {0} has {1} tracks", currentsession, sessionTracks); currentsession++; @@ -1434,7 +1434,7 @@ namespace DiscImageChef.ImagePlugins } case NeroDiskTypeID: { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (Nero plugin): Found \"MTYP\" chunk, parsing {0} bytes", ChunkLength); neroMediaTyp = new NeroMediaType(); @@ -1446,7 +1446,7 @@ namespace DiscImageChef.ImagePlugins imageStream.Read(tmpbuffer, 0, 4); neroMediaTyp.Type = BigEndianBitConverter.ToUInt32(tmpbuffer, 0); - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (Nero plugin): \tMedia type is {0} ({1})", (NeroMediaTypes)neroMediaTyp.Type, neroMediaTyp.Type); ImageInfo.diskType = NeroMediaTypeToDiskType((NeroMediaTypes)neroMediaTyp.Type); @@ -1455,7 +1455,7 @@ namespace DiscImageChef.ImagePlugins } case NeroDiscInfoID: { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (Nero plugin): Found \"DINF\" chunk, parsing {0} bytes", ChunkLength); neroDiscInfo = new NeroDiscInformation(); @@ -1465,14 +1465,14 @@ namespace DiscImageChef.ImagePlugins imageStream.Read(tmpbuffer, 0, 4); neroDiscInfo.Unknown = BigEndianBitConverter.ToUInt32(tmpbuffer, 0); - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (Nero plugin): \tneroDiscInfo.Unknown = 0x{0:X4} ({0})", neroDiscInfo.Unknown); break; } case NeroReloID: { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (Nero plugin): Found \"RELO\" chunk, parsing {0} bytes", ChunkLength); neroRELO = new NeroRELOChunk(); @@ -1482,14 +1482,14 @@ namespace DiscImageChef.ImagePlugins imageStream.Read(tmpbuffer, 0, 4); neroRELO.Unknown = BigEndianBitConverter.ToUInt32(tmpbuffer, 0); - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (Nero plugin): \tneroRELO.Unknown = 0x{0:X4} ({0})", neroRELO.Unknown); break; } case NeroTOCID: { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (Nero plugin): Found \"TOCT\" chunk, parsing {0} bytes", ChunkLength); neroTOC = new NeroTOCChunk(); @@ -1499,21 +1499,21 @@ namespace DiscImageChef.ImagePlugins imageStream.Read(tmpbuffer, 0, 2); neroTOC.Unknown = BigEndianBitConverter.ToUInt16(tmpbuffer, 0); - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (Nero plugin): \tneroTOC.Unknown = 0x{0:X4} ({0})", neroTOC.Unknown); break; } case NeroEndID: { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (Nero plugin): Found \"END!\" chunk, finishing parse"); parsing = false; break; } default: { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (Nero plugin): Unknown chunk ID \"{0}\", skipping...", System.Text.Encoding.ASCII.GetString(BigEndianBitConverter.GetBytes(ChunkID))); imageStream.Seek(ChunkLength, SeekOrigin.Current); break; @@ -1556,7 +1556,7 @@ namespace DiscImageChef.ImagePlugins if (neroSessions.Count == 0) neroSessions.Add(1, currenttrack); - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (Nero plugin): Building offset, track and session maps"); currentsession = 1; @@ -1570,7 +1570,7 @@ namespace DiscImageChef.ImagePlugins NeroTrack _neroTrack; if (neroTracks.TryGetValue(i, out _neroTrack)) { - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (Nero plugin): \tcurrentsession = {0}", currentsession); Console.WriteLine("DEBUG (Nero plugin): \tcurrentsessionmaxtrack = {0}", currentsessionmaxtrack); @@ -1591,7 +1591,7 @@ namespace DiscImageChef.ImagePlugins _track.TrackType = NeroTrackModeToTrackType((DAOMode)_neroTrack.Mode); imageTracks.Add(_track); - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (Nero plugin): \t\t _track.TrackDescription = {0}", _track.TrackDescription); Console.WriteLine("DEBUG (Nero plugin): \t\t _track.TrackEndSector = {0}", _track.TrackEndSector); @@ -1621,14 +1621,14 @@ namespace DiscImageChef.ImagePlugins } offsetmap.Add(_track.TrackSequence, _track.TrackStartSector); - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (Nero plugin): \t\t Offset[{0}]: {1}", _track.TrackSequence, _track.TrackStartSector); - PartPlugins.Partition partition; + CommonTypes.Partition partition; if (_neroTrack.Index0 < _neroTrack.Index1) { - partition = new PartPlugins.Partition(); + partition = new CommonTypes.Partition(); partition.PartitionDescription = String.Format("Track {0} Index 0", _track.TrackSequence); partition.PartitionLength = (_neroTrack.Index1 - _neroTrack.Index0); partition.PartitionName = StringHandlers.CToString(_neroTrack.ISRC); @@ -1641,7 +1641,7 @@ namespace DiscImageChef.ImagePlugins PartitionSequence++; } - partition = new PartPlugins.Partition(); + partition = new CommonTypes.Partition(); partition.PartitionDescription = String.Format("Track {0} Index 1", _track.TrackSequence); partition.PartitionLength = (_neroTrack.EndOfTrack - _neroTrack.Index1); partition.PartitionName = StringHandlers.CToString(_neroTrack.ISRC); @@ -2247,7 +2247,7 @@ namespace DiscImageChef.ImagePlugins return ImageInfo.diskType; } - public override List GetPartitions() + public override List GetPartitions() { return ImagePartitions; } diff --git a/DiscImageChef.DiscImages/Properties/AssemblyInfo.cs b/DiscImageChef.DiscImages/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..c095167f4 --- /dev/null +++ b/DiscImageChef.DiscImages/Properties/AssemblyInfo.cs @@ -0,0 +1,27 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle("DiscImageChef.DiscImages")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Claunia.com")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("© Claunia.com")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion("1.0.*")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + diff --git a/DiscImageChef/ImagePlugins/TeleDisk.cs b/DiscImageChef.DiscImages/TeleDisk.cs similarity index 97% rename from DiscImageChef/ImagePlugins/TeleDisk.cs rename to DiscImageChef.DiscImages/TeleDisk.cs index 8ffac2953..ff2619d9a 100644 --- a/DiscImageChef/ImagePlugins/TeleDisk.cs +++ b/DiscImageChef.DiscImages/TeleDisk.cs @@ -201,7 +201,7 @@ namespace DiscImageChef.ImagePlugins #endregion - public TeleDisk(PluginBase Core) + public TeleDisk() { Name = "Sydex TeleDisk"; PluginUUID = new Guid("0240B7B1-E959-4CDC-B0BD-386D6E467B88"); @@ -255,7 +255,7 @@ namespace DiscImageChef.ImagePlugins Array.Copy(headerBytes, headerBytesForCRC, 10); UInt16 calculatedHeaderCRC = TeleDiskCRC(0x0000, headerBytesForCRC); - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (TeleDisk plugin): header.signature = 0x{0:X4}", header.signature); Console.WriteLine("DEBUG (TeleDisk plugin): header.sequence = 0x{0:X2}", header.sequence); @@ -321,7 +321,7 @@ namespace DiscImageChef.ImagePlugins Array.Copy(headerBytes, headerBytesForCRC, 10); UInt16 calculatedHeaderCRC = TeleDiskCRC(0x0000, headerBytesForCRC); - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (TeleDisk plugin): header.signature = 0x{0:X4}", header.signature); Console.WriteLine("DEBUG (TeleDisk plugin): header.sequence = 0x{0:X2}", header.sequence); @@ -343,7 +343,7 @@ namespace DiscImageChef.ImagePlugins if (header.crc != calculatedHeaderCRC) { ADiskCRCHasFailed = true; - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (TeleDisk plugin): Calculated CRC does not coincide with stored one."); } @@ -388,7 +388,7 @@ namespace DiscImageChef.ImagePlugins UInt16 cmtcrc = TeleDiskCRC(0, commentBlockForCRC); - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (TeleDisk plugin): Comment header"); Console.WriteLine("DEBUG (TeleDisk plugin): \tcommentheader.crc = 0x{0:X4}", commentHeader.crc); @@ -413,7 +413,7 @@ namespace DiscImageChef.ImagePlugins ImageInfo.imageComments = System.Text.Encoding.ASCII.GetString(commentBlock); - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (TeleDisk plugin): Comment"); Console.WriteLine("DEBUG (TeleDisk plugin): {0}", ImageInfo.imageComments); @@ -428,13 +428,13 @@ namespace DiscImageChef.ImagePlugins ImageInfo.imageCreationTime = fi.CreationTimeUtc; ImageInfo.imageLastModificationTime = fi.LastWriteTimeUtc; - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (TeleDisk plugin): Image created on {0}", ImageInfo.imageCreationTime); Console.WriteLine("DEBUG (TeleDisk plugin): Image modified on {0}", ImageInfo.imageLastModificationTime); } - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (TeleDisk plugin): Parsing image"); totalDiskSize = 0; @@ -459,7 +459,7 @@ namespace DiscImageChef.ImagePlugins TDTrackCalculatedCRC = (byte)(TeleDiskCRC(0, TDTrackForCRC) & 0xFF); - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (TeleDisk plugin): Track follows"); Console.WriteLine("DEBUG (TeleDisk plugin): \tTrack cylinder: {0}\t", TDTrack.cylinder); @@ -472,7 +472,7 @@ namespace DiscImageChef.ImagePlugins if (TDTrack.sectors == 0xFF) // End of disk image { - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (TeleDisk plugin): End of disk image arrived"); Console.WriteLine("DEBUG (TeleDisk plugin): Total of {0} data sectors, for {1} bytes", sectorsData.Count, totalDiskSize); @@ -503,7 +503,7 @@ namespace DiscImageChef.ImagePlugins TDSector.flags = (byte)stream.ReadByte(); TDSector.crc = (byte)stream.ReadByte(); - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (TeleDisk plugin): \tSector follows"); Console.WriteLine("DEBUG (TeleDisk plugin): \t\tAddressMark cylinder: {0}", TDSector.cylinder); @@ -524,7 +524,7 @@ namespace DiscImageChef.ImagePlugins TDData.dataEncoding = (byte)stream.ReadByte(); data = new byte[TDData.dataSize]; stream.Read(data, 0, TDData.dataSize); - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (TeleDisk plugin): \t\tData size (in-image): {0}", TDData.dataSize); Console.WriteLine("DEBUG (TeleDisk plugin): \t\tData encoding: 0x{0:X2}", TDData.dataEncoding); @@ -536,7 +536,7 @@ namespace DiscImageChef.ImagePlugins if (TDSectorCalculatedCRC != TDSector.crc) { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (TeleDisk plugin): Sector LBA {0} calculated CRC 0x{1:X2} differs from stored CRC 0x{2:X2}", LBA, TDSectorCalculatedCRC, TDSector.crc); if ((TDSector.flags & FlagsSectorNoID) != FlagsSectorNoID) if (!sectorsData.ContainsKey(LBA) && (TDSector.flags & FlagsSectorDuplicate) != FlagsSectorDuplicate) @@ -574,7 +574,7 @@ namespace DiscImageChef.ImagePlugins } ArrayHelpers.ArrayFill(decodedData, (byte)0); } - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (TeleDisk plugin): \t\tLBA: {0}", LBA); if ((TDSector.flags & FlagsSectorNoID) != FlagsSectorNoID) @@ -583,13 +583,13 @@ namespace DiscImageChef.ImagePlugins { if ((TDSector.flags & FlagsSectorDuplicate) == FlagsSectorDuplicate) { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (TeleDisk plugin): \t\tSector {0} on cylinder {1} head {2} is duplicate, and marked so", TDSector.sectorNumber, TDSector.cylinder, TDSector.head); } else { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (TeleDisk plugin): \t\tSector {0} on cylinder {1} head {2} is duplicate, but is not marked so", TDSector.sectorNumber, TDSector.cylinder, TDSector.head); } @@ -840,7 +840,7 @@ namespace DiscImageChef.ImagePlugins ins += 4; outs += decodedPiece.Length; } - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (TeleDisk plugin): (Block pattern decoder): Input data size: {0} bytes", encodedData.Length); Console.WriteLine("DEBUG (TeleDisk plugin): (Block pattern decoder): Processed input: {0} bytes", ins); @@ -881,7 +881,7 @@ namespace DiscImageChef.ImagePlugins outs += Piece.Length; } } - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (TeleDisk plugin): (RLE decoder): Input data size: {0} bytes", encodedData.Length); Console.WriteLine("DEBUG (TeleDisk plugin): (RLE decoder): Processed input: {0} bytes", ins); @@ -967,7 +967,7 @@ namespace DiscImageChef.ImagePlugins return DiskType.ECMA_78_2; default: { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (TeleDisk plugin): Unknown 5,25\" disk with {0} bytes", totalDiskSize); return DiskType.Unknown; } @@ -1012,7 +1012,7 @@ namespace DiscImageChef.ImagePlugins return DiskType.SHARP_35; default: { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (TeleDisk plugin): Unknown 3,5\" disk with {0} bytes", totalDiskSize); return DiskType.Unknown; } @@ -1061,7 +1061,7 @@ namespace DiscImageChef.ImagePlugins return DiskType.ECMA_69_26; default: { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (TeleDisk plugin): Unknown 8\" disk with {0} bytes", totalDiskSize); return DiskType.Unknown; } @@ -1069,7 +1069,7 @@ namespace DiscImageChef.ImagePlugins } default: { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (TeleDisk plugin): Unknown drive type {1} with {0} bytes", totalDiskSize, header.driveType); return DiskType.Unknown; } @@ -1156,7 +1156,7 @@ namespace DiscImageChef.ImagePlugins return ImageInfo.driveSerialNumber; } - public override List GetPartitions() + public override List GetPartitions() { throw new FeatureUnsupportedImageException("Feature not supported by image format"); } diff --git a/DiscImageChef/ImagePlugins/VHD.cs b/DiscImageChef.DiscImages/VHD.cs similarity index 98% rename from DiscImageChef/ImagePlugins/VHD.cs rename to DiscImageChef.DiscImages/VHD.cs index b3cde450f..730c47455 100644 --- a/DiscImageChef/ImagePlugins/VHD.cs +++ b/DiscImageChef.DiscImages/VHD.cs @@ -365,7 +365,7 @@ namespace DiscImageChef.ImagePlugins #endregion - public VHD(PluginBase Core) + public VHD() { Name = "VirtualPC"; PluginUUID = new Guid("8014d88f-64cd-4484-9441-7635c632958a"); @@ -459,7 +459,7 @@ namespace DiscImageChef.ImagePlugins UInt32 headerCalculatedChecksum = VHDChecksum(header); UInt32 footerCalculatedChecksum = VHDChecksum(footer); - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (VirtualPC plugin): Header checksum = 0x{0:X8}, calculated = 0x{1:X8}", headerChecksum, headerCalculatedChecksum); Console.WriteLine("DEBUG (VirtualPC plugin): Header checksum = 0x{0:X8}, calculated = 0x{1:X8}", footerChecksum, footerCalculatedChecksum); @@ -503,7 +503,7 @@ namespace DiscImageChef.ImagePlugins thisDateTime = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Utc); thisDateTime = thisDateTime.AddSeconds(thisFooter.timestamp); - if (MainClass.isDebug) + //if (MainClass.isDebug) { Checksums.SHA1Context sha1Ctx = new Checksums.SHA1Context(); sha1Ctx.Init(); @@ -655,7 +655,7 @@ namespace DiscImageChef.ImagePlugins UInt32 dynamicChecksumCalculated = VHDChecksum(dynamicBytes); - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (VirtualPC plugin): Dynamic header checksum = 0x{0:X8}, calculated = 0x{1:X8}", dynamicChecksum, dynamicChecksumCalculated); if (dynamicChecksum != dynamicChecksumCalculated) @@ -694,7 +694,7 @@ namespace DiscImageChef.ImagePlugins parentDateTime = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Utc); parentDateTime = parentDateTime.AddSeconds(thisDynamic.parentTimestamp); - if (MainClass.isDebug) + //if (MainClass.isDebug) { Checksums.SHA1Context sha1Ctx = new Checksums.SHA1Context(); sha1Ctx.Init(); @@ -738,7 +738,7 @@ namespace DiscImageChef.ImagePlugins for (int i = 0; i < thisDynamic.maxTableEntries; i++) blockAllocationTable[i] = BigEndianBitConverter.ToUInt32(bat, 4 * i); - if (MainClass.isDebug) + //if (MainClass.isDebug) { DateTime endTime = DateTime.UtcNow; Console.WriteLine("DEBUG (VirtualPC plugin): Filling the BAT took {0} seconds", (endTime-startTime).TotalSeconds); @@ -769,7 +769,7 @@ namespace DiscImageChef.ImagePlugins Array.Copy(batSector.blockPointer, 0, blockAllocationTable, (i * 512) / 4, blockAllocationTable.Length - (i * 512) / 4); } - if (MainClass.isDebug) + //if (MainClass.isDebug) { DateTime endTime = DateTime.UtcNow; Console.WriteLine("DEBUG (VirtualPC plugin): Filling the BAT took {0} seconds", (endTime - startTime).TotalSeconds); @@ -777,7 +777,7 @@ namespace DiscImageChef.ImagePlugins // Too noisy /* - if (MainClass.isDebug) + //if (MainClass.isDebug) { for (int i = 0; i < thisDynamic.maxTableEntries; i++) Console.WriteLine("DEBUG (VirtualPC plugin): blockAllocationTable[{0}] = {1}", i, blockAllocationTable[i]); @@ -791,7 +791,7 @@ namespace DiscImageChef.ImagePlugins / 8 // and aligned to 512 byte boundary / 512)); - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (VirtualPC plugin): Bitmap is {0} sectors", bitmapSize); } @@ -815,7 +815,7 @@ namespace DiscImageChef.ImagePlugins imageStream.Seek((long)thisDynamic.locatorEntries[i].platformDataOffset, SeekOrigin.Begin); imageStream.Read(locatorEntriesData[i], 0, (int)thisDynamic.locatorEntries[i].platformDataLength); - if (MainClass.isDebug) + //if (MainClass.isDebug) { switch (thisDynamic.locatorEntries[i].platformCode) { @@ -861,7 +861,7 @@ namespace DiscImageChef.ImagePlugins parentPath = parentPath.Remove(0, 16); else { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (VirtualPC plugin) Unsupported protocol classified found in URI parent path: \"{0}\"", parentPath); parentPath = null; } @@ -870,7 +870,7 @@ namespace DiscImageChef.ImagePlugins if (parentPath != null) { - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (VirtualPC plugin) Possible parent path: \"{0}\"", parentPath); locatorFound |= File.Exists(parentPath); @@ -885,10 +885,11 @@ namespace DiscImageChef.ImagePlugins throw new FileNotFoundException("(VirtualPC plugin): Cannot find parent file for differencing disk image"); else { - PluginBase plugins = new PluginBase(); + parentImage = new VHD(); +/* PluginBase plugins = new PluginBase(); plugins.RegisterAllPlugins(); if (!plugins.ImagePluginsList.TryGetValue(Name.ToLower(), out parentImage)) - throw new SystemException("(VirtualPC plugin): Unable to open myself"); + throw new SystemException("(VirtualPC plugin): Unable to open myself");*/ if (!parentImage.IdentifyImage(parentPath)) throw new ImageNotSupportedException("(VirtualPC plugin): Parent image is not a Virtual PC disk image"); @@ -1025,7 +1026,7 @@ namespace DiscImageChef.ImagePlugins bool dirty = false || (bitmap[bitmapByte] & mask) == mask; /* - if (MainClass.isDebug) + //if (MainClass.isDebug) { Console.WriteLine("DEBUG (VirtualPC plugin): bitmapSize = {0}", bitmapSize); Console.WriteLine("DEBUG (VirtualPC plugin): blockNumber = {0}", blockNumber); @@ -1044,7 +1045,7 @@ namespace DiscImageChef.ImagePlugins if (dirty) { /* Too noisy - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (VirtualPC plugin): Sector {0} is dirty", sectorAddress); */ @@ -1061,7 +1062,7 @@ namespace DiscImageChef.ImagePlugins } /* Too noisy - if (MainClass.isDebug) + //if (MainClass.isDebug) Console.WriteLine("DEBUG (VirtualPC plugin): Sector {0} is clean", sectorAddress); */ @@ -1300,7 +1301,7 @@ namespace DiscImageChef.ImagePlugins return null; } - public override List GetPartitions() + public override List GetPartitions() { throw new FeatureUnsupportedImageException("Feature not supported by image format"); } diff --git a/DiscImageChef/ImagePlugins/ZZZRawImage.cs b/DiscImageChef.DiscImages/ZZZRawImage.cs similarity index 99% rename from DiscImageChef/ImagePlugins/ZZZRawImage.cs rename to DiscImageChef.DiscImages/ZZZRawImage.cs index d4056ff10..4fff44b4c 100644 --- a/DiscImageChef/ImagePlugins/ZZZRawImage.cs +++ b/DiscImageChef.DiscImages/ZZZRawImage.cs @@ -52,7 +52,7 @@ namespace DiscImageChef.ImagePlugins #endregion - public ZZZRawImage(PluginBase Core) + public ZZZRawImage() { Name = "Raw Disk Image"; // Non-random UUID to recognize this specific plugin @@ -623,7 +623,7 @@ namespace DiscImageChef.ImagePlugins return ImageInfo.driveSerialNumber; } - public override List GetPartitions() + public override List GetPartitions() { throw new FeatureUnsupportedImageException("Feature not supported by image format"); } diff --git a/DiscImageChef.sln b/DiscImageChef.sln index f84ba01cd..8a12104f2 100644 --- a/DiscImageChef.sln +++ b/DiscImageChef.sln @@ -11,6 +11,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiscImageChef.Checksums", " EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiscImageChef.Helpers", "DiscImageChef.Helpers\DiscImageChef.Helpers.csproj", "{F8BDF57B-1571-4CD0-84B3-B422088D359A}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiscImageChef.DiscImages", "DiscImageChef.DiscImages\DiscImageChef.DiscImages.csproj", "{74032CBC-339B-42F3-AF6F-E96C261F3E6A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiscImageChef.CommonTypes", "DiscImageChef.CommonTypes\DiscImageChef.CommonTypes.csproj", "{F2B84194-26EB-4227-B1C5-6602517E85AE}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x86 = Debug|x86 @@ -21,6 +25,10 @@ Global {5DEA2811-2FFA-4959-830B-CAD3ACACABEB}.Debug|x86.Build.0 = Debug|Any CPU {5DEA2811-2FFA-4959-830B-CAD3ACACABEB}.Release|x86.ActiveCfg = Release|Any CPU {5DEA2811-2FFA-4959-830B-CAD3ACACABEB}.Release|x86.Build.0 = Release|Any CPU + {74032CBC-339B-42F3-AF6F-E96C261F3E6A}.Debug|x86.ActiveCfg = Debug|Any CPU + {74032CBC-339B-42F3-AF6F-E96C261F3E6A}.Debug|x86.Build.0 = Debug|Any CPU + {74032CBC-339B-42F3-AF6F-E96C261F3E6A}.Release|x86.ActiveCfg = Release|Any CPU + {74032CBC-339B-42F3-AF6F-E96C261F3E6A}.Release|x86.Build.0 = Release|Any CPU {7A4B05BE-73C9-4F34-87FE-E80CCF1F732D}.Debug|x86.ActiveCfg = Debug|x86 {7A4B05BE-73C9-4F34-87FE-E80CCF1F732D}.Debug|x86.Build.0 = Debug|x86 {7A4B05BE-73C9-4F34-87FE-E80CCF1F732D}.Release|x86.ActiveCfg = Release|x86 @@ -31,6 +39,10 @@ Global {CC48B324-A532-4A45-87A6-6F91F7141E8D}.Debug|x86.Build.0 = Debug|Any CPU {CC48B324-A532-4A45-87A6-6F91F7141E8D}.Release|x86.ActiveCfg = Release|Any CPU {CC48B324-A532-4A45-87A6-6F91F7141E8D}.Release|x86.Build.0 = Release|Any CPU + {F2B84194-26EB-4227-B1C5-6602517E85AE}.Debug|x86.ActiveCfg = Debug|Any CPU + {F2B84194-26EB-4227-B1C5-6602517E85AE}.Debug|x86.Build.0 = Debug|Any CPU + {F2B84194-26EB-4227-B1C5-6602517E85AE}.Release|x86.ActiveCfg = Release|Any CPU + {F2B84194-26EB-4227-B1C5-6602517E85AE}.Release|x86.Build.0 = Release|Any CPU {F8BDF57B-1571-4CD0-84B3-B422088D359A}.Debug|x86.ActiveCfg = Debug|Any CPU {F8BDF57B-1571-4CD0-84B3-B422088D359A}.Debug|x86.Build.0 = Debug|Any CPU {F8BDF57B-1571-4CD0-84B3-B422088D359A}.Release|x86.ActiveCfg = Release|Any CPU diff --git a/DiscImageChef/ChangeLog b/DiscImageChef/ChangeLog index 7df451da3..28f42a249 100644 --- a/DiscImageChef/ChangeLog +++ b/DiscImageChef/ChangeLog @@ -1,3 +1,27 @@ +2015-10-05 Natalia Portillo + + * Plugins.cs: + * PartPlugins/RDB.cs: + * PartPlugins/MBR.cs: + * ImagePlugins/VHD.cs: + * PartPlugins/NeXT.cs: + * Commands/Analyze.cs: + * ImagePlugins/Nero.cs: + * DiscImageChef.csproj: + * DetectImageFormat.cs: + * PartPlugins/Atari.cs: + * ImagePlugins/CDRWin.cs: + * PartPlugins/AppleMap.cs: + * ImagePlugins/Apple2MG.cs: + * ImagePlugins/TeleDisk.cs: + * PartPlugins/PartPlugin.cs: + * ImagePlugins/ImageInfo.cs: + * ImagePlugins/DiskCopy42.cs: + * ImagePlugins/ImagePlugin.cs: + * ImagePlugins/ZZZRawImage.cs: + * ImagePlugins/DetectImageFormat.cs: + Moved disc image plugins to a separate library. + 2015-10-05 Natalia Portillo * Swapping.cs: diff --git a/DiscImageChef/Commands/Analyze.cs b/DiscImageChef/Commands/Analyze.cs index 6d8c3af98..069e36f96 100644 --- a/DiscImageChef/Commands/Analyze.cs +++ b/DiscImageChef/Commands/Analyze.cs @@ -114,13 +114,13 @@ namespace DiscImageChef.Commands if (options.SearchForPartitions) { - List partitions = new List(); + List partitions = new List(); string partition_scheme = ""; // TODO: Solve possibility of multiple partition schemes (CUE + MBR, MBR + RDB, CUE + APM, etc) foreach (PartPlugin _partplugin in plugins.PartPluginsList.Values) { - List _partitions; + List _partitions; if (_partplugin.GetInformation(_imageFormat, out _partitions)) { diff --git a/DiscImageChef/ImagePlugins/DetectImageFormat.cs b/DiscImageChef/DetectImageFormat.cs similarity index 100% rename from DiscImageChef/ImagePlugins/DetectImageFormat.cs rename to DiscImageChef/DetectImageFormat.cs diff --git a/DiscImageChef/DiscImageChef.csproj b/DiscImageChef/DiscImageChef.csproj index ed24ec737..53fecdb6f 100644 --- a/DiscImageChef/DiscImageChef.csproj +++ b/DiscImageChef/DiscImageChef.csproj @@ -64,12 +64,7 @@ - - - - - @@ -77,9 +72,6 @@ - - - @@ -88,13 +80,12 @@ - - + @@ -200,5 +191,13 @@ {F8BDF57B-1571-4CD0-84B3-B422088D359A} DiscImageChef.Helpers + + {74032CBC-339B-42F3-AF6F-E96C261F3E6A} + DiscImageChef.DiscImages + + + {F2B84194-26EB-4227-B1C5-6602517E85AE} + DiscImageChef.CommonTypes + \ No newline at end of file diff --git a/DiscImageChef/PartPlugins/AppleMap.cs b/DiscImageChef/PartPlugins/AppleMap.cs index 2925141dc..56eacd640 100644 --- a/DiscImageChef/PartPlugins/AppleMap.cs +++ b/DiscImageChef/PartPlugins/AppleMap.cs @@ -60,7 +60,7 @@ namespace DiscImageChef.PartPlugins PluginUUID = new Guid("36405F8D-4F1A-07F5-209C-223D735D6D22"); } - public override bool GetInformation(ImagePlugins.ImagePlugin imagePlugin, out List partitions) + public override bool GetInformation(ImagePlugins.ImagePlugin imagePlugin, out List partitions) { ulong apm_entries; uint sector_size; @@ -70,7 +70,7 @@ namespace DiscImageChef.PartPlugins else sector_size = imagePlugin.GetSectorSize(); - partitions = new List(); + partitions = new List(); AppleMapBootEntry APMB = new AppleMapBootEntry(); AppleMapPartitionEntry APMEntry; @@ -143,7 +143,7 @@ namespace DiscImageChef.PartPlugins if (APMEntry.signature == APM_ENTRY || APMEntry.signature == APM_OLDENT) // It should have partition entry signature { - Partition _partition = new Partition(); + CommonTypes.Partition _partition = new CommonTypes.Partition(); StringBuilder sb = new StringBuilder(); _partition.PartitionSequence = i; diff --git a/DiscImageChef/PartPlugins/Atari.cs b/DiscImageChef/PartPlugins/Atari.cs index f04366ded..c633bfb47 100644 --- a/DiscImageChef/PartPlugins/Atari.cs +++ b/DiscImageChef/PartPlugins/Atari.cs @@ -61,9 +61,9 @@ namespace DiscImageChef.PartPlugins PluginUUID = new Guid("d1dd0f24-ec39-4c4d-9072-be31919a3b5e"); } - public override bool GetInformation(ImagePlugins.ImagePlugin imagePlugin, out List partitions) + public override bool GetInformation(ImagePlugins.ImagePlugin imagePlugin, out List partitions) { - partitions = new List(); + partitions = new List(); if (imagePlugin.GetSectorSize() < 512) return false; @@ -155,7 +155,7 @@ namespace DiscImageChef.PartPlugins if (sectorSize == 2448 || sectorSize == 2352) sectorSize = 2048; - Partition part = new Partition(); + CommonTypes.Partition part = new CommonTypes.Partition(); part.PartitionLength = table.entries[i].length * sectorSize; part.PartitionSectors = table.entries[i].length; part.PartitionSequence = partitionSequence; @@ -235,7 +235,7 @@ namespace DiscImageChef.PartPlugins if (sectorSize == 2448 || sectorSize == 2352) sectorSize = 2048; - Partition part = new Partition(); + CommonTypes.Partition part = new CommonTypes.Partition(); part.PartitionLength = extendedTable.entries[j].length * sectorSize; part.PartitionSectors = extendedTable.entries[j].length; part.PartitionSequence = partitionSequence; @@ -306,7 +306,7 @@ namespace DiscImageChef.PartPlugins if (sectorSize == 2448 || sectorSize == 2352) sectorSize = 2048; - Partition part = new Partition(); + CommonTypes.Partition part = new CommonTypes.Partition(); part.PartitionLength = table.icdEntries[i].length * sectorSize; part.PartitionSectors = table.icdEntries[i].length; part.PartitionSequence = partitionSequence; diff --git a/DiscImageChef/PartPlugins/MBR.cs b/DiscImageChef/PartPlugins/MBR.cs index d7d2ccc9d..c46987553 100644 --- a/DiscImageChef/PartPlugins/MBR.cs +++ b/DiscImageChef/PartPlugins/MBR.cs @@ -53,13 +53,13 @@ namespace DiscImageChef.PartPlugins PluginUUID = new Guid("5E8A34E8-4F1A-59E6-4BF7-7EA647063A76"); } - public override bool GetInformation(ImagePlugins.ImagePlugin imagePlugin, out List partitions) + public override bool GetInformation(ImagePlugins.ImagePlugin imagePlugin, out List partitions) { byte cyl_sect1, cyl_sect2; // For decoding cylinder and sector UInt16 signature; ulong counter = 0; - partitions = new List(); + partitions = new List(); if (imagePlugin.GetSectorSize() < 512) return false; @@ -153,7 +153,7 @@ namespace DiscImageChef.PartPlugins // TODO: Handle disklabels bigger than 1 sector or search max no_parts for (int j = 0; j < no_parts; j++) { - Partition part = new Partition(); + CommonTypes.Partition part = new CommonTypes.Partition(); byte bsd_type; part.PartitionSectors = BitConverter.ToUInt32(disklabel_sector, 134 + j * 16 + 4); @@ -254,7 +254,7 @@ namespace DiscImageChef.PartPlugins if ((vtoc_ent.flags & 0x200) == 0x200 && vtoc_ent.tag != UNIX_TAG_EMPTY && vtoc_ent.tag != UNIX_TAG_WHOLE) { - Partition part = new Partition(); + CommonTypes.Partition part = new CommonTypes.Partition(); // TODO: Check if device bps == disklabel bps part.PartitionStartSector = vtoc_ent.start; part.PartitionSectors = vtoc_ent.length; @@ -292,7 +292,7 @@ namespace DiscImageChef.PartPlugins { for (int j = 0; j < 16; j++) { - Partition part = new Partition(); + CommonTypes.Partition part = new CommonTypes.Partition(); part.PartitionStartSector = BitConverter.ToUInt32(disklabel_sector, 68 + j * 12 + 4); part.PartitionSectors = BitConverter.ToUInt32(disklabel_sector, 68 + j * 12 + 8); part.PartitionStart = part.PartitionStartSector * imagePlugin.GetSectorSize(); // 68+4+j*12 @@ -323,7 +323,7 @@ namespace DiscImageChef.PartPlugins if (type == 0x81) { - Partition part = new Partition(); + CommonTypes.Partition part = new CommonTypes.Partition(); minix_subs = true; part.PartitionDescription = "Minix subpartition"; part.PartitionType = "Minix"; @@ -348,7 +348,7 @@ namespace DiscImageChef.PartPlugins if (valid) { - Partition part = new Partition(); + CommonTypes.Partition part = new CommonTypes.Partition(); if (entry.lba_start > 0 && entry.lba_sectors > 0) { part.PartitionStartSector = entry.lba_start; @@ -455,7 +455,7 @@ namespace DiscImageChef.PartPlugins // TODO: Handle disklabels bigger than 1 sector or search max no_parts for (int j = 0; j < no_parts; j++) { - Partition part = new Partition(); + CommonTypes.Partition part = new CommonTypes.Partition(); byte bsd_type; part.PartitionSectors = BitConverter.ToUInt32(disklabel_sector, 134 + j * 16 + 4); @@ -556,7 +556,7 @@ namespace DiscImageChef.PartPlugins if ((vtoc_ent.flags & 0x200) == 0x200 && vtoc_ent.tag != UNIX_TAG_EMPTY && vtoc_ent.tag != UNIX_TAG_WHOLE) { - Partition part = new Partition(); + CommonTypes.Partition part = new CommonTypes.Partition(); // TODO: Check if device bps == disklabel bps part.PartitionStartSector = vtoc_ent.start; part.PartitionSectors = vtoc_ent.length; @@ -594,7 +594,7 @@ namespace DiscImageChef.PartPlugins { for (int j = 0; j < 16; j++) { - Partition part = new Partition(); + CommonTypes.Partition part = new CommonTypes.Partition(); part.PartitionStartSector = BitConverter.ToUInt32(disklabel_sector, 68 + j * 12 + 4); part.PartitionSectors = BitConverter.ToUInt32(disklabel_sector, 68 + j * 12 + 8); part.PartitionStart = part.PartitionStartSector * imagePlugin.GetSectorSize(); // 68+4+j*12 @@ -625,7 +625,7 @@ namespace DiscImageChef.PartPlugins if (type == 0x81) { - Partition part = new Partition(); + CommonTypes.Partition part = new CommonTypes.Partition(); minix_subs = true; part.PartitionDescription = "Minix subpartition"; part.PartitionType = "Minix"; @@ -651,7 +651,7 @@ namespace DiscImageChef.PartPlugins if (ext_valid) { - Partition part = new Partition(); + CommonTypes.Partition part = new CommonTypes.Partition(); if (entry2.lba_start > 0 && entry2.lba_sectors > 0) { part.PartitionStartSector = entry2.lba_start; diff --git a/DiscImageChef/PartPlugins/NeXT.cs b/DiscImageChef/PartPlugins/NeXT.cs index 4174f2494..4d3f3ca0e 100644 --- a/DiscImageChef/PartPlugins/NeXT.cs +++ b/DiscImageChef/PartPlugins/NeXT.cs @@ -62,7 +62,7 @@ namespace DiscImageChef.PartPlugins PluginUUID = new Guid("246A6D93-4F1A-1F8A-344D-50187A5513A9"); } - public override bool GetInformation(ImagePlugins.ImagePlugin imagePlugin, out List partitions) + public override bool GetInformation(ImagePlugins.ImagePlugin imagePlugin, out List partitions) { byte[] cString; bool magic_found; @@ -77,7 +77,7 @@ namespace DiscImageChef.PartPlugins else sector_size = imagePlugin.GetSectorSize(); - partitions = new List(); + partitions = new List(); entry_sector = imagePlugin.ReadSector(0); // Starts on sector 0 on NeXT machines, CDs and floppies magic = BigEndianBitConverter.ToUInt32(entry_sector, 0x00); @@ -133,7 +133,7 @@ namespace DiscImageChef.PartPlugins if (entry.sectors > 0 && entry.sectors < 0xFFFFFFFF && entry.start < 0xFFFFFFFF) { - Partition part = new Partition(); + CommonTypes.Partition part = new CommonTypes.Partition(); StringBuilder sb = new StringBuilder(); part.PartitionLength = (ulong)entry.sectors * sector_size; diff --git a/DiscImageChef/PartPlugins/PartPlugin.cs b/DiscImageChef/PartPlugins/PartPlugin.cs index 55cd8327e..cfab6cd7e 100644 --- a/DiscImageChef/PartPlugins/PartPlugin.cs +++ b/DiscImageChef/PartPlugins/PartPlugin.cs @@ -61,29 +61,6 @@ namespace DiscImageChef.PartPlugins /// true, if partitioning scheme is recognized, false otherwise. /// Disk image. /// Returns list of partitions. - public abstract bool GetInformation(ImagePlugins.ImagePlugin imagePlugin, out List partitions); - } - - /// - /// Partition structure. - /// - public struct Partition - { - /// Partition number, 0-started - public ulong PartitionSequence; - /// Partition type - public string PartitionType; - /// Partition name (if the scheme supports it) - public string PartitionName; - /// Start of the partition, in bytes - public ulong PartitionStart; - /// LBA of partition start - public ulong PartitionStartSector; - /// Length in bytes of the partition - public ulong PartitionLength; - /// Length in sectors of the partition - public ulong PartitionSectors; - /// Information that does not find space in this struct - public string PartitionDescription; + public abstract bool GetInformation(ImagePlugins.ImagePlugin imagePlugin, out List partitions); } } \ No newline at end of file diff --git a/DiscImageChef/PartPlugins/RDB.cs b/DiscImageChef/PartPlugins/RDB.cs index 7c394e6e7..fc04ba566 100644 --- a/DiscImageChef/PartPlugins/RDB.cs +++ b/DiscImageChef/PartPlugins/RDB.cs @@ -889,9 +889,9 @@ namespace DiscImageChef.PartPlugins public byte[] loadData; } - public override bool GetInformation(ImagePlugins.ImagePlugin imagePlugin, out List partitions) + public override bool GetInformation(ImagePlugins.ImagePlugin imagePlugin, out List partitions) { - partitions = new List(); + partitions = new List(); BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian; ulong RDBBlock = 0; bool foundRDB = false; @@ -1363,7 +1363,7 @@ namespace DiscImageChef.PartPlugins ulong sequence = 0; foreach (PartitionEntry RDBEntry in PartitionEntries) { - Partition entry = new Partition(); + CommonTypes.Partition entry = new CommonTypes.Partition(); entry.PartitionDescription = AmigaDOSTypeToDescriptionString(RDBEntry.dosEnvVec.dosType); entry.PartitionName = RDBEntry.driveName; diff --git a/DiscImageChef/Plugins.cs b/DiscImageChef/Plugins.cs index df837c906..ae6f62f40 100644 --- a/DiscImageChef/Plugins.cs +++ b/DiscImageChef/Plugins.cs @@ -60,7 +60,7 @@ namespace DiscImageChef public void RegisterAllPlugins() { - Assembly assembly = Assembly.GetExecutingAssembly(); + Assembly assembly = Assembly.GetAssembly(typeof(ImagePlugin)); foreach (Type type in assembly.GetTypes()) { @@ -68,9 +68,22 @@ namespace DiscImageChef { if (type.IsSubclassOf(typeof(ImagePlugin))) { - ImagePlugin plugin = (ImagePlugin)type.GetConstructor(new [] { typeof(PluginBase) }).Invoke(new object[] { this }); + ImagePlugin plugin = (ImagePlugin)type.GetConstructor(Type.EmptyTypes).Invoke(new object[] { }); RegisterImagePlugin(plugin); } + } + catch (Exception exception) + { + Console.WriteLine(exception); + } + } + + assembly = Assembly.GetExecutingAssembly(); + + foreach (Type type in assembly.GetTypes()) + { + try + { if (type.IsSubclassOf(typeof(Plugin))) { Plugin plugin = (Plugin)type.GetConstructor(new [] { typeof(PluginBase) }).Invoke(new object[] { this });