diff --git a/DiscImageChef.CommonTypes/Interfaces/IWritableImage.cs b/DiscImageChef.CommonTypes/Interfaces/IWritableImage.cs index 9ab7e898f..ed8e90786 100644 --- a/DiscImageChef.CommonTypes/Interfaces/IWritableImage.cs +++ b/DiscImageChef.CommonTypes/Interfaces/IWritableImage.cs @@ -65,7 +65,7 @@ namespace DiscImageChef.CommonTypes.Interfaces /// /// Retrieves a list of options supported by the filesystem, with name, type and description /// - IEnumerable<(string name, Type type, string description)> SupportedOptions { get; } + IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions { get; } /// /// Gets a list of known extensions for format auto-chosing /// diff --git a/DiscImageChef.DiscImages/Alcohol120/Properties.cs b/DiscImageChef.DiscImages/Alcohol120/Properties.cs index ebfc45b86..3e3cdb2dd 100644 --- a/DiscImageChef.DiscImages/Alcohol120/Properties.cs +++ b/DiscImageChef.DiscImages/Alcohol120/Properties.cs @@ -135,8 +135,8 @@ namespace DiscImageChef.DiscImages MediaType.NeoGeoCD, MediaType.PCFX, MediaType.CDTV, MediaType.CD32, MediaType.Nuon, MediaType.Playdia, MediaType.Pippin, MediaType.FMTOWNS, MediaType.MilCD }; - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new (string name, Type type, string description)[] { }; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new (string name, Type type, string description, object @default)[] { }; public IEnumerable KnownExtensions => new[] {".mds"}; public bool IsWriting { get; private set; } public string ErrorMessage { get; private set; } diff --git a/DiscImageChef.DiscImages/Anex86/Properties.cs b/DiscImageChef.DiscImages/Anex86/Properties.cs index 63e275263..114fbdbcd 100644 --- a/DiscImageChef.DiscImages/Anex86/Properties.cs +++ b/DiscImageChef.DiscImages/Anex86/Properties.cs @@ -80,8 +80,8 @@ namespace DiscImageChef.DiscImages MediaType.CompactFlash, MediaType.CompactFlashType2, MediaType.PCCardTypeI, MediaType.PCCardTypeII, MediaType.PCCardTypeIII, MediaType.PCCardTypeIV }; - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new (string name, Type type, string description)[] { }; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new (string name, Type type, string description, object @default)[] { }; public IEnumerable KnownExtensions => new[] {".fdi", ".hdi"}; public bool IsWriting { get; private set; } diff --git a/DiscImageChef.DiscImages/Apple2MG/Properties.cs b/DiscImageChef.DiscImages/Apple2MG/Properties.cs index 517110edd..a356701cb 100644 --- a/DiscImageChef.DiscImages/Apple2MG/Properties.cs +++ b/DiscImageChef.DiscImages/Apple2MG/Properties.cs @@ -71,8 +71,8 @@ namespace DiscImageChef.DiscImages MediaType.CompactFlash, MediaType.CompactFlashType2, MediaType.PCCardTypeI, MediaType.PCCardTypeII, MediaType.PCCardTypeIII, MediaType.PCCardTypeIV }; - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new (string name, Type type, string description)[] { }; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new (string name, Type type, string description, object @default)[] { }; public IEnumerable KnownExtensions => new[] {".2mg"}; public bool IsWriting { get; private set; } public string ErrorMessage { get; private set; } diff --git a/DiscImageChef.DiscImages/AppleDOS/Properties.cs b/DiscImageChef.DiscImages/AppleDOS/Properties.cs index 8dd80b67e..4839fc1f2 100644 --- a/DiscImageChef.DiscImages/AppleDOS/Properties.cs +++ b/DiscImageChef.DiscImages/AppleDOS/Properties.cs @@ -64,8 +64,8 @@ namespace DiscImageChef.DiscImages public IEnumerable SupportedMediaTags => new MediaTagType[] { }; public IEnumerable SupportedSectorTags => new SectorTagType[] { }; public IEnumerable SupportedMediaTypes => new[] {MediaType.Apple33SS}; - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new (string name, Type type, string description)[] { }; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new (string name, Type type, string description, object @default)[] { }; public IEnumerable KnownExtensions => new[] {".do", ".po"}; public bool IsWriting { get; private set; } public string ErrorMessage { get; private set; } diff --git a/DiscImageChef.DiscImages/Apridisk/Properties.cs b/DiscImageChef.DiscImages/Apridisk/Properties.cs index fe2393552..7d31a252e 100644 --- a/DiscImageChef.DiscImages/Apridisk/Properties.cs +++ b/DiscImageChef.DiscImages/Apridisk/Properties.cs @@ -75,8 +75,8 @@ namespace DiscImageChef.DiscImages MediaType.FDFORMAT_525_DD, MediaType.FDFORMAT_525_HD, MediaType.RX50, MediaType.XDF_35, MediaType.XDF_525 }; - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new[] {("compress", typeof(bool), "Enable Apridisk compression.")}; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new[] {("compress", typeof(bool), "Enable Apridisk compression.", (object)false)}; public IEnumerable KnownExtensions => new[] {".dsk"}; public bool IsWriting { get; private set; } public string ErrorMessage { get; private set; } diff --git a/DiscImageChef.DiscImages/BLU/Properties.cs b/DiscImageChef.DiscImages/BLU/Properties.cs index 154262dc6..2bcdceb3d 100644 --- a/DiscImageChef.DiscImages/BLU/Properties.cs +++ b/DiscImageChef.DiscImages/BLU/Properties.cs @@ -64,8 +64,8 @@ namespace DiscImageChef.DiscImages MediaType.Unknown, MediaType.FlashDrive, MediaType.CompactFlash, MediaType.CompactFlashType2, MediaType.PCCardTypeI, MediaType.PCCardTypeII, MediaType.PCCardTypeIII, MediaType.PCCardTypeIV }; - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new (string name, Type type, string description)[] { }; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new (string name, Type type, string description, object @default)[] { }; public IEnumerable KnownExtensions => new[] {".blu"}; // Just invented public bool IsWriting { get; private set; } public string ErrorMessage { get; private set; } diff --git a/DiscImageChef.DiscImages/CDRDAO/Properties.cs b/DiscImageChef.DiscImages/CDRDAO/Properties.cs index 3b2e01c05..936caceda 100644 --- a/DiscImageChef.DiscImages/CDRDAO/Properties.cs +++ b/DiscImageChef.DiscImages/CDRDAO/Properties.cs @@ -117,8 +117,8 @@ namespace DiscImageChef.DiscImages MediaType.CDTV, MediaType.CD32, MediaType.Nuon, MediaType.Playdia, MediaType.Pippin, MediaType.FMTOWNS }; - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new[] {("separate", typeof(bool), "Write each track to a separate file.")}; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new[] {("separate", typeof(bool), "Write each track to a separate file.", (object)false)}; public IEnumerable KnownExtensions => new[] {".toc"}; public bool IsWriting { get; private set; } public string ErrorMessage { get; private set; } diff --git a/DiscImageChef.DiscImages/CDRWin/Properties.cs b/DiscImageChef.DiscImages/CDRWin/Properties.cs index c7db9c876..a66c1c2f5 100644 --- a/DiscImageChef.DiscImages/CDRWin/Properties.cs +++ b/DiscImageChef.DiscImages/CDRWin/Properties.cs @@ -122,8 +122,8 @@ namespace DiscImageChef.DiscImages MediaType.NeoGeoCD, MediaType.PCFX, MediaType.CDTV, MediaType.CD32, MediaType.Nuon, MediaType.Playdia, MediaType.Pippin, MediaType.FMTOWNS, MediaType.MilCD }; - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new[] {("separate", typeof(bool), "Write each track to a separate file.")}; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new[] {("separate", typeof(bool), "Write each track to a separate file.", (object)false)}; public IEnumerable KnownExtensions => new[] {".cue"}; public bool IsWriting { get; private set; } public string ErrorMessage { get; private set; } diff --git a/DiscImageChef.DiscImages/CisCopy/Properties.cs b/DiscImageChef.DiscImages/CisCopy/Properties.cs index 8a276476f..04135c44a 100644 --- a/DiscImageChef.DiscImages/CisCopy/Properties.cs +++ b/DiscImageChef.DiscImages/CisCopy/Properties.cs @@ -64,8 +64,8 @@ namespace DiscImageChef.DiscImages MediaType.DOS_35_DS_DD_9, MediaType.DOS_35_HD, MediaType.DOS_525_DS_DD_8, MediaType.DOS_525_DS_DD_9, MediaType.DOS_525_HD, MediaType.DOS_525_SS_DD_8, MediaType.DOS_525_SS_DD_9 }; - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new (string name, Type type, string description)[] { }; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new (string name, Type type, string description, object @default)[] { }; public IEnumerable KnownExtensions => new[] {".dcf"}; public bool IsWriting { get; private set; } public string ErrorMessage { get; private set; } diff --git a/DiscImageChef.DiscImages/CloneCD/Properties.cs b/DiscImageChef.DiscImages/CloneCD/Properties.cs index fb24c946b..bc23a3918 100644 --- a/DiscImageChef.DiscImages/CloneCD/Properties.cs +++ b/DiscImageChef.DiscImages/CloneCD/Properties.cs @@ -70,8 +70,8 @@ namespace DiscImageChef.DiscImages MediaType.CDTV, MediaType.CD32, MediaType.Nuon, MediaType.Playdia, MediaType.Pippin, MediaType.FMTOWNS, MediaType.MilCD }; - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new (string name, Type type, string description)[] { }; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new (string name, Type type, string description, object @default)[] { }; public IEnumerable KnownExtensions => new[] {".ccd"}; public bool IsWriting { get; private set; } public string ErrorMessage { get; private set; } diff --git a/DiscImageChef.DiscImages/DiscImageChef/Properties.cs b/DiscImageChef.DiscImages/DiscImageChef/Properties.cs index 1c794cccb..9ad9fe943 100644 --- a/DiscImageChef.DiscImages/DiscImageChef/Properties.cs +++ b/DiscImageChef.DiscImages/DiscImageChef/Properties.cs @@ -57,22 +57,24 @@ namespace DiscImageChef.DiscImages public IEnumerable SupportedSectorTags => Enum.GetValues(typeof(SectorTagType)).Cast(); public IEnumerable SupportedMediaTypes => Enum.GetValues(typeof(MediaType)).Cast(); - public IEnumerable<(string name, Type type, string description)> SupportedOptions => + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => new[] { ("sectors_per_block", typeof(uint), - "How many sectors to store per block (will be rounded to next power of two)"), - ("dictionary", typeof(uint), "Size, in bytes, of the LZMA dictionary"), + "How many sectors to store per block (will be rounded to next power of two)", 4096U), + ("dictionary", typeof(uint), "Size, in bytes, of the LZMA dictionary", (uint)(1 << 25)), ("max_ddt_size", typeof(uint), - "Maximum size, in mebibytes, for in-memory DDT. If image needs a bigger one, it will be on-disk"), - ("md5", typeof(bool), "Calculate and store MD5 of image's user data"), - ("sha1", typeof(bool), "Calculate and store SHA1 of image's user data"), - ("sha256", typeof(bool), "Calculate and store SHA256 of image's user data"), - ("spamsum", typeof(bool), "Calculate and store SpamSum of image's user data"), + "Maximum size, in mebibytes, for in-memory DDT. If image needs a bigger one, it will be on-disk", + 256U), + ("md5", typeof(bool), "Calculate and store MD5 of image's user data", (object)false), + ("sha1", typeof(bool), "Calculate and store SHA1 of image's user data", (object)false), + ("sha256", typeof(bool), "Calculate and store SHA256 of image's user data", (object)false), + ("spamsum", typeof(bool), "Calculate and store SpamSum of image's user data", (object)false), ("deduplicate", typeof(bool), - "Store only unique sectors. This consumes more memory and is slower, but it's enabled by default"), + "Store only unique sectors. This consumes more memory and is slower, but it's enabled by default", + (object)true), ("nocompress", typeof(bool), - "Don't compress user data blocks. Other blocks will still be compressed") + "Don't compress user data blocks. Other blocks will still be compressed", (object)false) }; public IEnumerable KnownExtensions => new[] {".dicf"}; public bool IsWriting { get; private set; } diff --git a/DiscImageChef.DiscImages/DiskCopy42/Properties.cs b/DiscImageChef.DiscImages/DiskCopy42/Properties.cs index ec68e2357..cd3a4e104 100644 --- a/DiscImageChef.DiscImages/DiskCopy42/Properties.cs +++ b/DiscImageChef.DiscImages/DiskCopy42/Properties.cs @@ -68,8 +68,8 @@ namespace DiscImageChef.DiscImages MediaType.AppleSonySS, MediaType.AppleWidget, MediaType.DOS_35_DS_DD_9, MediaType.DOS_35_HD, MediaType.DMF }; - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new[] {("macosx", typeof(bool), "Use Mac OS X format byte")}; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new[] {("macosx", typeof(bool), "Use Mac OS X format byte", (object)false)}; public IEnumerable KnownExtensions => new[] {".dc42", ".diskcopy42", ".image"}; public bool IsWriting { get; private set; } public string ErrorMessage { get; private set; } diff --git a/DiscImageChef.DiscImages/DriDiskCopy/Properties.cs b/DiscImageChef.DiscImages/DriDiskCopy/Properties.cs index c47fbe7c8..e535ef53e 100644 --- a/DiscImageChef.DiscImages/DriDiskCopy/Properties.cs +++ b/DiscImageChef.DiscImages/DriDiskCopy/Properties.cs @@ -74,8 +74,8 @@ namespace DiscImageChef.DiscImages MediaType.FDFORMAT_525_DD, MediaType.FDFORMAT_525_HD, MediaType.RX50, MediaType.XDF_35, MediaType.XDF_525 }; - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new (string name, Type type, string description)[] { }; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new (string name, Type type, string description, object @default)[] { }; public IEnumerable KnownExtensions => new[] {".dsk"}; public bool IsWriting { get; private set; } public string ErrorMessage { get; private set; } diff --git a/DiscImageChef.DiscImages/MaxiDisk/Properties.cs b/DiscImageChef.DiscImages/MaxiDisk/Properties.cs index d70f8dc83..9651cc17c 100644 --- a/DiscImageChef.DiscImages/MaxiDisk/Properties.cs +++ b/DiscImageChef.DiscImages/MaxiDisk/Properties.cs @@ -74,8 +74,8 @@ namespace DiscImageChef.DiscImages MediaType.FDFORMAT_525_DD, MediaType.FDFORMAT_525_HD, MediaType.RX50, MediaType.XDF_35, MediaType.XDF_525 }; - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new (string name, Type type, string description)[] { }; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new (string name, Type type, string description, object @default)[] { }; public IEnumerable KnownExtensions => new[] {".hdk"}; public bool IsWriting { get; private set; } public string ErrorMessage { get; private set; } diff --git a/DiscImageChef.DiscImages/NHDr0/Properties.cs b/DiscImageChef.DiscImages/NHDr0/Properties.cs index 8159416bd..51d13948e 100644 --- a/DiscImageChef.DiscImages/NHDr0/Properties.cs +++ b/DiscImageChef.DiscImages/NHDr0/Properties.cs @@ -63,8 +63,8 @@ namespace DiscImageChef.DiscImages public IEnumerable SupportedSectorTags => new SectorTagType[] { }; public IEnumerable SupportedMediaTypes => new[] {MediaType.GENERIC_HDD, MediaType.Unknown}; // TODO: Support dynamic images - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new (string name, Type type, string description)[] { }; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new (string name, Type type, string description, object @default)[] { }; public IEnumerable KnownExtensions => new[] {".nhd"}; public bool IsWriting { get; private set; } public string ErrorMessage { get; private set; } diff --git a/DiscImageChef.DiscImages/Parallels/Properties.cs b/DiscImageChef.DiscImages/Parallels/Properties.cs index c089a2caa..ac0afdacc 100644 --- a/DiscImageChef.DiscImages/Parallels/Properties.cs +++ b/DiscImageChef.DiscImages/Parallels/Properties.cs @@ -69,8 +69,8 @@ namespace DiscImageChef.DiscImages MediaType.PCCardTypeIV }; // TODO: Add cluster size option - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new (string name, Type type, string description)[] { }; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new (string name, Type type, string description, object @default)[] { }; public IEnumerable KnownExtensions => new[] {".hdd"}; public bool IsWriting { get; private set; } public string ErrorMessage { get; private set; } diff --git a/DiscImageChef.DiscImages/QCOW/Properties.cs b/DiscImageChef.DiscImages/QCOW/Properties.cs index 8385761fa..ad48c31bb 100644 --- a/DiscImageChef.DiscImages/QCOW/Properties.cs +++ b/DiscImageChef.DiscImages/QCOW/Properties.cs @@ -68,8 +68,8 @@ namespace DiscImageChef.DiscImages MediaType.CompactFlashType2, MediaType.PCCardTypeI, MediaType.PCCardTypeII, MediaType.PCCardTypeIII, MediaType.PCCardTypeIV }; - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new (string name, Type type, string description)[] { }; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new (string name, Type type, string description, object @default)[] { }; public IEnumerable KnownExtensions => new[] {".qcow", ".qc"}; public bool IsWriting { get; private set; } public string ErrorMessage { get; private set; } diff --git a/DiscImageChef.DiscImages/QCOW2/Properties.cs b/DiscImageChef.DiscImages/QCOW2/Properties.cs index 115a6d33c..6ed6fca93 100644 --- a/DiscImageChef.DiscImages/QCOW2/Properties.cs +++ b/DiscImageChef.DiscImages/QCOW2/Properties.cs @@ -69,8 +69,8 @@ namespace DiscImageChef.DiscImages MediaType.CompactFlashType2, MediaType.PCCardTypeI, MediaType.PCCardTypeII, MediaType.PCCardTypeIII, MediaType.PCCardTypeIV }; - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new (string name, Type type, string description)[] { }; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new (string name, Type type, string description, object @default)[] { }; public IEnumerable KnownExtensions => new[] {".qcow2", ".qc2", ".qcow3", ".qc3"}; public bool IsWriting { get; private set; } public string ErrorMessage { get; private set; } diff --git a/DiscImageChef.DiscImages/QED/Properties.cs b/DiscImageChef.DiscImages/QED/Properties.cs index 37c8052ba..6bb4f1789 100644 --- a/DiscImageChef.DiscImages/QED/Properties.cs +++ b/DiscImageChef.DiscImages/QED/Properties.cs @@ -33,8 +33,10 @@ using System; using System.Collections.Generic; using DiscImageChef.CommonTypes; +using DiscImageChef.CommonTypes.Enums; using DiscImageChef.CommonTypes.Exceptions; using DiscImageChef.CommonTypes.Structs; +using Schemas; namespace DiscImageChef.DiscImages { @@ -55,5 +57,24 @@ namespace DiscImageChef.DiscImages public List Sessions => throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public List DumpHardware => null; + public CICMMetadataType CicmMetadata => null; + + public IEnumerable SupportedMediaTags => new MediaTagType[] { }; + public IEnumerable SupportedSectorTags => new SectorTagType[] { }; + public IEnumerable SupportedMediaTypes => + new[] + { + MediaType.Unknown, MediaType.GENERIC_HDD, MediaType.FlashDrive, MediaType.CompactFlash, + MediaType.CompactFlashType2, MediaType.PCCardTypeI, MediaType.PCCardTypeII, MediaType.PCCardTypeIII, + MediaType.PCCardTypeIV + }; + // TODO: Add cluster size option + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new (string name, Type type, string description, object @default)[] { }; + public IEnumerable KnownExtensions => new[] {".qed"}; + public bool IsWriting { get; private set; } + public string ErrorMessage { get; private set; } } } \ No newline at end of file diff --git a/DiscImageChef.DiscImages/QED/QED.cs b/DiscImageChef.DiscImages/QED/QED.cs index 2d3f93910..4db703d22 100644 --- a/DiscImageChef.DiscImages/QED/QED.cs +++ b/DiscImageChef.DiscImages/QED/QED.cs @@ -40,30 +40,29 @@ using DiscImageChef.CommonTypes.Enums; using DiscImageChef.CommonTypes.Exceptions; using DiscImageChef.CommonTypes.Interfaces; using DiscImageChef.CommonTypes.Structs; -using DiscImageChef.Console; using Schemas; namespace DiscImageChef.DiscImages { public partial class Qed : IWritableImage { - int clusterBits; - Dictionary clusterCache; - uint clusterSectors; - ImageInfo imageInfo; - Stream imageStream; - ulong l1Mask; + int clusterBits; + Dictionary clusterCache; + uint clusterSectors; + ImageInfo imageInfo; + Stream imageStream; + ulong l1Mask; int l1Shift; ulong[] l1Table; ulong l2Mask; Dictionary l2TableCache; uint maxClusterCache; uint maxL2TableCache; - QedHeader qHdr; - Dictionary sectorCache; - ulong sectorMask; - uint tableSize; - FileStream writingStream; + QedHeader qHdr; + Dictionary sectorCache; + ulong sectorMask; + uint tableSize; + FileStream writingStream; public Qed() { @@ -92,83 +91,49 @@ namespace DiscImageChef.DiscImages }; } - - - - public byte[] ReadSectorTag(ulong sectorAddress, SectorTagType tag) - { + public byte[] ReadSectorTag(ulong sectorAddress, SectorTagType tag) => throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public byte[] ReadSectorsTag(ulong sectorAddress, uint length, SectorTagType tag) - { + public byte[] ReadSectorsTag(ulong sectorAddress, uint length, SectorTagType tag) => throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public byte[] ReadDiskTag(MediaTagType tag) - { + public byte[] ReadDiskTag(MediaTagType tag) => throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public byte[] ReadSector(ulong sectorAddress, uint track) - { + public byte[] ReadSector(ulong sectorAddress, uint track) => throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public byte[] ReadSectorTag(ulong sectorAddress, uint track, SectorTagType tag) - { + public byte[] ReadSectorTag(ulong sectorAddress, uint track, SectorTagType tag) => throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public byte[] ReadSectors(ulong sectorAddress, uint length, uint track) - { + public byte[] ReadSectors(ulong sectorAddress, uint length, uint track) => throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public byte[] ReadSectorsTag(ulong sectorAddress, uint length, uint track, SectorTagType tag) - { + public byte[] ReadSectorsTag(ulong sectorAddress, uint length, uint track, SectorTagType tag) => throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public byte[] ReadSectorLong(ulong sectorAddress) - { + public byte[] ReadSectorLong(ulong sectorAddress) => throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public byte[] ReadSectorLong(ulong sectorAddress, uint track) - { + public byte[] ReadSectorLong(ulong sectorAddress, uint track) => throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public byte[] ReadSectorsLong(ulong sectorAddress, uint length) - { + public byte[] ReadSectorsLong(ulong sectorAddress, uint length) => throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public byte[] ReadSectorsLong(ulong sectorAddress, uint length, uint track) - { + public byte[] ReadSectorsLong(ulong sectorAddress, uint length, uint track) => throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public List GetSessionTracks(Session session) - { + public List GetSessionTracks(Session session) => throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public List GetSessionTracks(ushort session) - { + public List GetSessionTracks(ushort session) => throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public bool? VerifySector(ulong sectorAddress) - { - return null; - } + public bool? VerifySector(ulong sectorAddress) => null; - public bool? VerifySector(ulong sectorAddress, uint track) - { + public bool? VerifySector(ulong sectorAddress, uint track) => throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } public bool? VerifySectors(ulong sectorAddress, uint length, out List failingLbas, out List unknownLbas) @@ -181,34 +146,10 @@ namespace DiscImageChef.DiscImages } public bool? VerifySectors(ulong sectorAddress, uint length, uint track, out List failingLbas, - out List unknownLbas) - { + out List unknownLbas) => throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public bool? VerifyMediaImage() - { - return null; - } - - public List DumpHardware => null; - public CICMMetadataType CicmMetadata => null; - - public IEnumerable SupportedMediaTags => new MediaTagType[] { }; - public IEnumerable SupportedSectorTags => new SectorTagType[] { }; - public IEnumerable SupportedMediaTypes => - new[] - { - MediaType.Unknown, MediaType.GENERIC_HDD, MediaType.FlashDrive, MediaType.CompactFlash, - MediaType.CompactFlashType2, MediaType.PCCardTypeI, MediaType.PCCardTypeII, MediaType.PCCardTypeIII, - MediaType.PCCardTypeIV - }; - // TODO: Add cluster size option - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new (string name, Type type, string description)[] { }; - public IEnumerable KnownExtensions => new[] {".qed"}; - public bool IsWriting { get; private set; } - public string ErrorMessage { get; private set; } + public bool? VerifyMediaImage() => null; public bool Create(string path, MediaType mediaType, Dictionary options, ulong sectors, uint sectorSize) @@ -437,16 +378,9 @@ namespace DiscImageChef.DiscImages return true; } - public bool SetMetadata(ImageInfo metadata) - { - return true; - } + public bool SetMetadata(ImageInfo metadata) => true; - public bool SetGeometry(uint cylinders, uint heads, uint sectorsPerTrack) - { - // Not stored in image - return true; - } + public bool SetGeometry(uint cylinders, uint heads, uint sectorsPerTrack) => true; public bool WriteSectorTag(byte[] data, ulong sectorAddress, SectorTagType tag) { @@ -460,17 +394,9 @@ namespace DiscImageChef.DiscImages return false; } - public bool SetDumpHardware(List dumpHardware) - { - // Not supported - return false; - } + public bool SetDumpHardware(List dumpHardware) => false; - public bool SetCicmMetadata(CICMMetadataType metadata) - { - // Not supported - return false; - } + public bool SetCicmMetadata(CICMMetadataType metadata) => false; static bool IsPowerOfTwo(uint x) { diff --git a/DiscImageChef.DiscImages/RayDIM/Properties.cs b/DiscImageChef.DiscImages/RayDIM/Properties.cs index 2077603a2..721f1ed2d 100644 --- a/DiscImageChef.DiscImages/RayDIM/Properties.cs +++ b/DiscImageChef.DiscImages/RayDIM/Properties.cs @@ -74,8 +74,8 @@ namespace DiscImageChef.DiscImages MediaType.FDFORMAT_525_DD, MediaType.FDFORMAT_525_HD, MediaType.RX50, MediaType.XDF_35, MediaType.XDF_525 }; - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new (string name, Type type, string description)[] { }; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new (string name, Type type, string description, object @default)[] { }; public IEnumerable KnownExtensions => new[] {".dim"}; public bool IsWriting { get; private set; } public string ErrorMessage { get; private set; } diff --git a/DiscImageChef.DiscImages/RsIde/Properties.cs b/DiscImageChef.DiscImages/RsIde/Properties.cs index 4d711bcc4..78f853db1 100644 --- a/DiscImageChef.DiscImages/RsIde/Properties.cs +++ b/DiscImageChef.DiscImages/RsIde/Properties.cs @@ -68,8 +68,8 @@ namespace DiscImageChef.DiscImages MediaType.CompactFlashType2, MediaType.PCCardTypeI, MediaType.PCCardTypeII, MediaType.PCCardTypeIII, MediaType.PCCardTypeIV }; - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new (string name, Type type, string description)[] { }; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new (string name, Type type, string description, object @default)[] { }; public IEnumerable KnownExtensions => new[] {".ide"}; public bool IsWriting { get; private set; } public string ErrorMessage { get; private set; } diff --git a/DiscImageChef.DiscImages/SaveDskF/Properties.cs b/DiscImageChef.DiscImages/SaveDskF/Properties.cs index 7d1bcaef7..87bfa2dfc 100644 --- a/DiscImageChef.DiscImages/SaveDskF/Properties.cs +++ b/DiscImageChef.DiscImages/SaveDskF/Properties.cs @@ -74,8 +74,8 @@ namespace DiscImageChef.DiscImages MediaType.FDFORMAT_525_DD, MediaType.FDFORMAT_525_HD, MediaType.RX50, MediaType.XDF_35, MediaType.XDF_525 }; - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new (string name, Type type, string description)[] { }; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new (string name, Type type, string description, object @default)[] { }; public IEnumerable KnownExtensions => new[] {".dsk"}; public bool IsWriting { get; private set; } diff --git a/DiscImageChef.DiscImages/T98/Properties.cs b/DiscImageChef.DiscImages/T98/Properties.cs index 6a41b0a46..dd9ffb599 100644 --- a/DiscImageChef.DiscImages/T98/Properties.cs +++ b/DiscImageChef.DiscImages/T98/Properties.cs @@ -67,8 +67,8 @@ namespace DiscImageChef.DiscImages MediaType.CompactFlashType2, MediaType.PCCardTypeI, MediaType.PCCardTypeII, MediaType.PCCardTypeIII, MediaType.PCCardTypeIV }; - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new (string name, Type type, string description)[] { }; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new (string name, Type type, string description, object @default)[] { }; public IEnumerable KnownExtensions => new[] {".t98"}; public bool IsWriting { get; private set; } public string ErrorMessage { get; private set; } diff --git a/DiscImageChef.DiscImages/UDIF/Properties.cs b/DiscImageChef.DiscImages/UDIF/Properties.cs index 6a25b2a02..41720f362 100644 --- a/DiscImageChef.DiscImages/UDIF/Properties.cs +++ b/DiscImageChef.DiscImages/UDIF/Properties.cs @@ -69,8 +69,8 @@ namespace DiscImageChef.DiscImages MediaType.CompactFlashType2, MediaType.PCCardTypeI, MediaType.PCCardTypeII, MediaType.PCCardTypeIII, MediaType.PCCardTypeIV }; - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new (string name, Type type, string description)[] { }; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new (string name, Type type, string description, object @default)[] { }; public IEnumerable KnownExtensions => new[] {".dmg"}; public bool IsWriting { get; private set; } public string ErrorMessage { get; private set; } diff --git a/DiscImageChef.DiscImages/VDI/Properties.cs b/DiscImageChef.DiscImages/VDI/Properties.cs index 0b5b3c3ea..45d3271df 100644 --- a/DiscImageChef.DiscImages/VDI/Properties.cs +++ b/DiscImageChef.DiscImages/VDI/Properties.cs @@ -70,8 +70,8 @@ namespace DiscImageChef.DiscImages MediaType.PCCardTypeIV }; // TODO: Add cluster size option - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new (string name, Type type, string description)[] { }; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new (string name, Type type, string description, object @default)[] { }; public IEnumerable KnownExtensions => new[] {".vdi"}; public bool IsWriting { get; private set; } public string ErrorMessage { get; private set; } diff --git a/DiscImageChef.DiscImages/VHD/Properties.cs b/DiscImageChef.DiscImages/VHD/Properties.cs index 150d7fedb..5519cf9bd 100644 --- a/DiscImageChef.DiscImages/VHD/Properties.cs +++ b/DiscImageChef.DiscImages/VHD/Properties.cs @@ -83,8 +83,8 @@ namespace DiscImageChef.DiscImages MediaType.PCCardTypeIV }; // TODO: Support dynamic images - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new (string name, Type type, string description)[] { }; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new (string name, Type type, string description, object @default)[] { }; public IEnumerable KnownExtensions => new[] {".vhd"}; public bool IsWriting { get; private set; } public string ErrorMessage { get; private set; } diff --git a/DiscImageChef.DiscImages/VMware/Properties.cs b/DiscImageChef.DiscImages/VMware/Properties.cs index 19554b3f7..6fcfb937d 100644 --- a/DiscImageChef.DiscImages/VMware/Properties.cs +++ b/DiscImageChef.DiscImages/VMware/Properties.cs @@ -69,13 +69,14 @@ namespace DiscImageChef.DiscImages MediaType.CompactFlashType2, MediaType.PCCardTypeI, MediaType.PCCardTypeII, MediaType.PCCardTypeIII, MediaType.PCCardTypeIV }; - public IEnumerable<(string name, Type type, string description)> SupportedOptions => + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => new[] { ("adapter_type", typeof(string), - "Type of adapter type. Possible values: ide, lsilogic, buslogic, legacyESX."), - ("hwversion", typeof(uint), "VDMK hardware version."), - ("sparse", typeof(bool), "Use sparse extents."), ("split", typeof(bool), "Split data file at 2GiB.") + "Type of adapter type. Possible values: ide, lsilogic, buslogic, legacyESX.", "ide"), + ("hwversion", typeof(uint), "VDMK hardware version.", 4), + ("sparse", typeof(bool), "Use sparse extents.", (object)false), + ("split", typeof(bool), "Split data file at 2GiB.", (object)false) }; public IEnumerable KnownExtensions => new[] {".vmdk"}; public bool IsWriting { get; private set; } diff --git a/DiscImageChef.DiscImages/Virtual98/Properties.cs b/DiscImageChef.DiscImages/Virtual98/Properties.cs index fb1fc96d0..8c97cd323 100644 --- a/DiscImageChef.DiscImages/Virtual98/Properties.cs +++ b/DiscImageChef.DiscImages/Virtual98/Properties.cs @@ -67,8 +67,8 @@ namespace DiscImageChef.DiscImages MediaType.CompactFlashType2, MediaType.PCCardTypeI, MediaType.PCCardTypeII, MediaType.PCCardTypeIII, MediaType.PCCardTypeIV }; - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new (string name, Type type, string description)[] { }; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new (string name, Type type, string description, object @default)[] { }; public IEnumerable KnownExtensions => new[] {".v98"}; public bool IsWriting { get; private set; } public string ErrorMessage { get; private set; } diff --git a/DiscImageChef.DiscImages/ZZZRawImage/Properties.cs b/DiscImageChef.DiscImages/ZZZRawImage/Properties.cs index 4d23a743d..f3287abff 100644 --- a/DiscImageChef.DiscImages/ZZZRawImage/Properties.cs +++ b/DiscImageChef.DiscImages/ZZZRawImage/Properties.cs @@ -60,7 +60,11 @@ namespace DiscImageChef.DiscImages Track trk = new Track { - TrackBytesPerSector = rawCompactDisc ? (mode2 ? 2336 : 2048) : (int)imageInfo.SectorSize, + TrackBytesPerSector = rawCompactDisc + ? mode2 + ? 2336 + : 2048 + : (int)imageInfo.SectorSize, TrackEndSector = imageInfo.Sectors - 1, TrackFile = rawImageFilter.GetFilename(), TrackFileOffset = 0, @@ -71,7 +75,9 @@ namespace DiscImageChef.DiscImages TrackSubchannelType = hasSubchannel ? TrackSubchannelType.RawInterleaved : TrackSubchannelType.None, TrackType = rawCompactDisc - ? (mode2 ? TrackType.CdMode2Formless : TrackType.CdMode1) + ? mode2 + ? TrackType.CdMode2Formless + : TrackType.CdMode1 : TrackType.Data, TrackSession = 1 }; @@ -114,8 +120,12 @@ namespace DiscImageChef.DiscImages Length = imageInfo.Sectors, Offset = 0, Sequence = 0, - Type = rawCompactDisc ? (mode2 ? "MODE2/2352" : "MODE1/2352") : "MODE1/2048", - Size = imageInfo.Sectors * imageInfo.SectorSize + Type = rawCompactDisc + ? mode2 + ? "MODE2/2352" + : "MODE1/2352" + : "MODE1/2048", + Size = imageInfo.Sectors * imageInfo.SectorSize }; parts.Add(part); return parts; @@ -161,8 +171,8 @@ namespace DiscImageChef.DiscImages } } - public IEnumerable<(string name, Type type, string description)> SupportedOptions => - new (string name, Type type, string description)[] { }; + public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => + new (string name, Type type, string description, object @default)[] { }; public IEnumerable KnownExtensions => new[] {".adf", ".adl", ".d81", ".dsk", ".hdf", ".ima", ".img", ".iso", ".ssd", ".st"}; public bool IsWriting { get; private set; } diff --git a/DiscImageChef/Commands/ListOptions.cs b/DiscImageChef/Commands/ListOptions.cs index ecaad3b42..438b8f9db 100644 --- a/DiscImageChef/Commands/ListOptions.cs +++ b/DiscImageChef/Commands/ListOptions.cs @@ -65,14 +65,16 @@ namespace DiscImageChef.Commands DicConsole.WriteLine("Read/Write media images options:"); foreach(KeyValuePair kvp in plugins.WritableImages) { - List<(string name, Type type, string description)> options = kvp.Value.SupportedOptions.ToList(); + List<(string name, Type type, string description, object @default)> options = + kvp.Value.SupportedOptions.ToList(); if(options.Count == 0) continue; - DicConsole.WriteLine("\tOptions for {0}:", kvp.Value.Name); - DicConsole.WriteLine("\t\t{0,-16} {1,-16} {2,-8}", "Name", "Type", "Description"); - foreach((string name, Type type, string description) option in options.OrderBy(t => t.name)) - DicConsole.WriteLine("\t\t{0,-16} {1,-16} {2,-8}", option.name, TypeToString(option.type), - option.description); + DicConsole.WriteLine("\tOptions for {0}:", kvp.Value.Name); + DicConsole.WriteLine("\t\t{0,-20} {1,-10} {2,-12} {3,-8}", "Name", "Type", "Default", "Description"); + foreach((string name, Type type, string description, object @default) option in + options.OrderBy(t => t.name)) + DicConsole.WriteLine("\t\t{0,-20} {1,-10} {2,-12} {3,-8}", option.name, TypeToString(option.type), + option.@default, option.description); DicConsole.WriteLine(); } } @@ -89,7 +91,7 @@ namespace DiscImageChef.Commands if(type == typeof(float) || type == typeof(double)) return "float number"; - if(type == typeof(Guid)) return "float number"; + if(type == typeof(Guid)) return "uuid"; return type == typeof(string) ? "string" : type.ToString(); }