mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
* Packages.mdproj:
* FileSystemIDandChk.sln: * FileSystemIDandChk/FileSystemIDandChk.csproj: Added version and description to solution. * FileSystemIDandChk/Plugins/Plugin.cs: * FileSystemIDandChk/PartPlugins/PartPlugin.cs: * FileSystemIDandChk/ImagePlugins/ImagePlugin.cs: Converted comments to inline XML documentation. * FileSystemIDandChk/ImagePlugins/TeleDisk.cs: Removed unneeded "this" statements. Removed unreachable code. Removed spurious initialization. * FileSystemIDandChk/README.md: Updated readme to show TeleDisk support and new version.
This commit is contained in:
@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FileSystemIDandChk", "FileSystemIDandChk\FileSystemIDandChk.csproj", "{7A4B05BE-73C9-4F34-87FE-E80CCF1F732D}"
|
||||
EndProject
|
||||
Project("{9344bdbb-3e7f-41fc-a0dd-8665d75ee146}") = "Packages", "Packages.mdproj", "{8996EF59-09B9-4920-A3DE-2F8EA2EBBCFF}"
|
||||
Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "Packages", "Packages.mdproj", "{8996EF59-09B9-4920-A3DE-2F8EA2EBBCFF}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
@@ -20,5 +20,7 @@ Global
|
||||
EndGlobalSection
|
||||
GlobalSection(MonoDevelopProperties) = preSolution
|
||||
StartupItem = FileSystemIDandChk\FileSystemIDandChk.csproj
|
||||
description = Filesystem identified and checker.
|
||||
version = 1.10
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
<RootNamespace>FileSystemIDandChk</RootNamespace>
|
||||
<AssemblyName>FileSystemIDandChk</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<ReleaseVersion>1.10</ReleaseVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||
<DebugSymbols>True</DebugSymbols>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -456,7 +456,6 @@ namespace FileSystemIDandChk.ImagePlugins
|
||||
{
|
||||
if (spt != 0)
|
||||
throw new FeatureUnsupportedImageException("Variable number of sectors per track. This kind of image is not yet supported");
|
||||
else
|
||||
spt = TDTrack.sectors;
|
||||
}
|
||||
|
||||
@@ -575,17 +574,17 @@ namespace FileSystemIDandChk.ImagePlugins
|
||||
|
||||
public override UInt64 GetImageSize()
|
||||
{
|
||||
return this.imageSizeWithoutHeaders;
|
||||
return imageSizeWithoutHeaders;
|
||||
}
|
||||
|
||||
public override UInt64 GetSectors()
|
||||
{
|
||||
return (ulong)this.sectorsData.Count;
|
||||
return (ulong)sectorsData.Count;
|
||||
}
|
||||
|
||||
public override UInt32 GetSectorSize()
|
||||
{
|
||||
return this.biggestSectorSize;
|
||||
return biggestSectorSize;
|
||||
}
|
||||
|
||||
public override byte[] ReadSector(UInt64 sectorAddress)
|
||||
@@ -601,12 +600,12 @@ namespace FileSystemIDandChk.ImagePlugins
|
||||
|
||||
for (ulong i = sectorAddress; i < (sectorAddress + length); i++)
|
||||
{
|
||||
if (!this.sectorsData.ContainsKey((uint)i))
|
||||
if (!sectorsData.ContainsKey((uint)i))
|
||||
throw new ImageNotSupportedException(String.Format("Requested sector {0} not found", i));
|
||||
|
||||
byte[] sector;
|
||||
|
||||
if(!this.sectorsData.TryGetValue((uint)i, out sector))
|
||||
if(!sectorsData.TryGetValue((uint)i, out sector))
|
||||
throw new ImageNotSupportedException(String.Format("Error reading sector {0}", i));
|
||||
|
||||
if (first)
|
||||
@@ -643,7 +642,7 @@ namespace FileSystemIDandChk.ImagePlugins
|
||||
|
||||
public override string GetImageVersion()
|
||||
{
|
||||
return this.telediskVersion;
|
||||
return telediskVersion;
|
||||
}
|
||||
|
||||
public override string GetImageApplication()
|
||||
@@ -653,38 +652,38 @@ namespace FileSystemIDandChk.ImagePlugins
|
||||
|
||||
public override string GetImageApplicationVersion()
|
||||
{
|
||||
return this.telediskVersion;
|
||||
return telediskVersion;
|
||||
}
|
||||
|
||||
public override DateTime GetImageCreationTime()
|
||||
{
|
||||
return this.creationDate;
|
||||
return creationDate;
|
||||
}
|
||||
|
||||
public override DateTime GetImageLastModificationTime()
|
||||
{
|
||||
return this.modificationDate;
|
||||
return modificationDate;
|
||||
}
|
||||
|
||||
public override string GetImageName()
|
||||
{
|
||||
return this.imageName;
|
||||
return imageName;
|
||||
}
|
||||
|
||||
public override DiskType GetDiskType()
|
||||
{
|
||||
switch (this.header.driveType)
|
||||
switch (header.driveType)
|
||||
{
|
||||
case DriveType525DD:
|
||||
case DriveType525HD_DDDisk:
|
||||
case DriveType525HD:
|
||||
{
|
||||
switch (this.totalDiskSize)
|
||||
switch (totalDiskSize)
|
||||
{
|
||||
case 163840:
|
||||
{
|
||||
// Acorn disk uses 256 bytes/sector
|
||||
if(this.biggestSectorSize == 256)
|
||||
if(biggestSectorSize == 256)
|
||||
return DiskType.ACORN_525_SS_DD_40;
|
||||
else // DOS disks use 512 bytes/sector
|
||||
return DiskType.DOS_525_SS_DD_8;
|
||||
@@ -692,7 +691,7 @@ namespace FileSystemIDandChk.ImagePlugins
|
||||
case 184320:
|
||||
{
|
||||
// Atari disk uses 256 bytes/sector
|
||||
if(this.biggestSectorSize == 256)
|
||||
if(biggestSectorSize == 256)
|
||||
return DiskType.ATARI_525_DD;
|
||||
else // DOS disks use 512 bytes/sector
|
||||
return DiskType.DOS_525_SS_DD_9;
|
||||
@@ -700,7 +699,7 @@ namespace FileSystemIDandChk.ImagePlugins
|
||||
case 327680:
|
||||
{
|
||||
// Acorn disk uses 256 bytes/sector
|
||||
if(this.biggestSectorSize == 256)
|
||||
if(biggestSectorSize == 256)
|
||||
return DiskType.ACORN_525_SS_DD_80;
|
||||
else // DOS disks use 512 bytes/sector
|
||||
return DiskType.DOS_525_DS_DD_8;
|
||||
@@ -742,17 +741,16 @@ namespace FileSystemIDandChk.ImagePlugins
|
||||
default:
|
||||
{
|
||||
if (MainClass.isDebug)
|
||||
Console.WriteLine("DEBUG (TeleDisk plugin): Unknown 5,25\" disk with {0} bytes", this.totalDiskSize);
|
||||
Console.WriteLine("DEBUG (TeleDisk plugin): Unknown 5,25\" disk with {0} bytes", totalDiskSize);
|
||||
return DiskType.Unknown;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case DriveType35DD:
|
||||
case DriveType35ED:
|
||||
case DriveType35HD:
|
||||
{
|
||||
switch (this.totalDiskSize)
|
||||
switch (totalDiskSize)
|
||||
{
|
||||
case 327680:
|
||||
return DiskType.DOS_35_SS_DD_8;
|
||||
@@ -788,14 +786,14 @@ namespace FileSystemIDandChk.ImagePlugins
|
||||
default:
|
||||
{
|
||||
if (MainClass.isDebug)
|
||||
Console.WriteLine("DEBUG (TeleDisk plugin): Unknown 3,5\" disk with {0} bytes", this.totalDiskSize);
|
||||
Console.WriteLine("DEBUG (TeleDisk plugin): Unknown 3,5\" disk with {0} bytes", totalDiskSize);
|
||||
return DiskType.Unknown;
|
||||
}
|
||||
}
|
||||
}
|
||||
case DriveType8inch:
|
||||
{
|
||||
switch (this.totalDiskSize)
|
||||
switch (totalDiskSize)
|
||||
{
|
||||
case 81664:
|
||||
return DiskType.IBM23FD;
|
||||
@@ -821,7 +819,7 @@ namespace FileSystemIDandChk.ImagePlugins
|
||||
case 512512:
|
||||
{
|
||||
// DEC disk uses 256 bytes/sector
|
||||
if(this.biggestSectorSize == 256)
|
||||
if(biggestSectorSize == 256)
|
||||
return DiskType.RX02;
|
||||
else // ECMA disks use 128 bytes/sector
|
||||
return DiskType.ECMA_59;
|
||||
@@ -837,7 +835,7 @@ namespace FileSystemIDandChk.ImagePlugins
|
||||
default:
|
||||
{
|
||||
if (MainClass.isDebug)
|
||||
Console.WriteLine("DEBUG (TeleDisk plugin): Unknown 8\" disk with {0} bytes", this.totalDiskSize);
|
||||
Console.WriteLine("DEBUG (TeleDisk plugin): Unknown 8\" disk with {0} bytes", totalDiskSize);
|
||||
return DiskType.Unknown;
|
||||
}
|
||||
}
|
||||
@@ -845,12 +843,11 @@ namespace FileSystemIDandChk.ImagePlugins
|
||||
default:
|
||||
{
|
||||
if (MainClass.isDebug)
|
||||
Console.WriteLine("DEBUG (TeleDisk plugin): Unknown drive type {1} with {0} bytes", this.totalDiskSize, this.header.driveType);
|
||||
Console.WriteLine("DEBUG (TeleDisk plugin): Unknown drive type {1} with {0} bytes", totalDiskSize, header.driveType);
|
||||
return DiskType.Unknown;
|
||||
}
|
||||
|
||||
}
|
||||
throw new NotImplementedException("Not yet implemented.");
|
||||
}
|
||||
|
||||
#region Private methods
|
||||
@@ -952,7 +949,6 @@ namespace FileSystemIDandChk.ImagePlugins
|
||||
if (Encoding == 0x00)
|
||||
{
|
||||
Length = encodedData[ins + 1];
|
||||
Piece = new byte[Length];
|
||||
Array.Copy(encodedData, ins + 2, decodedData, outs, Length);
|
||||
ins += (2 + Length);
|
||||
outs += Length;
|
||||
|
||||
@@ -41,35 +41,49 @@ using System.Collections.Generic;
|
||||
|
||||
namespace FileSystemIDandChk.PartPlugins
|
||||
{
|
||||
/// <summary>
|
||||
/// Abstract class to implement partitioning schemes interpreting plugins.
|
||||
/// </summary>
|
||||
public abstract class PartPlugin
|
||||
{
|
||||
/// <summary>Plugin name.</summary>
|
||||
public string Name;
|
||||
/// <summary>Plugin UUID.</summary>
|
||||
public Guid PluginUUID;
|
||||
|
||||
protected PartPlugin()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Interprets a partitioning scheme.
|
||||
/// </summary>
|
||||
/// <returns><c>true</c>, if partitioning scheme is recognized, <c>false</c> otherwise.</returns>
|
||||
/// <param name="imagePlugin">Disk image.</param>
|
||||
/// <param name="partitions">Returns list of partitions.</param>
|
||||
public abstract bool GetInformation(ImagePlugins.ImagePlugin imagePlugin, out List<Partition> partitions);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Partition structure.
|
||||
/// </summary>
|
||||
public struct Partition
|
||||
{
|
||||
/// <summary>Partition number, 0-started</summary>
|
||||
public ulong PartitionSequence;
|
||||
// Partition number, 0-started
|
||||
/// <summary>Partition type</summary>
|
||||
public string PartitionType;
|
||||
// Partition type
|
||||
/// <summary>Partition name (if the scheme supports it)</summary>
|
||||
public string PartitionName;
|
||||
// Partition name (if the scheme supports it)
|
||||
/// <summary>Start of the partition, in bytes</summary>
|
||||
public ulong PartitionStart;
|
||||
// Start of the partition, in bytes
|
||||
/// <summary>LBA of partition start</summary>
|
||||
public ulong PartitionStartSector;
|
||||
// LBA of partition start
|
||||
/// <summary>Length in bytes of the partition</summary>
|
||||
public ulong PartitionLength;
|
||||
// Length in bytes of the partition
|
||||
/// <summary>Length in sectors of the partition</summary>
|
||||
public ulong PartitionSectors;
|
||||
// Length in sectors of the partition
|
||||
/// <summary>Information that does not find space in this struct</summary>
|
||||
public string PartitionDescription;
|
||||
// Information that does not find space in this struct
|
||||
}
|
||||
}
|
||||
@@ -40,16 +40,34 @@ using System;
|
||||
|
||||
namespace FileSystemIDandChk.Plugins
|
||||
{
|
||||
/// <summary>
|
||||
/// Abstract class to implement filesystem plugins.
|
||||
/// </summary>
|
||||
public abstract class Plugin
|
||||
{
|
||||
/// <summary>Plugin name.</summary>
|
||||
public string Name;
|
||||
/// <summary>Plugin UUID.</summary>
|
||||
public Guid PluginUUID;
|
||||
|
||||
protected Plugin()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Identifies the filesystem in the specified LBA
|
||||
/// </summary>
|
||||
/// <param name="imagePlugin">Disk image.</param>
|
||||
/// <param name="partitionOffset">Partition offset (LBA).</param>
|
||||
/// <returns><c>true</c>, if the filesystem is recognized, <c>false</c> otherwise.</returns>
|
||||
public abstract bool Identify(ImagePlugins.ImagePlugin imagePlugin, ulong partitionOffset);
|
||||
|
||||
/// <summary>
|
||||
/// Gets information about the identified filesystem.
|
||||
/// </summary>
|
||||
/// <param name="imagePlugin">Disk image.</param>
|
||||
/// <param name="partitionOffset">Partition offset (LBA).</param>
|
||||
/// <param name="information">Filesystem information.</param>
|
||||
public abstract void GetInformation(ImagePlugins.ImagePlugin imagePlugin, ulong partitionOffset, out string information);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FileSystemIDandChk v1.00
|
||||
FileSystemIDandChk v1.10
|
||||
=============
|
||||
|
||||
Filesystem identifier and checker.
|
||||
@@ -17,9 +17,9 @@ Works under any operating system where there is Mono or .NET Framework. Tested w
|
||||
Features
|
||||
========
|
||||
|
||||
* Supports reading CDRWin cue/bin cuesheets and Apple DiskCopy 4.2
|
||||
* Supports traversing MBR, Apple and NeXT partitioning schemes
|
||||
* Identifies HFS, HFS+, MFS, BeFS, ext/2/3/4, FAT12/16/32, FFS/UFS/UFS2, HPFS, ISO9660, LisaFS, MinixFS, NTFS, ODS11, Opera, PCEngine, SolarFS, System V and UnixWare boot filesystem
|
||||
* Supports reading CDRWin cue/bin cuesheets, Apple DiskCopy 4.2 and TeleDisk disk images.
|
||||
* Supports traversing MBR, Apple and NeXT partitioning schemes.
|
||||
* Identifies HFS, HFS+, MFS, BeFS, ext/2/3/4, FAT12/16/32, FFS/UFS/UFS2, HPFS, ISO9660, LisaFS, MinixFS, NTFS, ODS11, Opera, PCEngine, SolarFS, System V and UnixWare boot filesystem.
|
||||
|
||||
Changelog
|
||||
=========
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ItemType>PackagingProject</ItemType>
|
||||
<ProductVersion>9.0.21022</ProductVersion>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{8996EF59-09B9-4920-A3DE-2F8EA2EBBCFF}</ProjectGuid>
|
||||
<Packages>
|
||||
@@ -41,5 +41,6 @@
|
||||
</Package>
|
||||
</Packages>
|
||||
</Packages>
|
||||
<ReleaseVersion>1.10</ReleaseVersion>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
Reference in New Issue
Block a user