mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
ISO9660 should always check from offset 0, needs to be sure it runs only once
git-svn-id: svn://claunia.com/FileSystemIDandChk@4 17725271-3d32-4980-a8cb-9ff532f270ba
This commit is contained in:
@@ -44,7 +44,7 @@ namespace FileSystemIDandChk.Plugins
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Seek to Volume Descriptor
|
// Seek to Volume Descriptor
|
||||||
fileStream.Seek(32768 + offset, SeekOrigin.Begin);
|
fileStream.Seek(32768, SeekOrigin.Begin);
|
||||||
|
|
||||||
VDType = (byte)fileStream.ReadByte();
|
VDType = (byte)fileStream.ReadByte();
|
||||||
byte[] VDMagic = new byte[5];
|
byte[] VDMagic = new byte[5];
|
||||||
@@ -99,7 +99,7 @@ namespace FileSystemIDandChk.Plugins
|
|||||||
byte[] VDPathTableStart = new byte[4];
|
byte[] VDPathTableStart = new byte[4];
|
||||||
byte[] RootDirectoryLocation = new byte[4];
|
byte[] RootDirectoryLocation = new byte[4];
|
||||||
|
|
||||||
fileStream.Seek(0 + offset, SeekOrigin.Begin);
|
fileStream.Seek(0, SeekOrigin.Begin);
|
||||||
|
|
||||||
// ISO9660 Primary Volume Descriptor starts at 32768, so that's minimal size.
|
// ISO9660 Primary Volume Descriptor starts at 32768, so that's minimal size.
|
||||||
if (fileStream.Length < 32768)
|
if (fileStream.Length < 32768)
|
||||||
@@ -110,7 +110,7 @@ namespace FileSystemIDandChk.Plugins
|
|||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
// Seek to Volume Descriptor
|
// Seek to Volume Descriptor
|
||||||
fileStream.Seek(32768+(2048*counter) + offset, SeekOrigin.Begin);
|
fileStream.Seek(32768+(2048*counter), SeekOrigin.Begin);
|
||||||
|
|
||||||
VDType = (byte)fileStream.ReadByte();
|
VDType = (byte)fileStream.ReadByte();
|
||||||
|
|
||||||
@@ -143,7 +143,7 @@ namespace FileSystemIDandChk.Plugins
|
|||||||
BootSpec = "Unknown";
|
BootSpec = "Unknown";
|
||||||
|
|
||||||
// Seek to boot system identifier
|
// Seek to boot system identifier
|
||||||
fileStream.Seek(32775 + (2048 * counter) + offset, SeekOrigin.Begin);
|
fileStream.Seek(32775 + (2048 * counter), SeekOrigin.Begin);
|
||||||
|
|
||||||
if (fileStream.Read(BootSysId, 0, 32) != 32)
|
if (fileStream.Read(BootSysId, 0, 32) != 32)
|
||||||
break; // Something bad happened
|
break; // Something bad happened
|
||||||
@@ -156,7 +156,7 @@ namespace FileSystemIDandChk.Plugins
|
|||||||
case 1:
|
case 1:
|
||||||
{
|
{
|
||||||
// Seek to first identifiers
|
// Seek to first identifiers
|
||||||
fileStream.Seek(32776 + (2048 * counter) + offset, SeekOrigin.Begin);
|
fileStream.Seek(32776 + (2048 * counter), SeekOrigin.Begin);
|
||||||
|
|
||||||
if (fileStream.Read(VDSysId, 0, 32) != 32)
|
if (fileStream.Read(VDSysId, 0, 32) != 32)
|
||||||
break; // Something bad happened
|
break; // Something bad happened
|
||||||
@@ -164,13 +164,13 @@ namespace FileSystemIDandChk.Plugins
|
|||||||
break; // Something bad happened
|
break; // Something bad happened
|
||||||
|
|
||||||
// Get path table start
|
// Get path table start
|
||||||
fileStream.Seek(32908 + (2048 * counter) + offset, SeekOrigin.Begin);
|
fileStream.Seek(32908 + (2048 * counter), SeekOrigin.Begin);
|
||||||
|
|
||||||
if (fileStream.Read(VDPathTableStart, 0, 4) != 4)
|
if (fileStream.Read(VDPathTableStart, 0, 4) != 4)
|
||||||
break; // Something bad happened
|
break; // Something bad happened
|
||||||
|
|
||||||
// Seek to next identifiers
|
// Seek to next identifiers
|
||||||
fileStream.Seek(32958 + (2048 * counter) + offset, SeekOrigin.Begin);
|
fileStream.Seek(32958 + (2048 * counter), SeekOrigin.Begin);
|
||||||
|
|
||||||
if (fileStream.Read(VDVolSetId, 0, 128) != 128)
|
if (fileStream.Read(VDVolSetId, 0, 128) != 128)
|
||||||
break; // Something bad happened
|
break; // Something bad happened
|
||||||
@@ -182,7 +182,7 @@ namespace FileSystemIDandChk.Plugins
|
|||||||
break; // Something bad happened
|
break; // Something bad happened
|
||||||
|
|
||||||
// Seek to dates
|
// Seek to dates
|
||||||
fileStream.Seek(33581 + (2048 * counter) + offset, SeekOrigin.Begin);
|
fileStream.Seek(33581 + (2048 * counter), SeekOrigin.Begin);
|
||||||
|
|
||||||
if (fileStream.Read(VCTime, 0, 17) != 17)
|
if (fileStream.Read(VCTime, 0, 17) != 17)
|
||||||
break; // Something bad happened
|
break; // Something bad happened
|
||||||
@@ -198,7 +198,7 @@ namespace FileSystemIDandChk.Plugins
|
|||||||
case 2:
|
case 2:
|
||||||
{
|
{
|
||||||
// Check if this is Joliet
|
// Check if this is Joliet
|
||||||
fileStream.Seek(32856 + (2048 * counter) + offset, SeekOrigin.Begin);
|
fileStream.Seek(32856 + (2048 * counter), SeekOrigin.Begin);
|
||||||
|
|
||||||
if (fileStream.Read(JolietMagic, 0, 3) != 3)
|
if (fileStream.Read(JolietMagic, 0, 3) != 3)
|
||||||
{
|
{
|
||||||
@@ -220,7 +220,7 @@ namespace FileSystemIDandChk.Plugins
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
// Seek to first identifiers
|
// Seek to first identifiers
|
||||||
fileStream.Seek(32776 + (2048 * counter) + offset, SeekOrigin.Begin);
|
fileStream.Seek(32776 + (2048 * counter), SeekOrigin.Begin);
|
||||||
|
|
||||||
if (fileStream.Read(JolietSysId, 0, 32) != 32)
|
if (fileStream.Read(JolietSysId, 0, 32) != 32)
|
||||||
break; // Something bad happened
|
break; // Something bad happened
|
||||||
@@ -228,7 +228,7 @@ namespace FileSystemIDandChk.Plugins
|
|||||||
break; // Something bad happened
|
break; // Something bad happened
|
||||||
|
|
||||||
// Seek to next identifiers
|
// Seek to next identifiers
|
||||||
fileStream.Seek(32958 + (2048 * counter) + offset, SeekOrigin.Begin);
|
fileStream.Seek(32958 + (2048 * counter), SeekOrigin.Begin);
|
||||||
|
|
||||||
if (fileStream.Read(JolietVolSetId, 0, 128) != 128)
|
if (fileStream.Read(JolietVolSetId, 0, 128) != 128)
|
||||||
break; // Something bad happened
|
break; // Something bad happened
|
||||||
@@ -240,7 +240,7 @@ namespace FileSystemIDandChk.Plugins
|
|||||||
break; // Something bad happened
|
break; // Something bad happened
|
||||||
|
|
||||||
// Seek to dates
|
// Seek to dates
|
||||||
fileStream.Seek(33581 + (2048 * counter) + offset, SeekOrigin.Begin);
|
fileStream.Seek(33581 + (2048 * counter), SeekOrigin.Begin);
|
||||||
|
|
||||||
if (fileStream.Read(JolietCTime, 0, 17) != 17)
|
if (fileStream.Read(JolietCTime, 0, 17) != 17)
|
||||||
break; // Something bad happened
|
break; // Something bad happened
|
||||||
@@ -266,12 +266,12 @@ namespace FileSystemIDandChk.Plugins
|
|||||||
|
|
||||||
int i = BitConverter.ToInt32(VDPathTableStart, 0);
|
int i = BitConverter.ToInt32(VDPathTableStart, 0);
|
||||||
|
|
||||||
fileStream.Seek((i * 2048)+2 + offset, SeekOrigin.Begin); // Seek to first path table location field
|
fileStream.Seek((i * 2048)+2, SeekOrigin.Begin); // Seek to first path table location field
|
||||||
|
|
||||||
// Check for Rock Ridge
|
// Check for Rock Ridge
|
||||||
if (fileStream.Read(RootDirectoryLocation, 0, 4) == 4)
|
if (fileStream.Read(RootDirectoryLocation, 0, 4) == 4)
|
||||||
{
|
{
|
||||||
fileStream.Seek((BitConverter.ToInt32(RootDirectoryLocation,0) * 2048)+34 + offset, SeekOrigin.Begin); // Seek to root directory, first entry, system use field
|
fileStream.Seek((BitConverter.ToInt32(RootDirectoryLocation,0) * 2048)+34, SeekOrigin.Begin); // Seek to root directory, first entry, system use field
|
||||||
|
|
||||||
byte[] SUSPMagic = new byte[2];
|
byte[] SUSPMagic = new byte[2];
|
||||||
byte[] RRMagic = new byte[2];
|
byte[] RRMagic = new byte[2];
|
||||||
@@ -296,7 +296,7 @@ namespace FileSystemIDandChk.Plugins
|
|||||||
StringBuilder IPBinInformation = new StringBuilder();
|
StringBuilder IPBinInformation = new StringBuilder();
|
||||||
|
|
||||||
byte[] SegaHardwareID = new byte[16];
|
byte[] SegaHardwareID = new byte[16];
|
||||||
fileStream.Seek(0 + offset, SeekOrigin.Begin); // Seek to start (again)
|
fileStream.Seek(0, SeekOrigin.Begin); // Seek to start (again)
|
||||||
fileStream.Read(SegaHardwareID, 0, 16);
|
fileStream.Read(SegaHardwareID, 0, 16);
|
||||||
|
|
||||||
switch (Encoding.ASCII.GetString(SegaHardwareID))
|
switch (Encoding.ASCII.GetString(SegaHardwareID))
|
||||||
|
|||||||
Reference in New Issue
Block a user