mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Split apple sector tags in specific types.
This commit is contained in:
@@ -88,8 +88,8 @@ public enum TrackSubchannelType : byte
|
||||
/// <summary>Metadata present for each sector (aka, "tag").</summary>
|
||||
public enum SectorTagType
|
||||
{
|
||||
/// <summary>Apple's GCR sector tags, 12 bytes</summary>
|
||||
AppleSectorTag = 0,
|
||||
/// <summary>Apple's Sony GCR sector tags, 12 bytes</summary>
|
||||
AppleSonyTag = 0,
|
||||
/// <summary>Sync frame from CD sector, 12 bytes</summary>
|
||||
CdSectorSync = 1,
|
||||
/// <summary>CD sector header, 4 bytes</summary>
|
||||
@@ -127,7 +127,11 @@ public enum SectorTagType
|
||||
/// <summary>DVD sector ID error detection, 2 bytes</summary>
|
||||
DvdSectorIed = 18,
|
||||
/// <summary>DVD sector EDC, 4 bytes</summary>
|
||||
DvdSectorEdc = 19
|
||||
DvdSectorEdc = 19,
|
||||
/// <summary>Apple's Profile sector tag, 20 bytes</summary>
|
||||
AppleProfileTag = 20,
|
||||
/// <summary>Priam Data Tower sector tag, 24 bytes</summary>
|
||||
PriamDataTowerTag = 21
|
||||
}
|
||||
|
||||
/// <summary>Metadata present for each media.</summary>
|
||||
|
||||
@@ -325,7 +325,7 @@ public sealed partial class AppleMFS
|
||||
_volMdb.drAlBlSt +
|
||||
_partitionStart,
|
||||
(uint)_sectorsPerBlock,
|
||||
SectorTagType.AppleSectorTag,
|
||||
SectorTagType.AppleSonyTag,
|
||||
out byte[] sectors)
|
||||
: _device.ReadSectors((ulong)((nextBlock - 2) * _sectorsPerBlock) +
|
||||
_volMdb.drAlBlSt +
|
||||
|
||||
@@ -84,7 +84,7 @@ public sealed partial class AppleMFS
|
||||
_volMdb.drNxtFNum = BigEndianBitConverter.ToUInt32(_mdbBlocks, 0x01E);
|
||||
_volMdb.drFreeBks = BigEndianBitConverter.ToUInt16(_mdbBlocks, 0x022);
|
||||
_volMdb.drVNSiz = _mdbBlocks[0x024];
|
||||
byte[] variableSize = new byte[_volMdb.drVNSiz + 1];
|
||||
var variableSize = new byte[_volMdb.drVNSiz + 1];
|
||||
Array.Copy(_mdbBlocks, 0x024, variableSize, 0, _volMdb.drVNSiz + 1);
|
||||
_volMdb.drVN = StringHandlers.PascalToString(variableSize, _encoding);
|
||||
|
||||
@@ -105,10 +105,10 @@ public sealed partial class AppleMFS
|
||||
_blockMapBytes = new byte[bytesInBlockMap];
|
||||
Array.Copy(wholeMdb, BYTES_BEFORE_BLOCK_MAP, _blockMapBytes, 0, _blockMapBytes.Length);
|
||||
|
||||
int offset = 0;
|
||||
var offset = 0;
|
||||
_blockMap = new uint[_volMdb.drNmAlBlks + 2 + 1];
|
||||
|
||||
for(int i = 2; i < _volMdb.drNmAlBlks + 2; i += 8)
|
||||
for(var i = 2; i < _volMdb.drNmAlBlks + 2; i += 8)
|
||||
{
|
||||
uint tmp1 = 0;
|
||||
uint tmp2 = 0;
|
||||
@@ -141,19 +141,19 @@ public sealed partial class AppleMFS
|
||||
offset += 12;
|
||||
}
|
||||
|
||||
if(_device.Info.ReadableSectorTags.Contains(SectorTagType.AppleSectorTag))
|
||||
if(_device.Info.ReadableSectorTags.Contains(SectorTagType.AppleSonyTag))
|
||||
{
|
||||
_device.ReadSectorTag(2 + _partitionStart, SectorTagType.AppleSectorTag, out _mdbTags);
|
||||
_device.ReadSectorTag(0 + _partitionStart, SectorTagType.AppleSectorTag, out _bootTags);
|
||||
_device.ReadSectorTag(2 + _partitionStart, SectorTagType.AppleSonyTag, out _mdbTags);
|
||||
_device.ReadSectorTag(0 + _partitionStart, SectorTagType.AppleSonyTag, out _bootTags);
|
||||
|
||||
_device.ReadSectorsTag(_volMdb.drDirSt + _partitionStart,
|
||||
_volMdb.drBlLen,
|
||||
SectorTagType.AppleSectorTag,
|
||||
SectorTagType.AppleSonyTag,
|
||||
out _directoryTags);
|
||||
|
||||
_device.ReadSectorsTag(_partitionStart + 2,
|
||||
(uint)sectorsInWholeMdb,
|
||||
SectorTagType.AppleSectorTag,
|
||||
SectorTagType.AppleSonyTag,
|
||||
out _bitmapTags);
|
||||
}
|
||||
|
||||
@@ -163,7 +163,7 @@ public sealed partial class AppleMFS
|
||||
|
||||
_mounted = true;
|
||||
|
||||
ushort bbSig = BigEndianBitConverter.ToUInt16(_bootBlocks, 0x000);
|
||||
var bbSig = BigEndianBitConverter.ToUInt16(_bootBlocks, 0x000);
|
||||
|
||||
if(bbSig != AppleCommon.BB_MAGIC) _bootBlocks = null;
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ public sealed partial class AppleMFS
|
||||
string.Compare(path, "$Boot", StringComparison.InvariantCulture) == 0 ||
|
||||
string.Compare(path, "$MDB", StringComparison.InvariantCulture) == 0)
|
||||
{
|
||||
if(_device.Info.ReadableSectorTags.Contains(SectorTagType.AppleSectorTag))
|
||||
if(_device.Info.ReadableSectorTags.Contains(SectorTagType.AppleSonyTag))
|
||||
xattrs.Add("com.apple.macintosh.tags");
|
||||
|
||||
return ErrorNumber.NoError;
|
||||
@@ -84,13 +84,13 @@ public sealed partial class AppleMFS
|
||||
{
|
||||
xattrs.Add("com.apple.ResourceFork");
|
||||
|
||||
if(_debug && _device.Info.ReadableSectorTags.Contains(SectorTagType.AppleSectorTag))
|
||||
if(_debug && _device.Info.ReadableSectorTags.Contains(SectorTagType.AppleSonyTag))
|
||||
xattrs.Add("com.apple.ResourceFork.tags");
|
||||
}
|
||||
|
||||
xattrs.Add("com.apple.FinderInfo");
|
||||
|
||||
if(_debug && _device.Info.ReadableSectorTags.Contains(SectorTagType.AppleSectorTag) && entry.flLgLen > 0)
|
||||
if(_debug && _device.Info.ReadableSectorTags.Contains(SectorTagType.AppleSonyTag) && entry.flLgLen > 0)
|
||||
xattrs.Add("com.apple.macintosh.tags");
|
||||
|
||||
xattrs.Sort();
|
||||
@@ -120,7 +120,7 @@ public sealed partial class AppleMFS
|
||||
string.Compare(path, "$Boot", StringComparison.InvariantCulture) == 0 ||
|
||||
string.Compare(path, "$MDB", StringComparison.InvariantCulture) == 0)
|
||||
{
|
||||
if(_device.Info.ReadableSectorTags.Contains(SectorTagType.AppleSectorTag) &&
|
||||
if(_device.Info.ReadableSectorTags.Contains(SectorTagType.AppleSonyTag) &&
|
||||
string.Compare(xattr, "com.apple.macintosh.tags", StringComparison.InvariantCulture) == 0)
|
||||
{
|
||||
if(string.Compare(path, "$", StringComparison.InvariantCulture) == 0)
|
||||
@@ -185,8 +185,8 @@ public sealed partial class AppleMFS
|
||||
return ErrorNumber.NoError;
|
||||
}
|
||||
|
||||
if(!_debug ||
|
||||
!_device.Info.ReadableSectorTags.Contains(SectorTagType.AppleSectorTag) ||
|
||||
if(!_debug ||
|
||||
!_device.Info.ReadableSectorTags.Contains(SectorTagType.AppleSonyTag) ||
|
||||
string.Compare(xattr, "com.apple.macintosh.tags", StringComparison.InvariantCulture) != 0)
|
||||
return ErrorNumber.NoSuchExtendedAttribute;
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ public sealed partial class LisaFS
|
||||
|
||||
if(error != ErrorNumber.NoError) return error;
|
||||
|
||||
int offset = 0;
|
||||
var offset = 0;
|
||||
List<CatalogEntryV2> catalogV2 = [];
|
||||
|
||||
// For each entry on the catalog
|
||||
@@ -210,7 +210,7 @@ public sealed partial class LisaFS
|
||||
// If root catalog is not pointed in MDDF (unchecked) maybe it's always following S-Records File?
|
||||
for(ulong i = 0; i < _device.Info.Sectors; i++)
|
||||
{
|
||||
errno = _device.ReadSectorTag(i, SectorTagType.AppleSectorTag, out byte[] tag);
|
||||
errno = _device.ReadSectorTag(i, SectorTagType.AppleSonyTag, out byte[] tag);
|
||||
|
||||
if(errno != ErrorNumber.NoError) continue;
|
||||
|
||||
@@ -234,7 +234,7 @@ public sealed partial class LisaFS
|
||||
while(prevCatalogPointer != 0xFFFFFFFF)
|
||||
{
|
||||
errno = _device.ReadSectorTag(prevCatalogPointer + _mddf.mddf_block + _volumePrefix,
|
||||
SectorTagType.AppleSectorTag,
|
||||
SectorTagType.AppleSonyTag,
|
||||
out byte[] tag);
|
||||
|
||||
if(errno != ErrorNumber.NoError) return errno;
|
||||
@@ -260,7 +260,7 @@ public sealed partial class LisaFS
|
||||
while(nextCatalogPointer != 0xFFFFFFFF)
|
||||
{
|
||||
errno = _device.ReadSectorTag(nextCatalogPointer + _mddf.mddf_block + _volumePrefix,
|
||||
SectorTagType.AppleSectorTag,
|
||||
SectorTagType.AppleSonyTag,
|
||||
out byte[] tag);
|
||||
|
||||
if(errno != ErrorNumber.NoError) return errno;
|
||||
@@ -282,7 +282,7 @@ public sealed partial class LisaFS
|
||||
// Foreach catalog block
|
||||
foreach(byte[] buf in catalogBlocks)
|
||||
{
|
||||
int offset = 0;
|
||||
var offset = 0;
|
||||
|
||||
// Traverse all entries
|
||||
while(offset + 64 <= buf.Length)
|
||||
|
||||
@@ -71,11 +71,11 @@ public sealed partial class LisaFS
|
||||
// This code just allow to ignore that corruption by searching the Extents File using sector tags
|
||||
if(ptr >= _device.Info.Sectors)
|
||||
{
|
||||
bool found = false;
|
||||
var found = false;
|
||||
|
||||
for(ulong i = 0; i < _device.Info.Sectors; i++)
|
||||
{
|
||||
errno = _device.ReadSectorTag(i, SectorTagType.AppleSectorTag, out tag);
|
||||
errno = _device.ReadSectorTag(i, SectorTagType.AppleSonyTag, out tag);
|
||||
|
||||
if(errno != ErrorNumber.NoError) continue;
|
||||
|
||||
@@ -93,7 +93,7 @@ public sealed partial class LisaFS
|
||||
}
|
||||
|
||||
// Checks that the sector tag indicates its the Extents File we are searching for
|
||||
errno = _device.ReadSectorTag(ptr, SectorTagType.AppleSectorTag, out tag);
|
||||
errno = _device.ReadSectorTag(ptr, SectorTagType.AppleSonyTag, out tag);
|
||||
|
||||
if(errno != ErrorNumber.NoError) return errno;
|
||||
|
||||
@@ -150,7 +150,7 @@ public sealed partial class LisaFS
|
||||
file.LisaInfo = new byte[128];
|
||||
Array.Copy(sector, 0x180, file.LisaInfo, 0, 128);
|
||||
|
||||
int extentsCount = 0;
|
||||
var extentsCount = 0;
|
||||
int extentsOffset;
|
||||
|
||||
if(_mddf.fsversion == LISA_V1)
|
||||
@@ -166,7 +166,7 @@ public sealed partial class LisaFS
|
||||
extentsOffset = 0x88;
|
||||
}
|
||||
|
||||
for(int j = 0; j < 41; j++)
|
||||
for(var j = 0; j < 41; j++)
|
||||
{
|
||||
if(BigEndianBitConverter.ToInt16(sector, extentsOffset + j * 6 + 4) == 0) break;
|
||||
|
||||
@@ -175,7 +175,7 @@ public sealed partial class LisaFS
|
||||
|
||||
file.extents = new Extent[extentsCount];
|
||||
|
||||
for(int j = 0; j < extentsCount; j++)
|
||||
for(var j = 0; j < extentsCount; j++)
|
||||
{
|
||||
file.extents[j] = new Extent
|
||||
{
|
||||
@@ -193,9 +193,9 @@ public sealed partial class LisaFS
|
||||
AaruLogging.Debug(MODULE_NAME, "ExtentFile[{0}].filenameLen = {1}", fileId, file.filenameLen);
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
"ExtentFile[{0}].filename = {1}",
|
||||
fileId,
|
||||
StringHandlers.CToString(file.filename, _encoding));
|
||||
"ExtentFile[{0}].filename = {1}",
|
||||
fileId,
|
||||
StringHandlers.CToString(file.filename, _encoding));
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME, "ExtentFile[{0}].unknown1 = 0x{1:X4}", fileId, file.unknown1);
|
||||
AaruLogging.Debug(MODULE_NAME, "ExtentFile[{0}].file_uid = 0x{1:X16}", fileId, file.file_uid);
|
||||
@@ -218,20 +218,20 @@ public sealed partial class LisaFS
|
||||
AaruLogging.Debug(MODULE_NAME, "ExtentFile[{0}].open = {1}", fileId, file.open > 0);
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
"ExtentFile[{0}].unknown5 = 0x{1:X2}{2:X2}{3:X2}{4:X2}{5:X2}{6:X2}{7:X2}{8:X2}{9:X2}" +
|
||||
"{10:X2}{11:X2}",
|
||||
fileId,
|
||||
file.unknown5[0],
|
||||
file.unknown5[1],
|
||||
file.unknown5[2],
|
||||
file.unknown5[3],
|
||||
file.unknown5[4],
|
||||
file.unknown5[5],
|
||||
file.unknown5[6],
|
||||
file.unknown5[7],
|
||||
file.unknown5[8],
|
||||
file.unknown5[9],
|
||||
file.unknown5[10]);
|
||||
"ExtentFile[{0}].unknown5 = 0x{1:X2}{2:X2}{3:X2}{4:X2}{5:X2}{6:X2}{7:X2}{8:X2}{9:X2}" +
|
||||
"{10:X2}{11:X2}",
|
||||
fileId,
|
||||
file.unknown5[0],
|
||||
file.unknown5[1],
|
||||
file.unknown5[2],
|
||||
file.unknown5[3],
|
||||
file.unknown5[4],
|
||||
file.unknown5[5],
|
||||
file.unknown5[6],
|
||||
file.unknown5[7],
|
||||
file.unknown5[8],
|
||||
file.unknown5[9],
|
||||
file.unknown5[10]);
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME, "ExtentFile[{0}].release = {1}", fileId, file.release);
|
||||
AaruLogging.Debug(MODULE_NAME, "ExtentFile[{0}].build = {1}", fileId, file.build);
|
||||
@@ -241,62 +241,56 @@ public sealed partial class LisaFS
|
||||
AaruLogging.Debug(MODULE_NAME, "ExtentFile[{0}].revision = {1}", fileId, file.revision);
|
||||
AaruLogging.Debug(MODULE_NAME, "ExtentFile[{0}].unknown6 = 0x{1:X4}", fileId, file.unknown6);
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
"ExtentFile[{0}].password_valid = {1}",
|
||||
fileId,
|
||||
file.password_valid > 0);
|
||||
AaruLogging.Debug(MODULE_NAME, "ExtentFile[{0}].password_valid = {1}", fileId, file.password_valid > 0);
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME, "ExtentFile[{0}].password = {1}", fileId, _encoding.GetString(file.password));
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
"ExtentFile[{0}].password = {1}",
|
||||
fileId,
|
||||
_encoding.GetString(file.password));
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
"ExtentFile[{0}].unknown7 = 0x{1:X2}{2:X2}{3:X2}",
|
||||
fileId,
|
||||
file.unknown7[0],
|
||||
file.unknown7[1],
|
||||
file.unknown7[2]);
|
||||
"ExtentFile[{0}].unknown7 = 0x{1:X2}{2:X2}{3:X2}",
|
||||
fileId,
|
||||
file.unknown7[0],
|
||||
file.unknown7[1],
|
||||
file.unknown7[2]);
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME, "ExtentFile[{0}].overhead = {1}", fileId, file.overhead);
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
"ExtentFile[{0}].unknown8 = 0x{1:X2}{2:X2}{3:X2}{4:X2}{5:X2}{6:X2}{7:X2}{8:X2}{9:X2}" +
|
||||
"{10:X2}{11:X2}{12:X2}{13:X2}{14:X2}{15:X2}{16:X2}",
|
||||
fileId,
|
||||
file.unknown8[0],
|
||||
file.unknown8[1],
|
||||
file.unknown8[2],
|
||||
file.unknown8[3],
|
||||
file.unknown8[4],
|
||||
file.unknown8[5],
|
||||
file.unknown8[6],
|
||||
file.unknown8[7],
|
||||
file.unknown8[8],
|
||||
file.unknown8[9],
|
||||
file.unknown8[10],
|
||||
file.unknown8[11],
|
||||
file.unknown8[12],
|
||||
file.unknown8[13],
|
||||
file.unknown8[14],
|
||||
file.unknown8[15]);
|
||||
"ExtentFile[{0}].unknown8 = 0x{1:X2}{2:X2}{3:X2}{4:X2}{5:X2}{6:X2}{7:X2}{8:X2}{9:X2}" +
|
||||
"{10:X2}{11:X2}{12:X2}{13:X2}{14:X2}{15:X2}{16:X2}",
|
||||
fileId,
|
||||
file.unknown8[0],
|
||||
file.unknown8[1],
|
||||
file.unknown8[2],
|
||||
file.unknown8[3],
|
||||
file.unknown8[4],
|
||||
file.unknown8[5],
|
||||
file.unknown8[6],
|
||||
file.unknown8[7],
|
||||
file.unknown8[8],
|
||||
file.unknown8[9],
|
||||
file.unknown8[10],
|
||||
file.unknown8[11],
|
||||
file.unknown8[12],
|
||||
file.unknown8[13],
|
||||
file.unknown8[14],
|
||||
file.unknown8[15]);
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME, "ExtentFile[{0}].length = {1}", fileId, file.length);
|
||||
AaruLogging.Debug(MODULE_NAME, "ExtentFile[{0}].unknown9 = 0x{1:X8}", fileId, file.unknown9);
|
||||
|
||||
for(int ext = 0; ext < file.extents.Length; ext++)
|
||||
for(var ext = 0; ext < file.extents.Length; ext++)
|
||||
{
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
"ExtentFile[{0}].extents[{1}].start = {2}",
|
||||
fileId,
|
||||
ext,
|
||||
file.extents[ext].start);
|
||||
"ExtentFile[{0}].extents[{1}].start = {2}",
|
||||
fileId,
|
||||
ext,
|
||||
file.extents[ext].start);
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
"ExtentFile[{0}].extents[{1}].length = {2}",
|
||||
fileId,
|
||||
ext,
|
||||
file.extents[ext].length);
|
||||
"ExtentFile[{0}].extents[{1}].length = {2}",
|
||||
fileId,
|
||||
ext,
|
||||
file.extents[ext].length);
|
||||
}
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME, "ExtentFile[{0}].unknown10 = 0x{1:X4}", fileId, file.unknown10);
|
||||
@@ -321,7 +315,7 @@ public sealed partial class LisaFS
|
||||
// Each entry takes 14 bytes
|
||||
_srecords = new SRecord[sectors.Length / 14];
|
||||
|
||||
for(int s = 0; s < _srecords.Length; s++)
|
||||
for(var s = 0; s < _srecords.Length; s++)
|
||||
{
|
||||
_srecords[s] = new SRecord
|
||||
{
|
||||
|
||||
@@ -220,12 +220,13 @@ public sealed partial class LisaFS
|
||||
if(!_mounted || !_debug) return ErrorNumber.AccessDenied;
|
||||
|
||||
if(fileId is > 4 or <= 0)
|
||||
if(fileId != FILEID_BOOT_SIGNED && fileId != FILEID_LOADER_SIGNED)
|
||||
return ErrorNumber.InvalidArgument;
|
||||
{
|
||||
if(fileId != FILEID_BOOT_SIGNED && fileId != FILEID_LOADER_SIGNED) return ErrorNumber.InvalidArgument;
|
||||
}
|
||||
|
||||
if(_systemFileCache.TryGetValue(fileId, out buf) && !tags) return ErrorNumber.NoError;
|
||||
|
||||
int count = 0;
|
||||
var count = 0;
|
||||
|
||||
if(fileId == FILEID_SRECORD)
|
||||
{
|
||||
@@ -242,7 +243,7 @@ public sealed partial class LisaFS
|
||||
|
||||
errno = _device.ReadSectorsTag(_mddf.mddf_block + _volumePrefix + _mddf.srec_ptr,
|
||||
_mddf.srec_len,
|
||||
SectorTagType.AppleSectorTag,
|
||||
SectorTagType.AppleSonyTag,
|
||||
out buf);
|
||||
|
||||
return errno != ErrorNumber.NoError ? errno : ErrorNumber.NoError;
|
||||
@@ -253,7 +254,7 @@ public sealed partial class LisaFS
|
||||
// Should be enough to check 100 sectors?
|
||||
for(ulong i = 0; i < 100; i++)
|
||||
{
|
||||
errno = _device.ReadSectorTag(i, SectorTagType.AppleSectorTag, out byte[] tag);
|
||||
errno = _device.ReadSectorTag(i, SectorTagType.AppleSonyTag, out byte[] tag);
|
||||
|
||||
if(errno != ErrorNumber.NoError) continue;
|
||||
|
||||
@@ -269,7 +270,7 @@ public sealed partial class LisaFS
|
||||
// Should be enough to check 100 sectors?
|
||||
for(ulong i = 0; i < 100; i++)
|
||||
{
|
||||
errno = _device.ReadSectorTag(i, SectorTagType.AppleSectorTag, out byte[] tag);
|
||||
errno = _device.ReadSectorTag(i, SectorTagType.AppleSonyTag, out byte[] tag);
|
||||
|
||||
if(errno != ErrorNumber.NoError) continue;
|
||||
|
||||
@@ -279,7 +280,7 @@ public sealed partial class LisaFS
|
||||
|
||||
errno = !tags
|
||||
? _device.ReadSector(i, out byte[] sector)
|
||||
: _device.ReadSectorTag(i, SectorTagType.AppleSectorTag, out sector);
|
||||
: _device.ReadSectorTag(i, SectorTagType.AppleSonyTag, out sector);
|
||||
|
||||
if(errno != ErrorNumber.NoError) continue;
|
||||
|
||||
@@ -408,11 +409,11 @@ public sealed partial class LisaFS
|
||||
else
|
||||
sectorSize = (int)_device.Info.SectorSize;
|
||||
|
||||
byte[] temp = new byte[file.length * sectorSize];
|
||||
var temp = new byte[file.length * sectorSize];
|
||||
|
||||
int offset = 0;
|
||||
var offset = 0;
|
||||
|
||||
for(int i = 0; i < file.extents.Length; i++)
|
||||
for(var i = 0; i < file.extents.Length; i++)
|
||||
{
|
||||
ErrorNumber errno = !tags
|
||||
? _device.ReadSectors((ulong)file.extents[i].start +
|
||||
@@ -424,7 +425,7 @@ public sealed partial class LisaFS
|
||||
_mddf.mddf_block +
|
||||
_volumePrefix,
|
||||
(uint)file.extents[i].length,
|
||||
SectorTagType.AppleSectorTag,
|
||||
SectorTagType.AppleSonyTag,
|
||||
out sector);
|
||||
|
||||
if(errno != ErrorNumber.NoError) return errno;
|
||||
@@ -436,8 +437,9 @@ public sealed partial class LisaFS
|
||||
if(!tags)
|
||||
{
|
||||
if(_fileSizeCache.TryGetValue(fileId, out int realSize))
|
||||
if(realSize > temp.Length)
|
||||
AaruLogging.Error(Localization.File_0_gets_truncated, fileId);
|
||||
{
|
||||
if(realSize > temp.Length) AaruLogging.Error(Localization.File_0_gets_truncated, fileId);
|
||||
}
|
||||
|
||||
buf = temp;
|
||||
|
||||
@@ -521,7 +523,7 @@ public sealed partial class LisaFS
|
||||
}
|
||||
}
|
||||
|
||||
for(int lvl = 0; lvl < pathElements.Length; lvl++)
|
||||
for(var lvl = 0; lvl < pathElements.Length; lvl++)
|
||||
{
|
||||
string wantedFilename = pathElements[0].Replace('-', '/');
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ public sealed partial class LisaFS
|
||||
/// <inheritdoc />
|
||||
public bool Identify(IMediaImage imagePlugin, Partition partition)
|
||||
{
|
||||
if(imagePlugin.Info.ReadableSectorTags?.Contains(SectorTagType.AppleSectorTag) != true) return false;
|
||||
if(imagePlugin.Info.ReadableSectorTags?.Contains(SectorTagType.AppleSonyTag) != true) return false;
|
||||
|
||||
// Minimal LisaOS disk is 3.5" single sided double density, 800 sectors
|
||||
if(imagePlugin.Info.Sectors < 800) return false;
|
||||
@@ -55,9 +55,9 @@ public sealed partial class LisaFS
|
||||
int beforeMddf = -1;
|
||||
|
||||
// LisaOS searches sectors until tag tells MDDF resides there, so we'll search 100 sectors
|
||||
for(int i = 0; i < 100; i++)
|
||||
for(var i = 0; i < 100; i++)
|
||||
{
|
||||
ErrorNumber errno = imagePlugin.ReadSectorTag((ulong)i, SectorTagType.AppleSectorTag, out byte[] tag);
|
||||
ErrorNumber errno = imagePlugin.ReadSectorTag((ulong)i, SectorTagType.AppleSonyTag, out byte[] tag);
|
||||
|
||||
if(errno != ErrorNumber.NoError) continue;
|
||||
|
||||
@@ -90,8 +90,8 @@ public sealed partial class LisaFS
|
||||
AaruLogging.Debug(MODULE_NAME, "mddf.vol_size - 1 = {0}", infoMddf.volsize_minus_one);
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
"mddf.vol_size - mddf.mddf_block -1 = {0}",
|
||||
infoMddf.volsize_minus_mddf_minus_one);
|
||||
"mddf.vol_size - mddf.mddf_block -1 = {0}",
|
||||
infoMddf.volsize_minus_mddf_minus_one);
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME, "Disk sector = {0} bytes", imagePlugin.Info.SectorSize);
|
||||
AaruLogging.Debug(MODULE_NAME, "mddf.blocksize = {0} bytes", infoMddf.blocksize);
|
||||
@@ -124,7 +124,7 @@ public sealed partial class LisaFS
|
||||
metadata = new FileSystem();
|
||||
var sb = new StringBuilder();
|
||||
|
||||
if(imagePlugin.Info.ReadableSectorTags?.Contains(SectorTagType.AppleSectorTag) != true) return;
|
||||
if(imagePlugin.Info.ReadableSectorTags?.Contains(SectorTagType.AppleSonyTag) != true) return;
|
||||
|
||||
// Minimal LisaOS disk is 3.5" single sided double density, 800 sectors
|
||||
if(imagePlugin.Info.Sectors < 800) return;
|
||||
@@ -132,9 +132,9 @@ public sealed partial class LisaFS
|
||||
int beforeMddf = -1;
|
||||
|
||||
// LisaOS searches sectors until tag tells MDDF resides there, so we'll search 100 sectors
|
||||
for(int i = 0; i < 100; i++)
|
||||
for(var i = 0; i < 100; i++)
|
||||
{
|
||||
ErrorNumber errno = imagePlugin.ReadSectorTag((ulong)i, SectorTagType.AppleSectorTag, out byte[] tag);
|
||||
ErrorNumber errno = imagePlugin.ReadSectorTag((ulong)i, SectorTagType.AppleSonyTag, out byte[] tag);
|
||||
|
||||
if(errno != ErrorNumber.NoError) continue;
|
||||
|
||||
@@ -150,8 +150,8 @@ public sealed partial class LisaFS
|
||||
|
||||
if(errno != ErrorNumber.NoError) continue;
|
||||
|
||||
var infoMddf = new MDDF();
|
||||
byte[] pString = new byte[33];
|
||||
var infoMddf = new MDDF();
|
||||
var pString = new byte[33];
|
||||
|
||||
infoMddf.fsversion = BigEndianBitConverter.ToUInt16(sector, 0x00);
|
||||
infoMddf.volid = BigEndianBitConverter.ToUInt64(sector, 0x02);
|
||||
@@ -166,7 +166,7 @@ public sealed partial class LisaFS
|
||||
infoMddf.unknown2 = sector[0x4F];
|
||||
infoMddf.machine_id = BigEndianBitConverter.ToUInt32(sector, 0x50);
|
||||
infoMddf.master_copy_id = BigEndianBitConverter.ToUInt32(sector, 0x54);
|
||||
uint lisaTime = BigEndianBitConverter.ToUInt32(sector, 0x58);
|
||||
var lisaTime = BigEndianBitConverter.ToUInt32(sector, 0x58);
|
||||
infoMddf.dtvc = DateHandlers.LisaToDateTime(lisaTime);
|
||||
lisaTime = BigEndianBitConverter.ToUInt32(sector, 0x5C);
|
||||
infoMddf.dtcc = DateHandlers.LisaToDateTime(lisaTime);
|
||||
@@ -272,9 +272,9 @@ public sealed partial class LisaFS
|
||||
AaruLogging.Debug(MODULE_NAME, "mddf.unknown38 = 0x{0:X8} ({0})", infoMddf.unknown38);
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
"mddf.unknown_timestamp = 0x{0:X8} ({0}, {1})",
|
||||
infoMddf.unknown_timestamp,
|
||||
DateHandlers.LisaToDateTime(infoMddf.unknown_timestamp));
|
||||
"mddf.unknown_timestamp = 0x{0:X8} ({0}, {1})",
|
||||
infoMddf.unknown_timestamp,
|
||||
DateHandlers.LisaToDateTime(infoMddf.unknown_timestamp));
|
||||
|
||||
if(infoMddf.mddf_block != i - beforeMddf) return;
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ public sealed partial class LisaFS
|
||||
// Lisa OS is unable to work on disks without tags.
|
||||
// This code is designed like that.
|
||||
// However with some effort the code may be modified to ignore them.
|
||||
if(_device.Info.ReadableSectorTags?.Contains(SectorTagType.AppleSectorTag) != true)
|
||||
if(_device.Info.ReadableSectorTags?.Contains(SectorTagType.AppleSonyTag) != true)
|
||||
{
|
||||
AaruLogging.Debug(MODULE_NAME, Localization.Underlying_device_does_not_support_Lisa_tags);
|
||||
|
||||
@@ -78,7 +78,7 @@ public sealed partial class LisaFS
|
||||
// LisaOS searches sectors until tag tells MDDF resides there, so we'll search 100 sectors
|
||||
for(ulong i = 0; i < 100; i++)
|
||||
{
|
||||
ErrorNumber errno = _device.ReadSectorTag(i, SectorTagType.AppleSectorTag, out byte[] tag);
|
||||
ErrorNumber errno = _device.ReadSectorTag(i, SectorTagType.AppleSonyTag, out byte[] tag);
|
||||
|
||||
if(errno != ErrorNumber.NoError) continue;
|
||||
|
||||
@@ -97,7 +97,7 @@ public sealed partial class LisaFS
|
||||
if(errno != ErrorNumber.NoError) return errno;
|
||||
|
||||
_mddf = new MDDF();
|
||||
byte[] pString = new byte[33];
|
||||
var pString = new byte[33];
|
||||
|
||||
_mddf.fsversion = BigEndianBitConverter.ToUInt16(sector, 0x00);
|
||||
_mddf.volid = BigEndianBitConverter.ToUInt64(sector, 0x02);
|
||||
@@ -112,7 +112,7 @@ public sealed partial class LisaFS
|
||||
_mddf.unknown2 = sector[0x4F];
|
||||
_mddf.machine_id = BigEndianBitConverter.ToUInt32(sector, 0x50);
|
||||
_mddf.master_copy_id = BigEndianBitConverter.ToUInt32(sector, 0x54);
|
||||
uint lisaTime = BigEndianBitConverter.ToUInt32(sector, 0x58);
|
||||
var lisaTime = BigEndianBitConverter.ToUInt32(sector, 0x58);
|
||||
_mddf.dtvc = DateHandlers.LisaToDateTime(lisaTime);
|
||||
lisaTime = BigEndianBitConverter.ToUInt32(sector, 0x5C);
|
||||
_mddf.dtcc = DateHandlers.LisaToDateTime(lisaTime);
|
||||
@@ -209,8 +209,7 @@ public sealed partial class LisaFS
|
||||
|
||||
break;
|
||||
default:
|
||||
AaruLogging.Error(Localization.Cannot_mount_LisaFS_version_0,
|
||||
_mddf.fsversion.ToString());
|
||||
AaruLogging.Error(Localization.Cannot_mount_LisaFS_version_0, _mddf.fsversion.ToString());
|
||||
|
||||
return ErrorNumber.NotSupported;
|
||||
}
|
||||
@@ -253,9 +252,7 @@ public sealed partial class LisaFS
|
||||
|
||||
if(error != ErrorNumber.NoError)
|
||||
{
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
Localization.Cannot_read_Catalog_File_error_0,
|
||||
error.ToString());
|
||||
AaruLogging.Debug(MODULE_NAME, Localization.Cannot_read_Catalog_File_error_0, error.ToString());
|
||||
|
||||
_mounted = false;
|
||||
|
||||
|
||||
@@ -329,7 +329,7 @@ public sealed partial class ImageConvertViewModel : ViewModelBase
|
||||
[SuppressMessage("ReSharper", "AsyncVoidMethod")]
|
||||
async void DoWork(object plugin)
|
||||
{
|
||||
bool warning = false;
|
||||
var warning = false;
|
||||
|
||||
if(plugin is not IWritableImage outputFormat)
|
||||
{
|
||||
@@ -382,7 +382,9 @@ public sealed partial class ImageConvertViewModel : ViewModelBase
|
||||
{
|
||||
switch(tag)
|
||||
{
|
||||
case SectorTagType.AppleSectorTag:
|
||||
case SectorTagType.AppleSonyTag:
|
||||
case SectorTagType.AppleProfileTag:
|
||||
case SectorTagType.PriamDataTowerTag:
|
||||
case SectorTagType.CdSectorSync:
|
||||
case SectorTagType.CdSectorHeader:
|
||||
case SectorTagType.CdSectorSubHeader:
|
||||
@@ -407,7 +409,9 @@ public sealed partial class ImageConvertViewModel : ViewModelBase
|
||||
{
|
||||
switch(tag)
|
||||
{
|
||||
case SectorTagType.AppleSectorTag:
|
||||
case SectorTagType.AppleSonyTag:
|
||||
case SectorTagType.AppleProfileTag:
|
||||
case SectorTagType.PriamDataTowerTag:
|
||||
case SectorTagType.CdSectorSync:
|
||||
case SectorTagType.CdSectorHeader:
|
||||
case SectorTagType.CdSectorSubHeader:
|
||||
@@ -908,7 +912,9 @@ public sealed partial class ImageConvertViewModel : ViewModelBase
|
||||
{
|
||||
switch(tag)
|
||||
{
|
||||
case SectorTagType.AppleSectorTag:
|
||||
case SectorTagType.AppleSonyTag:
|
||||
case SectorTagType.AppleProfileTag:
|
||||
case SectorTagType.PriamDataTowerTag:
|
||||
case SectorTagType.CdSectorSync:
|
||||
case SectorTagType.CdSectorHeader:
|
||||
case SectorTagType.CdSectorSubHeader:
|
||||
@@ -1328,7 +1334,9 @@ public sealed partial class ImageConvertViewModel : ViewModelBase
|
||||
{
|
||||
switch(tag)
|
||||
{
|
||||
case SectorTagType.AppleSectorTag:
|
||||
case SectorTagType.AppleSonyTag:
|
||||
case SectorTagType.AppleProfileTag:
|
||||
case SectorTagType.PriamDataTowerTag:
|
||||
case SectorTagType.CdSectorSync:
|
||||
case SectorTagType.CdSectorHeader:
|
||||
case SectorTagType.CdSectorSubHeader:
|
||||
|
||||
@@ -74,7 +74,7 @@ public sealed partial class Blu
|
||||
/// <inheritdoc />
|
||||
public IEnumerable<SectorTagType> SupportedSectorTags => new[]
|
||||
{
|
||||
SectorTagType.AppleSectorTag
|
||||
SectorTagType.AppleSonyTag
|
||||
};
|
||||
|
||||
/// <inheritdoc />
|
||||
|
||||
@@ -57,7 +57,7 @@ public sealed partial class Blu
|
||||
DeviceName = new byte[0x0D]
|
||||
};
|
||||
|
||||
byte[] header = new byte[0x17];
|
||||
var header = new byte[0x17];
|
||||
stream.EnsureRead(header, 0, 0x17);
|
||||
Array.Copy(header, 0, _imageHeader.DeviceName, 0, 0x0D);
|
||||
_imageHeader.DeviceType = BigEndianBitConverter.ToUInt32(header, 0x0C) & 0x00FFFFFF;
|
||||
@@ -65,17 +65,16 @@ public sealed partial class Blu
|
||||
_imageHeader.BytesPerBlock = BigEndianBitConverter.ToUInt16(header, 0x15);
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
"ImageHeader.deviceName = \"{0}\"",
|
||||
StringHandlers.CToString(_imageHeader.DeviceName));
|
||||
"ImageHeader.deviceName = \"{0}\"",
|
||||
StringHandlers.CToString(_imageHeader.DeviceName));
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME, "ImageHeader.deviceType = {0}", _imageHeader.DeviceType);
|
||||
AaruLogging.Debug(MODULE_NAME, "ImageHeader.deviceBlock = {0}", _imageHeader.DeviceBlocks);
|
||||
AaruLogging.Debug(MODULE_NAME, "ImageHeader.bytesPerBlock = {0}", _imageHeader.BytesPerBlock);
|
||||
|
||||
for(int i = 0; i < 0xD; i++)
|
||||
{
|
||||
if(_imageHeader.DeviceName[i] < 0x20) return ErrorNumber.InvalidArgument;
|
||||
}
|
||||
for(var i = 0; i < 0xD; i++)
|
||||
if(_imageHeader.DeviceName[i] < 0x20)
|
||||
return ErrorNumber.InvalidArgument;
|
||||
|
||||
if((_imageHeader.BytesPerBlock & 0xFE00) != 0x200) return ErrorNumber.InvalidArgument;
|
||||
|
||||
@@ -88,7 +87,7 @@ public sealed partial class Blu
|
||||
_imageInfo.Sectors = _imageHeader.DeviceBlocks;
|
||||
_imageInfo.ImageSize = _imageHeader.DeviceBlocks * _imageHeader.BytesPerBlock;
|
||||
_bptag = _imageHeader.BytesPerBlock - 0x200;
|
||||
byte[] hdrTag = new byte[_bptag];
|
||||
var hdrTag = new byte[_bptag];
|
||||
Array.Copy(header, 0x200, hdrTag, 0, _bptag);
|
||||
|
||||
switch(StringHandlers.CToString(_imageHeader.DeviceName))
|
||||
@@ -147,7 +146,7 @@ public sealed partial class Blu
|
||||
|
||||
_imageInfo.MetadataMediaType = MetadataMediaType.BlockMedia;
|
||||
|
||||
if(_bptag > 0) _imageInfo.ReadableSectorTags.Add(SectorTagType.AppleSectorTag);
|
||||
if(_bptag > 0) _imageInfo.ReadableSectorTags.Add(SectorTagType.AppleSonyTag);
|
||||
|
||||
AaruLogging.Verbose(Localization.BLU_image_contains_a_disk_of_type_0, _imageInfo.MediaType);
|
||||
|
||||
@@ -177,9 +176,9 @@ public sealed partial class Blu
|
||||
Stream stream = _bluImageFilter.GetDataForkStream();
|
||||
stream.Seek((long)((sectorAddress + 1) * _imageHeader.BytesPerBlock), SeekOrigin.Begin);
|
||||
|
||||
for(int i = 0; i < length; i++)
|
||||
for(var i = 0; i < length; i++)
|
||||
{
|
||||
byte[] sector = new byte[read];
|
||||
var sector = new byte[read];
|
||||
stream.EnsureRead(sector, 0, read);
|
||||
ms.Write(sector, 0, read);
|
||||
stream.Seek(skip, SeekOrigin.Current);
|
||||
@@ -195,7 +194,7 @@ public sealed partial class Blu
|
||||
{
|
||||
buffer = null;
|
||||
|
||||
if(tag != SectorTagType.AppleSectorTag) return ErrorNumber.NotSupported;
|
||||
if(tag != SectorTagType.AppleSonyTag) return ErrorNumber.NotSupported;
|
||||
|
||||
if(_bptag == 0) return ErrorNumber.NoData;
|
||||
|
||||
@@ -210,10 +209,10 @@ public sealed partial class Blu
|
||||
Stream stream = _bluImageFilter.GetDataForkStream();
|
||||
stream.Seek((long)((sectorAddress + 1) * _imageHeader.BytesPerBlock), SeekOrigin.Begin);
|
||||
|
||||
for(int i = 0; i < length; i++)
|
||||
for(var i = 0; i < length; i++)
|
||||
{
|
||||
stream.Seek(seek, SeekOrigin.Current);
|
||||
byte[] sector = new byte[read];
|
||||
var sector = new byte[read];
|
||||
stream.EnsureRead(sector, 0, read);
|
||||
ms.Write(sector, 0, read);
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ public sealed partial class Dart
|
||||
if(stream.Length < 84) return ErrorNumber.InvalidArgument;
|
||||
|
||||
stream.Seek(0, SeekOrigin.Begin);
|
||||
byte[] headerB = new byte[Marshal.SizeOf<Header>()];
|
||||
var headerB = new byte[Marshal.SizeOf<Header>()];
|
||||
|
||||
stream.EnsureRead(headerB, 0, Marshal.SizeOf<Header>());
|
||||
Header header = Marshal.ByteArrayToStructureBigEndian<Header>(headerB);
|
||||
@@ -103,12 +103,12 @@ public sealed partial class Dart
|
||||
|
||||
if(stream.Length > expectedMaxSize) return ErrorNumber.InvalidArgument;
|
||||
|
||||
short[] bLength =
|
||||
var bLength =
|
||||
new short[header.srcType is DISK_MAC_HD or DISK_DOS_HD ? BLOCK_ARRAY_LEN_HIGH : BLOCK_ARRAY_LEN_LOW];
|
||||
|
||||
for(int i = 0; i < bLength.Length; i++)
|
||||
for(var i = 0; i < bLength.Length; i++)
|
||||
{
|
||||
byte[] tmpShort = new byte[2];
|
||||
var tmpShort = new byte[2];
|
||||
stream.EnsureRead(tmpShort, 0, 2);
|
||||
bLength[i] = BigEndianBitConverter.ToInt16(tmpShort, 0);
|
||||
}
|
||||
@@ -120,7 +120,7 @@ public sealed partial class Dart
|
||||
{
|
||||
if(l == 0) continue;
|
||||
|
||||
byte[] buffer = new byte[BUFFER_SIZE];
|
||||
var buffer = new byte[BUFFER_SIZE];
|
||||
|
||||
if(l == -1)
|
||||
{
|
||||
@@ -159,7 +159,7 @@ public sealed partial class Dart
|
||||
|
||||
if(header.srcType is DISK_LISA or DISK_MAC or DISK_APPLE2)
|
||||
{
|
||||
_imageInfo.ReadableSectorTags.Add(SectorTagType.AppleSectorTag);
|
||||
_imageInfo.ReadableSectorTags.Add(SectorTagType.AppleSonyTag);
|
||||
_tagCache = tagMs.ToArray();
|
||||
}
|
||||
|
||||
@@ -183,8 +183,8 @@ public sealed partial class Dart
|
||||
string release = null;
|
||||
string pre = null;
|
||||
|
||||
string major = $"{version.MajorVersion}";
|
||||
string minor = $".{version.MinorVersion / 10}";
|
||||
var major = $"{version.MajorVersion}";
|
||||
var minor = $".{version.MinorVersion / 10}";
|
||||
|
||||
if(version.MinorVersion % 10 > 0) release = $".{version.MinorVersion % 10}";
|
||||
|
||||
@@ -330,7 +330,7 @@ public sealed partial class Dart
|
||||
{
|
||||
buffer = null;
|
||||
|
||||
if(tag != SectorTagType.AppleSectorTag) return ErrorNumber.NotSupported;
|
||||
if(tag != SectorTagType.AppleSonyTag) return ErrorNumber.NotSupported;
|
||||
|
||||
if(_tagCache == null || _tagCache.Length == 0) return ErrorNumber.NoData;
|
||||
|
||||
@@ -362,7 +362,7 @@ public sealed partial class Dart
|
||||
|
||||
if(errno != ErrorNumber.NoError) return errno;
|
||||
|
||||
errno = ReadSectorsTag(sectorAddress, length, SectorTagType.AppleSectorTag, out byte[] tags);
|
||||
errno = ReadSectorsTag(sectorAddress, length, SectorTagType.AppleSonyTag, out byte[] tags);
|
||||
|
||||
if(errno != ErrorNumber.NoError) return errno;
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@ public sealed partial class DiskCopy42
|
||||
/// <inheritdoc />
|
||||
public IEnumerable<SectorTagType> SupportedSectorTags => new[]
|
||||
{
|
||||
SectorTagType.AppleSectorTag
|
||||
SectorTagType.AppleSonyTag
|
||||
};
|
||||
|
||||
/// <inheritdoc />
|
||||
|
||||
@@ -54,8 +54,8 @@ public sealed partial class DiskCopy42
|
||||
{
|
||||
Stream stream = imageFilter.GetDataForkStream();
|
||||
stream.Seek(0, SeekOrigin.Begin);
|
||||
byte[] buffer = new byte[0x58];
|
||||
byte[] pString = new byte[64];
|
||||
var buffer = new byte[0x58];
|
||||
var pString = new byte[64];
|
||||
stream.EnsureRead(buffer, 0, 0x58);
|
||||
IsWriting = false;
|
||||
|
||||
@@ -154,7 +154,7 @@ public sealed partial class DiskCopy42
|
||||
return ErrorNumber.NotSupported;
|
||||
}
|
||||
|
||||
imageInfo.ReadableSectorTags.Add(SectorTagType.AppleSectorTag);
|
||||
imageInfo.ReadableSectorTags.Add(SectorTagType.AppleSonyTag);
|
||||
}
|
||||
|
||||
imageInfo.ImageSize = imageInfo.Sectors * imageInfo.SectorSize + imageInfo.Sectors * bptag;
|
||||
@@ -185,8 +185,8 @@ public sealed partial class DiskCopy42
|
||||
|
||||
if(imageInfo.MediaType == MediaType.AppleFileWare)
|
||||
{
|
||||
byte[] data = new byte[header.DataSize];
|
||||
byte[] tags = new byte[header.TagSize];
|
||||
var data = new byte[header.DataSize];
|
||||
var tags = new byte[header.TagSize];
|
||||
|
||||
twiggyCache = new byte[header.DataSize];
|
||||
twiggyCacheTags = new byte[header.TagSize];
|
||||
@@ -200,8 +200,8 @@ public sealed partial class DiskCopy42
|
||||
tagStream.Seek(tagOffset, SeekOrigin.Begin);
|
||||
tagStream.EnsureRead(tags, 0, (int)header.TagSize);
|
||||
|
||||
ushort mfsMagic = BigEndianBitConverter.ToUInt16(data, data.Length / 2 + 0x400);
|
||||
ushort mfsAllBlocks = BigEndianBitConverter.ToUInt16(data, data.Length / 2 + 0x412);
|
||||
var mfsMagic = BigEndianBitConverter.ToUInt16(data, data.Length / 2 + 0x400);
|
||||
var mfsAllBlocks = BigEndianBitConverter.ToUInt16(data, data.Length / 2 + 0x412);
|
||||
|
||||
// Detect a Macintosh Twiggy
|
||||
if(mfsMagic == 0xD2D7 && mfsAllBlocks == 422)
|
||||
@@ -219,10 +219,10 @@ public sealed partial class DiskCopy42
|
||||
Array.Copy(data, 0, twiggyCache, 0, header.DataSize / 2);
|
||||
Array.Copy(tags, 0, twiggyCacheTags, 0, header.TagSize / 2);
|
||||
|
||||
int copiedSectors = 0;
|
||||
int sectorsToCopy = 0;
|
||||
var copiedSectors = 0;
|
||||
var sectorsToCopy = 0;
|
||||
|
||||
for(int i = 0; i < 46; i++)
|
||||
for(var i = 0; i < 46; i++)
|
||||
{
|
||||
sectorsToCopy = i switch
|
||||
{
|
||||
@@ -272,8 +272,8 @@ public sealed partial class DiskCopy42
|
||||
string release = null;
|
||||
string pre = null;
|
||||
|
||||
string major = $"{version.MajorVersion}";
|
||||
string minor = $".{version.MinorVersion / 10}";
|
||||
var major = $"{version.MajorVersion}";
|
||||
var minor = $".{version.MinorVersion / 10}";
|
||||
|
||||
if(version.MinorVersion % 10 > 0) release = $".{version.MinorVersion % 10}";
|
||||
|
||||
@@ -437,7 +437,7 @@ public sealed partial class DiskCopy42
|
||||
{
|
||||
buffer = null;
|
||||
|
||||
if(tag != SectorTagType.AppleSectorTag) return ErrorNumber.NotSupported;
|
||||
if(tag != SectorTagType.AppleSonyTag) return ErrorNumber.NotSupported;
|
||||
|
||||
if(header.TagSize == 0) return ErrorNumber.NoData;
|
||||
|
||||
@@ -476,7 +476,7 @@ public sealed partial class DiskCopy42
|
||||
|
||||
if(errno != ErrorNumber.NoError) return errno;
|
||||
|
||||
errno = ReadSectorsTag(sectorAddress, length, SectorTagType.AppleSectorTag, out byte[] tags);
|
||||
errno = ReadSectorsTag(sectorAddress, length, SectorTagType.AppleSonyTag, out byte[] tags);
|
||||
|
||||
if(errno != ErrorNumber.NoError) return errno;
|
||||
|
||||
|
||||
@@ -148,8 +148,8 @@ public abstract class OpticalImageConvertIssueTest
|
||||
else
|
||||
sectorsToDo = (uint)(trackSectors - doneSectors);
|
||||
|
||||
bool useNotLong = false;
|
||||
bool result = false;
|
||||
var useNotLong = false;
|
||||
var result = false;
|
||||
|
||||
if(UseLong)
|
||||
{
|
||||
@@ -200,7 +200,7 @@ public abstract class OpticalImageConvertIssueTest
|
||||
Dictionary<byte, int> smallestPregapLbaPerTrack = new();
|
||||
var tracks = new Track[inputOptical.Tracks.Count];
|
||||
|
||||
for(int i = 0; i < tracks.Length; i++)
|
||||
for(var i = 0; i < tracks.Length; i++)
|
||||
{
|
||||
tracks[i] = new Track
|
||||
{
|
||||
@@ -258,7 +258,9 @@ public abstract class OpticalImageConvertIssueTest
|
||||
{
|
||||
switch(tag)
|
||||
{
|
||||
case SectorTagType.AppleSectorTag:
|
||||
case SectorTagType.AppleSonyTag:
|
||||
case SectorTagType.AppleProfileTag:
|
||||
case SectorTagType.PriamDataTowerTag:
|
||||
case SectorTagType.CdSectorSync:
|
||||
case SectorTagType.CdSectorHeader:
|
||||
case SectorTagType.CdSectorSubHeader:
|
||||
|
||||
@@ -103,10 +103,10 @@ public abstract class WritableOpticalMediaImageTest : BaseWritableMediaImageTest
|
||||
.BeEquivalentTo(test.Tracks.Select(s => s.Pregap),
|
||||
string.Format(Localization.Track_pregap_0, testFile));
|
||||
|
||||
int trackNo = 0;
|
||||
var trackNo = 0;
|
||||
|
||||
byte?[] flags = new byte?[image.Tracks.Count];
|
||||
ulong latestEndSector = 0;
|
||||
var flags = new byte?[image.Tracks.Count];
|
||||
ulong latestEndSector = 0;
|
||||
|
||||
foreach(Track currentTrack in image.Tracks)
|
||||
{
|
||||
@@ -240,8 +240,8 @@ public abstract class WritableOpticalMediaImageTest : BaseWritableMediaImageTest
|
||||
else
|
||||
sectorsToDo = (uint)(trackSectors - doneSectors);
|
||||
|
||||
bool useNotLong = false;
|
||||
bool result = false;
|
||||
var useNotLong = false;
|
||||
var result = false;
|
||||
|
||||
if(useLong)
|
||||
{
|
||||
@@ -298,7 +298,7 @@ public abstract class WritableOpticalMediaImageTest : BaseWritableMediaImageTest
|
||||
Dictionary<byte, int> smallestPregapLbaPerTrack = new();
|
||||
var tracks = new Track[inputFormat.Tracks.Count];
|
||||
|
||||
for(int i = 0; i < tracks.Length; i++)
|
||||
for(var i = 0; i < tracks.Length; i++)
|
||||
{
|
||||
tracks[i] = new Track
|
||||
{
|
||||
@@ -359,7 +359,9 @@ public abstract class WritableOpticalMediaImageTest : BaseWritableMediaImageTest
|
||||
{
|
||||
switch(tag)
|
||||
{
|
||||
case SectorTagType.AppleSectorTag:
|
||||
case SectorTagType.AppleSonyTag:
|
||||
case SectorTagType.AppleProfileTag:
|
||||
case SectorTagType.PriamDataTowerTag:
|
||||
case SectorTagType.CdSectorSync:
|
||||
case SectorTagType.CdSectorHeader:
|
||||
case SectorTagType.CdSectorSubHeader:
|
||||
@@ -632,10 +634,10 @@ public abstract class WritableOpticalMediaImageTest : BaseWritableMediaImageTest
|
||||
.BeEquivalentTo(test.Tracks.Select(s => s.Pregap),
|
||||
string.Format(Localization.Track_pregap_output_0, testFile));
|
||||
|
||||
int trackNo = 0;
|
||||
var trackNo = 0;
|
||||
|
||||
byte?[] flags = new byte?[image.Tracks.Count];
|
||||
ulong latestEndSector = 0;
|
||||
var flags = new byte?[image.Tracks.Count];
|
||||
ulong latestEndSector = 0;
|
||||
|
||||
foreach(Track currentTrack in image.Tracks)
|
||||
{
|
||||
|
||||
0
Aaru/Aaru.icns
Normal file → Executable file
0
Aaru/Aaru.icns
Normal file → Executable file
@@ -496,7 +496,7 @@ sealed class ConvertImageCommand : Command<ConvertImageCommand.Settings>
|
||||
return (int)ErrorNumber.UnsupportedMedia;
|
||||
}
|
||||
|
||||
bool ret = false;
|
||||
var ret = false;
|
||||
|
||||
if(inputTape?.IsTape == true && outputTape != null)
|
||||
{
|
||||
@@ -544,7 +544,7 @@ sealed class ConvertImageCommand : Command<ConvertImageCommand.Settings>
|
||||
AaruLogging.ErrorWriteLine("Output format does not support sessions, this will end in a loss of data, continuing...");*/
|
||||
}
|
||||
|
||||
bool created = false;
|
||||
var created = false;
|
||||
|
||||
Core.Spectre.ProgressSingleSpinner(ctx =>
|
||||
{
|
||||
@@ -700,8 +700,8 @@ sealed class ConvertImageCommand : Command<ConvertImageCommand.Settings>
|
||||
doneSectors + sectorsToDo + track.StartSector,
|
||||
track.Sequence);
|
||||
|
||||
bool useNotLong = false;
|
||||
bool result = false;
|
||||
var useNotLong = false;
|
||||
var result = false;
|
||||
|
||||
if(useLong)
|
||||
{
|
||||
@@ -969,7 +969,7 @@ sealed class ConvertImageCommand : Command<ConvertImageCommand.Settings>
|
||||
Dictionary<byte, int> smallestPregapLbaPerTrack = new();
|
||||
var tracks = new Track[inputOptical.Tracks.Count];
|
||||
|
||||
for(int i = 0; i < tracks.Length; i++)
|
||||
for(var i = 0; i < tracks.Length; i++)
|
||||
{
|
||||
tracks[i] = new Track
|
||||
{
|
||||
@@ -1028,7 +1028,9 @@ sealed class ConvertImageCommand : Command<ConvertImageCommand.Settings>
|
||||
{
|
||||
switch(tag)
|
||||
{
|
||||
case SectorTagType.AppleSectorTag:
|
||||
case SectorTagType.AppleSonyTag:
|
||||
case SectorTagType.AppleProfileTag:
|
||||
case SectorTagType.PriamDataTowerTag:
|
||||
case SectorTagType.CdSectorSync:
|
||||
case SectorTagType.CdSectorHeader:
|
||||
case SectorTagType.CdSectorSubHeader:
|
||||
@@ -1524,7 +1526,9 @@ sealed class ConvertImageCommand : Command<ConvertImageCommand.Settings>
|
||||
{
|
||||
switch(tag)
|
||||
{
|
||||
case SectorTagType.AppleSectorTag:
|
||||
case SectorTagType.AppleSonyTag:
|
||||
case SectorTagType.AppleProfileTag:
|
||||
case SectorTagType.PriamDataTowerTag:
|
||||
case SectorTagType.CdSectorSync:
|
||||
case SectorTagType.CdSectorHeader:
|
||||
case SectorTagType.CdSectorSubHeader:
|
||||
@@ -1728,7 +1732,7 @@ sealed class ConvertImageCommand : Command<ConvertImageCommand.Settings>
|
||||
if(ret) AaruLogging.WriteLine(UI.Written_Aaru_Metadata_to_output_image);
|
||||
}
|
||||
|
||||
bool closed = false;
|
||||
var closed = false;
|
||||
|
||||
Core.Spectre.ProgressSingleSpinner(ctx =>
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user