Code restyling.

This commit is contained in:
2020-02-29 18:03:35 +00:00
parent 4ea327f0c6
commit f7e173710e
855 changed files with 43605 additions and 38045 deletions

View File

@@ -39,11 +39,8 @@ namespace Aaru.DiscImages
[SuppressMessage("ReSharper", "InconsistentNaming")]
enum RayDiskTypes : byte
{
Md2dd = 1,
Md2hd = 2,
Mf2dd = 3,
Mf2hd = 4,
Mf2ed = 5
Md2dd = 1, Md2hd = 2, Mf2dd = 3,
Mf2hd = 4, Mf2ed = 5
}
}
}

View File

@@ -44,7 +44,8 @@ namespace Aaru.DiscImages
{
Stream stream = imageFilter.GetDataForkStream();
if(stream.Length < Marshal.SizeOf<RayHdr>()) return false;
if(stream.Length < Marshal.SizeOf<RayHdr>())
return false;
byte[] buffer = new byte[Marshal.SizeOf<RayHdr>()];
stream.Seek(0, SeekOrigin.Begin);
@@ -55,17 +56,20 @@ namespace Aaru.DiscImages
string signature = StringHandlers.CToString(header.signature);
AaruConsole.DebugWriteLine("Ray Arachelian's Disk IMage plugin", "header.signature = {0}", signature);
AaruConsole.DebugWriteLine("Ray Arachelian's Disk IMage plugin", "header.diskType = {0}", header.diskType);
AaruConsole.DebugWriteLine("Ray Arachelian's Disk IMage plugin", "header.heads = {0}", header.heads);
AaruConsole.DebugWriteLine("Ray Arachelian's Disk IMage plugin", "header.cylinders = {0}", header.cylinders);
AaruConsole.DebugWriteLine("Ray Arachelian's Disk IMage plugin", "header.sectorsPerTrack = {0}",
header.sectorsPerTrack);
AaruConsole.DebugWriteLine("Ray Arachelian's Disk IMage plugin", "header.diskType = {0}", header.diskType);
AaruConsole.DebugWriteLine("Ray Arachelian's Disk IMage plugin", "header.heads = {0}", header.heads);
Regex sx = new Regex(REGEX_SIGNATURE);
AaruConsole.DebugWriteLine("Ray Arachelian's Disk IMage plugin", "header.cylinders = {0}",
header.cylinders);
AaruConsole.DebugWriteLine("Ray Arachelian's Disk IMage plugin", "header.sectorsPerTrack = {0}",
header.sectorsPerTrack);
var sx = new Regex(REGEX_SIGNATURE);
Match sm = sx.Match(signature);
AaruConsole.DebugWriteLine("Ray Arachelian's Disk IMage plugin", "header.signature matches? = {0}",
sm.Success);
sm.Success);
return sm.Success;
}

View File

@@ -41,32 +41,36 @@ namespace Aaru.DiscImages
{
public partial class RayDim
{
public string Name => "Ray Arachelian's Disk IMage";
public Guid Id => new Guid("F541F4E7-C1E3-4A2D-B07F-D863E87AB961");
public ImageInfo Info => imageInfo;
public string Author => "Natalia Portillo";
public string Format => "Ray Arachelian's Disk IMage";
public List<DumpHardwareType> DumpHardware => null;
public CICMMetadataType CicmMetadata => null;
public IEnumerable<MediaTagType> SupportedMediaTags => new MediaTagType[] { };
public IEnumerable<SectorTagType> SupportedSectorTags => new SectorTagType[] { };
public string Name => "Ray Arachelian's Disk IMage";
public Guid Id => new Guid("F541F4E7-C1E3-4A2D-B07F-D863E87AB961");
public ImageInfo Info => imageInfo;
public string Author => "Natalia Portillo";
public string Format => "Ray Arachelian's Disk IMage";
public List<DumpHardwareType> DumpHardware => null;
public CICMMetadataType CicmMetadata => null;
public IEnumerable<MediaTagType> SupportedMediaTags => new MediaTagType[]
{};
public IEnumerable<SectorTagType> SupportedSectorTags => new SectorTagType[]
{};
// TODO: Test with real hardware to see real supported media
public IEnumerable<MediaType> SupportedMediaTypes =>
new[]
{
MediaType.Apricot_35, MediaType.ATARI_35_DS_DD, MediaType.ATARI_35_DS_DD_11,
MediaType.ATARI_35_SS_DD, MediaType.ATARI_35_SS_DD_11, MediaType.DMF, MediaType.DMF_82,
MediaType.DOS_35_DS_DD_8, MediaType.DOS_35_DS_DD_9, MediaType.DOS_35_ED, MediaType.DOS_35_HD,
MediaType.DOS_35_SS_DD_8, MediaType.DOS_35_SS_DD_9, 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, MediaType.FDFORMAT_35_DD, MediaType.FDFORMAT_35_HD,
MediaType.FDFORMAT_525_DD, MediaType.FDFORMAT_525_HD, MediaType.RX50, MediaType.XDF_35,
MediaType.XDF_525
};
public IEnumerable<MediaType> SupportedMediaTypes => new[]
{
MediaType.Apricot_35, MediaType.ATARI_35_DS_DD, MediaType.ATARI_35_DS_DD_11, MediaType.ATARI_35_SS_DD,
MediaType.ATARI_35_SS_DD_11, MediaType.DMF, MediaType.DMF_82, MediaType.DOS_35_DS_DD_8,
MediaType.DOS_35_DS_DD_9, MediaType.DOS_35_ED, MediaType.DOS_35_HD, MediaType.DOS_35_SS_DD_8,
MediaType.DOS_35_SS_DD_9, 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, MediaType.FDFORMAT_35_DD, MediaType.FDFORMAT_35_HD,
MediaType.FDFORMAT_525_DD, MediaType.FDFORMAT_525_HD, MediaType.RX50, MediaType.XDF_35, MediaType.XDF_525
};
public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions =>
new (string name, Type type, string description, object @default)[] { };
public IEnumerable<string> KnownExtensions => new[] {".dim"};
public bool IsWriting { get; private set; }
public string ErrorMessage { get; private set; }
new (string name, Type type, string description, object @default)[]
{};
public IEnumerable<string> KnownExtensions => new[]
{
".dim"
};
public bool IsWriting { get; private set; }
public string ErrorMessage { get; private set; }
}
}

View File

@@ -44,29 +44,17 @@ namespace Aaru.DiscImages
ImageInfo imageInfo;
FileStream writingStream;
public RayDim()
public RayDim() => imageInfo = new ImageInfo
{
imageInfo = new ImageInfo
{
ReadableSectorTags = new List<SectorTagType>(),
ReadableMediaTags = new List<MediaTagType>(),
HasPartitions = false,
HasSessions = false,
Application = "Ray Arachelian's Disk IMage",
Creator = null,
Comments = null,
MediaManufacturer = null,
MediaModel = null,
MediaSerialNumber = null,
MediaBarcode = null,
MediaPartNumber = null,
MediaSequence = 0,
LastMediaSequence = 0,
DriveManufacturer = null,
DriveModel = null,
DriveSerialNumber = null,
DriveFirmwareRevision = null
};
}
ReadableSectorTags = new List<SectorTagType>(), ReadableMediaTags = new List<MediaTagType>(),
HasPartitions = false, HasSessions = false,
Application = "Ray Arachelian's Disk IMage", Creator = null,
Comments = null, MediaManufacturer = null, MediaModel = null,
MediaSerialNumber = null,
MediaBarcode = null, MediaPartNumber = null, MediaSequence = 0,
LastMediaSequence = 0,
DriveManufacturer = null, DriveModel = null, DriveSerialNumber = null,
DriveFirmwareRevision = null
};
}
}

View File

@@ -46,7 +46,8 @@ namespace Aaru.DiscImages
{
Stream stream = imageFilter.GetDataForkStream();
if(stream.Length < Marshal.SizeOf<RayHdr>()) return false;
if(stream.Length < Marshal.SizeOf<RayHdr>())
return false;
byte[] buffer = new byte[Marshal.SizeOf<RayHdr>()];
stream.Seek(0, SeekOrigin.Begin);
@@ -56,10 +57,11 @@ namespace Aaru.DiscImages
string signature = StringHandlers.CToString(header.signature);
Regex sx = new Regex(REGEX_SIGNATURE);
var sx = new Regex(REGEX_SIGNATURE);
Match sm = sx.Match(signature);
if(!sm.Success) return false;
if(!sm.Success)
return false;
imageInfo.ApplicationVersion = $"{sm.Groups["major"].Value}.{sm.Groups["minor"].Value}";
@@ -88,13 +90,16 @@ namespace Aaru.DiscImages
case MediaType.NEC_525_HD
when header.diskType == RayDiskTypes.Mf2hd || header.diskType == RayDiskTypes.Mf2ed:
imageInfo.MediaType = MediaType.NEC_35_HD_8;
break;
case MediaType.DOS_525_HD
when header.diskType == RayDiskTypes.Mf2hd || header.diskType == RayDiskTypes.Mf2ed:
imageInfo.MediaType = MediaType.NEC_35_HD_15;
break;
case MediaType.RX50 when header.diskType == RayDiskTypes.Md2dd || header.diskType == RayDiskTypes.Md2hd:
imageInfo.MediaType = MediaType.ATARI_35_SS_DD;
break;
}

View File

@@ -46,53 +46,60 @@ namespace Aaru.DiscImages
public partial class RayDim
{
public bool Create(string path, MediaType mediaType, Dictionary<string, string> options, ulong sectors,
uint sectorSize)
uint sectorSize)
{
if(sectorSize != 512)
{
ErrorMessage = "Unsupported sector size";
return false;
}
if(sectors > 255 * 255 * 255)
{
ErrorMessage = "Too many sectors";
return false;
}
if(!SupportedMediaTypes.Contains(mediaType))
{
ErrorMessage = $"Unsupport media format {mediaType}";
return false;
}
(ushort cylinders, byte heads, ushort sectorsPerTrack, uint bytesPerSector, MediaEncoding encoding, bool
variableSectorsPerTrack, MediaType type) geometry = Geometry.GetGeometry(mediaType);
imageInfo = new ImageInfo
{
MediaType = mediaType,
SectorSize = sectorSize,
Sectors = sectors,
Cylinders = geometry.cylinders,
Heads = geometry.heads,
SectorsPerTrack = geometry.sectorsPerTrack
MediaType = mediaType, SectorSize = sectorSize, Sectors = sectors,
Cylinders = geometry.cylinders,
Heads = geometry.heads, SectorsPerTrack = geometry.sectorsPerTrack
};
try { writingStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None); }
try
{
writingStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
}
catch(IOException e)
{
ErrorMessage = $"Could not create new image file, exception {e.Message}";
return false;
}
IsWriting = true;
ErrorMessage = null;
return true;
}
public bool WriteMediaTag(byte[] data, MediaTagType tag)
{
ErrorMessage = "Writing media tags is not supported.";
return false;
}
@@ -101,26 +108,31 @@ namespace Aaru.DiscImages
if(!IsWriting)
{
ErrorMessage = "Tried to write on a non-writable image";
return false;
}
if(data.Length != 512)
{
ErrorMessage = "Incorrect data size";
return false;
}
if(sectorAddress >= imageInfo.Sectors)
{
ErrorMessage = "Tried to write past image size";
return false;
}
writingStream.Seek((long)((ulong)Marshal.SizeOf<RayHdr>() + sectorAddress * imageInfo.SectorSize),
writingStream.Seek((long)((ulong)Marshal.SizeOf<RayHdr>() + (sectorAddress * imageInfo.SectorSize)),
SeekOrigin.Begin);
writingStream.Write(data, 0, data.Length);
ErrorMessage = "";
return true;
}
@@ -129,38 +141,45 @@ namespace Aaru.DiscImages
if(!IsWriting)
{
ErrorMessage = "Tried to write on a non-writable image";
return false;
}
if(data.Length % 512 != 0)
{
ErrorMessage = "Incorrect data size";
return false;
}
if(sectorAddress + length > imageInfo.Sectors)
{
ErrorMessage = "Tried to write past image size";
return false;
}
writingStream.Seek((long)((ulong)Marshal.SizeOf<RayHdr>() + sectorAddress * imageInfo.SectorSize),
writingStream.Seek((long)((ulong)Marshal.SizeOf<RayHdr>() + (sectorAddress * imageInfo.SectorSize)),
SeekOrigin.Begin);
writingStream.Write(data, 0, data.Length);
ErrorMessage = "";
return true;
}
public bool WriteSectorLong(byte[] data, ulong sectorAddress)
{
ErrorMessage = "Writing sectors with tags is not supported.";
return false;
}
public bool WriteSectorsLong(byte[] data, ulong sectorAddress, uint length)
{
ErrorMessage = "Writing sectors with tags is not supported.";
return false;
}
@@ -169,12 +188,14 @@ namespace Aaru.DiscImages
public bool WriteSectorTag(byte[] data, ulong sectorAddress, SectorTagType tag)
{
ErrorMessage = "Unsupported feature";
return false;
}
public bool WriteSectorsTag(byte[] data, ulong sectorAddress, uint length, SectorTagType tag)
{
ErrorMessage = "Unsupported feature";
return false;
}
@@ -187,19 +208,20 @@ namespace Aaru.DiscImages
if(!IsWriting)
{
ErrorMessage = "Image is not opened for writing";
return false;
}
string headerSignature =
$"Disk IMage VER 1.0 Copyright (C) {DateTime.Now.Year:D4} Ray Arachelian, All Rights Reserved. Aaru ";
RayHdr header = new RayHdr
var header = new RayHdr
{
signature = Encoding.ASCII.GetBytes(headerSignature),
cylinders = (byte)imageInfo.Cylinders,
diskType = RayDiskTypes.Mf2ed,
heads = (byte)imageInfo.Heads,
signature = Encoding.ASCII.GetBytes(headerSignature), cylinders = (byte)imageInfo.Cylinders,
diskType = RayDiskTypes.Mf2ed, heads = (byte)imageInfo.Heads,
sectorsPerTrack = (byte)imageInfo.SectorsPerTrack
};
header.signature[0x4A] = 0x00;
byte[] hdr = new byte[Marshal.SizeOf<RayHdr>()];
@@ -216,6 +238,7 @@ namespace Aaru.DiscImages
IsWriting = false;
ErrorMessage = "";
return true;
}