mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Refactor ISO9660 and solves bug preventing amiga extensions from being named.
This commit is contained in:
@@ -36,8 +36,8 @@ namespace DiscImageChef.Filesystems.ISO9660
|
||||
{
|
||||
public partial class ISO9660
|
||||
{
|
||||
const ushort AAIP_Magic = 0x414C; // "AL"
|
||||
const ushort AAIP_OldMagic = 0x4141; // "AA"
|
||||
const ushort AAIP_MAGIC = 0x414C; // "AL"
|
||||
const ushort AAIP_MAGIC_OLD = 0x4141; // "AA"
|
||||
|
||||
[Flags]
|
||||
enum AAIPFlags : byte
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace DiscImageChef.Filesystems.ISO9660
|
||||
{
|
||||
public partial class ISO9660
|
||||
{
|
||||
const ushort Amiga_Magic = 0x4153; // "AS"
|
||||
const ushort AMIGA_MAGIC = 0x4153; // "AS"
|
||||
|
||||
[Flags]
|
||||
enum AmigaFlags : byte
|
||||
|
||||
@@ -34,8 +34,8 @@ namespace DiscImageChef.Filesystems.ISO9660
|
||||
{
|
||||
public partial class ISO9660
|
||||
{
|
||||
const ushort AppleMagic = 0x4141; // "AA"
|
||||
const ushort AppleMagicOld = 0x4241; // "BA"
|
||||
const ushort APPLE_MAGIC = 0x4141; // "AA"
|
||||
const ushort APPLE_MAGIC_OLD = 0x4241; // "BA"
|
||||
|
||||
enum AppleId : byte
|
||||
{
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace DiscImageChef.Filesystems.ISO9660
|
||||
{
|
||||
public partial class ISO9660
|
||||
{
|
||||
readonly string CdiMagic = "CD-I ";
|
||||
const string CDI_MAGIC = "CD-I ";
|
||||
|
||||
[Flags]
|
||||
enum CdiVolumeFlags : byte
|
||||
|
||||
@@ -36,8 +36,8 @@ namespace DiscImageChef.Filesystems.ISO9660
|
||||
{
|
||||
public partial class ISO9660
|
||||
{
|
||||
const ushort ElToritoMagic = 0xAA55;
|
||||
const int ElToritoEntrySize = 32;
|
||||
const ushort EL_TORITO_MAGIC = 0xAA55;
|
||||
const int EL_TORITO_ENTRY_SIZE = 32;
|
||||
|
||||
enum ElToritoIndicator : byte
|
||||
{
|
||||
|
||||
@@ -34,6 +34,6 @@ namespace DiscImageChef.Filesystems.ISO9660
|
||||
{
|
||||
public partial class ISO9660
|
||||
{
|
||||
readonly string HighSierraMagic = "CDROM";
|
||||
const string HIGH_SIERRA_MAGIC = "CDROM";
|
||||
}
|
||||
}
|
||||
@@ -36,7 +36,7 @@ namespace DiscImageChef.Filesystems.ISO9660
|
||||
{
|
||||
public partial class ISO9660
|
||||
{
|
||||
readonly string IsoMagic = "CD001";
|
||||
const string ISO_MAGIC = "CD001";
|
||||
|
||||
[Flags]
|
||||
enum FileFlags : byte
|
||||
|
||||
@@ -36,16 +36,16 @@ namespace DiscImageChef.Filesystems.ISO9660
|
||||
{
|
||||
public partial class ISO9660
|
||||
{
|
||||
const ushort RRIP_Magic = 0x5252; // "RR"
|
||||
const ushort RRIP_PosixAttributes = 0x5058; // "PX"
|
||||
const ushort RRIP_PosixDevNo = 0x504E; // "PN"
|
||||
const ushort RRIP_Symlink = 0x534C; // "SL"
|
||||
const ushort RRIP_Name = 0x4E4D; // "NM"
|
||||
const ushort RRIP_Childlink = 0x434C; // "CL"
|
||||
const ushort RRIP_Parentlink = 0x504C; // "PL"
|
||||
const ushort RRIP_RelocatedDir = 0x5245; // "RE"
|
||||
const ushort RRIP_Timestamps = 0x5446; // "TF"
|
||||
const ushort RRIP_Sparse = 0x5346; // "SF"
|
||||
const ushort RRIP_MAGIC = 0x5252; // "RR"
|
||||
const ushort RRIP_POSIX_ATTRIBUTES = 0x5058; // "PX"
|
||||
const ushort RRIP_POSIX_DEV_NO = 0x504E; // "PN"
|
||||
const ushort RRIP_SYMLINK = 0x534C; // "SL"
|
||||
const ushort RRIP_NAME = 0x4E4D; // "NM"
|
||||
const ushort RRIP_CHILDLINK = 0x434C; // "CL"
|
||||
const ushort RRIP_PARENTLINK = 0x504C; // "PL"
|
||||
const ushort RRIP_RELOCATED_DIR = 0x5245; // "RE"
|
||||
const ushort RRIP_TIMESTAMPS = 0x5446; // "TF"
|
||||
const ushort RRIP_SPARSE = 0x5346; // "SF"
|
||||
|
||||
[Flags]
|
||||
enum PosixMode : uint
|
||||
|
||||
@@ -34,12 +34,12 @@ namespace DiscImageChef.Filesystems.ISO9660
|
||||
{
|
||||
public partial class ISO9660
|
||||
{
|
||||
const ushort SUSP_Continuation = 0x4345; // "CE"
|
||||
const ushort SUSP_Padding = 0x5044; // "PD"
|
||||
const ushort SUSP_Indicator = 0x5350; // "SP"
|
||||
const ushort SUSP_Terminator = 0x5354; // "ST"
|
||||
const ushort SUSP_Reference = 0x4552; // "ER"
|
||||
const ushort SUSP_Selector = 0x4553; // "ES"
|
||||
const ushort SUSP_Magic = 0xBEEF;
|
||||
const ushort SUSP_CONTINUATION = 0x4345; // "CE"
|
||||
const ushort SUSP_PADDING = 0x5044; // "PD"
|
||||
const ushort SUSP_INDICATOR = 0x5350; // "SP"
|
||||
const ushort SUSP_TERMINATOR = 0x5354; // "ST"
|
||||
const ushort SUSP_REFERENCE = 0x4552; // "ER"
|
||||
const ushort SUSP_SELECTOR = 0x4553; // "ES"
|
||||
const ushort SUSP_MAGIC = 0xBEEF;
|
||||
}
|
||||
}
|
||||
@@ -36,7 +36,7 @@ namespace DiscImageChef.Filesystems.ISO9660
|
||||
{
|
||||
public partial class ISO9660
|
||||
{
|
||||
const ushort XaMagic = 0x5841; // "XA"
|
||||
const ushort XA_MAGIC = 0x5841; // "XA"
|
||||
|
||||
[Flags]
|
||||
enum XaAttributes : ushort
|
||||
|
||||
@@ -34,9 +34,9 @@ namespace DiscImageChef.Filesystems.ISO9660
|
||||
{
|
||||
public partial class ISO9660
|
||||
{
|
||||
const ulong ziso_header_magic = 0x37E45396C9DBD607;
|
||||
const ulong ziso_header_cigam = 0x07D6DBC99653E437;
|
||||
const ushort ziso_Magic = 0x5A46; // "ZF"
|
||||
const ushort ziso_PagedZlib = 0x707A; // "pz"
|
||||
const ulong ZISO_HEADER_MAGIC = 0x37E45396C9DBD607;
|
||||
const ulong ZISO_HEADER_CIGAM = 0x07D6DBC99653E437;
|
||||
const ushort ZISO_MAGIC = 0x5A46; // "ZF"
|
||||
const ushort ZISO_PAGED_ZLIB = 0x707A; // "pz"
|
||||
}
|
||||
}
|
||||
@@ -51,16 +51,14 @@ namespace DiscImageChef.Filesystems.ISO9660
|
||||
{
|
||||
Name = "ISO9660 Filesystem";
|
||||
PluginUUID = new Guid("d812f4d3-c357-400d-90fd-3b22ef786aa8");
|
||||
if(encoding == null) CurrentEncoding = Encoding.ASCII;
|
||||
else CurrentEncoding = encoding;
|
||||
CurrentEncoding = encoding ?? Encoding.ASCII;
|
||||
}
|
||||
|
||||
public ISO9660(ImagePlugin imagePlugin, Partition partition, Encoding encoding)
|
||||
{
|
||||
Name = "ISO9660 Filesystem";
|
||||
PluginUUID = new Guid("d812f4d3-c357-400d-90fd-3b22ef786aa8");
|
||||
if(encoding == null) CurrentEncoding = Encoding.ASCII;
|
||||
else CurrentEncoding = encoding;
|
||||
CurrentEncoding = encoding ?? Encoding.ASCII;
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -118,15 +118,16 @@ namespace DiscImageChef.Filesystems.ISO9660
|
||||
|
||||
static DecodedVolumeDescriptor DecodeVolumeDescriptor(FileStructureVolumeDescriptor pvd)
|
||||
{
|
||||
DecodedVolumeDescriptor decodedVD = new DecodedVolumeDescriptor();
|
||||
DecodedVolumeDescriptor decodedVD = new DecodedVolumeDescriptor
|
||||
{
|
||||
SystemIdentifier = Encoding.ASCII.GetString(pvd.system_id).TrimEnd().Trim('\0'),
|
||||
VolumeIdentifier = Encoding.ASCII.GetString(pvd.volume_id).TrimEnd().Trim('\0'),
|
||||
VolumeSetIdentifier = Encoding.ASCII.GetString(pvd.volume_set_id).TrimEnd().Trim('\0'),
|
||||
PublisherIdentifier = Encoding.ASCII.GetString(pvd.publisher_id).TrimEnd().Trim('\0'),
|
||||
DataPreparerIdentifier = Encoding.ASCII.GetString(pvd.preparer_id).TrimEnd().Trim('\0'),
|
||||
ApplicationIdentifier = Encoding.ASCII.GetString(pvd.application_data).TrimEnd().Trim('\0')
|
||||
};
|
||||
|
||||
decodedVD.SystemIdentifier = Encoding.ASCII.GetString(pvd.system_id).TrimEnd().Trim('\0');
|
||||
decodedVD.VolumeIdentifier = Encoding.ASCII.GetString(pvd.volume_id).TrimEnd().Trim('\0');
|
||||
decodedVD.VolumeSetIdentifier = Encoding.ASCII.GetString(pvd.volume_set_id).TrimEnd().Trim('\0');
|
||||
decodedVD.PublisherIdentifier = Encoding.ASCII.GetString(pvd.publisher_id).TrimEnd().Trim('\0');
|
||||
decodedVD.DataPreparerIdentifier = Encoding.ASCII.GetString(pvd.preparer_id).TrimEnd().Trim('\0');
|
||||
decodedVD.ApplicationIdentifier =
|
||||
Encoding.ASCII.GetString(pvd.application_data).TrimEnd().Trim('\0');
|
||||
if(pvd.creation_date[0] == '0' || pvd.creation_date[0] == 0x00)
|
||||
decodedVD.CreationTime = DateTime.MinValue;
|
||||
else decodedVD.CreationTime = DateHandlers.HighSierraToDateTime(pvd.creation_date);
|
||||
|
||||
@@ -110,15 +110,16 @@ namespace DiscImageChef.Filesystems.ISO9660
|
||||
|
||||
static DecodedVolumeDescriptor DecodeVolumeDescriptor(HighSierraPrimaryVolumeDescriptor pvd)
|
||||
{
|
||||
DecodedVolumeDescriptor decodedVD = new DecodedVolumeDescriptor();
|
||||
DecodedVolumeDescriptor decodedVD = new DecodedVolumeDescriptor
|
||||
{
|
||||
SystemIdentifier = Encoding.ASCII.GetString(pvd.system_id).TrimEnd().Trim('\0'),
|
||||
VolumeIdentifier = Encoding.ASCII.GetString(pvd.volume_id).TrimEnd().Trim('\0'),
|
||||
VolumeSetIdentifier = Encoding.ASCII.GetString(pvd.volume_set_id).TrimEnd().Trim('\0'),
|
||||
PublisherIdentifier = Encoding.ASCII.GetString(pvd.publisher_id).TrimEnd().Trim('\0'),
|
||||
DataPreparerIdentifier = Encoding.ASCII.GetString(pvd.preparer_id).TrimEnd().Trim('\0'),
|
||||
ApplicationIdentifier = Encoding.ASCII.GetString(pvd.application_data).TrimEnd().Trim('\0')
|
||||
};
|
||||
|
||||
decodedVD.SystemIdentifier = Encoding.ASCII.GetString(pvd.system_id).TrimEnd().Trim('\0');
|
||||
decodedVD.VolumeIdentifier = Encoding.ASCII.GetString(pvd.volume_id).TrimEnd().Trim('\0');
|
||||
decodedVD.VolumeSetIdentifier = Encoding.ASCII.GetString(pvd.volume_set_id).TrimEnd().Trim('\0');
|
||||
decodedVD.PublisherIdentifier = Encoding.ASCII.GetString(pvd.publisher_id).TrimEnd().Trim('\0');
|
||||
decodedVD.DataPreparerIdentifier = Encoding.ASCII.GetString(pvd.preparer_id).TrimEnd().Trim('\0');
|
||||
decodedVD.ApplicationIdentifier =
|
||||
Encoding.ASCII.GetString(pvd.application_data).TrimEnd().Trim('\0');
|
||||
if(pvd.creation_date[0] == '0' || pvd.creation_date[0] == 0x00)
|
||||
decodedVD.CreationTime = DateTime.MinValue;
|
||||
else decodedVD.CreationTime = DateHandlers.HighSierraToDateTime(pvd.creation_date);
|
||||
|
||||
@@ -168,15 +168,16 @@ namespace DiscImageChef.Filesystems.ISO9660
|
||||
|
||||
static DecodedVolumeDescriptor DecodeVolumeDescriptor(PrimaryVolumeDescriptor pvd)
|
||||
{
|
||||
DecodedVolumeDescriptor decodedVD = new DecodedVolumeDescriptor();
|
||||
DecodedVolumeDescriptor decodedVD = new DecodedVolumeDescriptor
|
||||
{
|
||||
SystemIdentifier = Encoding.ASCII.GetString(pvd.system_id).TrimEnd().Trim('\0'),
|
||||
VolumeIdentifier = Encoding.ASCII.GetString(pvd.volume_id).TrimEnd().Trim('\0'),
|
||||
VolumeSetIdentifier = Encoding.ASCII.GetString(pvd.volume_set_id).TrimEnd().Trim('\0'),
|
||||
PublisherIdentifier = Encoding.ASCII.GetString(pvd.publisher_id).TrimEnd().Trim('\0'),
|
||||
DataPreparerIdentifier = Encoding.ASCII.GetString(pvd.preparer_id).TrimEnd().Trim('\0'),
|
||||
ApplicationIdentifier = Encoding.ASCII.GetString(pvd.application_data).TrimEnd().Trim('\0')
|
||||
};
|
||||
|
||||
decodedVD.SystemIdentifier = Encoding.ASCII.GetString(pvd.system_id).TrimEnd().Trim('\0');
|
||||
decodedVD.VolumeIdentifier = Encoding.ASCII.GetString(pvd.volume_id).TrimEnd().Trim('\0');
|
||||
decodedVD.VolumeSetIdentifier = Encoding.ASCII.GetString(pvd.volume_set_id).TrimEnd().Trim('\0');
|
||||
decodedVD.PublisherIdentifier = Encoding.ASCII.GetString(pvd.publisher_id).TrimEnd().Trim('\0');
|
||||
decodedVD.DataPreparerIdentifier = Encoding.ASCII.GetString(pvd.preparer_id).TrimEnd().Trim('\0');
|
||||
decodedVD.ApplicationIdentifier =
|
||||
Encoding.ASCII.GetString(pvd.application_data).TrimEnd().Trim('\0');
|
||||
if(pvd.creation_date[0] == '0' || pvd.creation_date[0] == 0x00)
|
||||
decodedVD.CreationTime = DateTime.MinValue;
|
||||
else decodedVD.CreationTime = DateHandlers.ISO9660ToDateTime(pvd.creation_date);
|
||||
|
||||
@@ -39,20 +39,20 @@ namespace DiscImageChef.Filesystems.ISO9660
|
||||
{
|
||||
static DecodedVolumeDescriptor DecodeJolietDescriptor(PrimaryVolumeDescriptor jolietvd)
|
||||
{
|
||||
DecodedVolumeDescriptor decodedVD = new DecodedVolumeDescriptor();
|
||||
DecodedVolumeDescriptor decodedVD = new DecodedVolumeDescriptor
|
||||
{
|
||||
SystemIdentifier = Encoding.BigEndianUnicode.GetString(jolietvd.system_id).TrimEnd().Trim('\u0000'),
|
||||
VolumeIdentifier = Encoding.BigEndianUnicode.GetString(jolietvd.volume_id).TrimEnd().Trim('\u0000'),
|
||||
VolumeSetIdentifier =
|
||||
Encoding.BigEndianUnicode.GetString(jolietvd.volume_set_id).TrimEnd().Trim('\u0000'),
|
||||
PublisherIdentifier =
|
||||
Encoding.BigEndianUnicode.GetString(jolietvd.publisher_id).TrimEnd().Trim('\u0000'),
|
||||
DataPreparerIdentifier =
|
||||
Encoding.BigEndianUnicode.GetString(jolietvd.preparer_id).TrimEnd().Trim('\u0000'),
|
||||
ApplicationIdentifier =
|
||||
Encoding.BigEndianUnicode.GetString(jolietvd.application_id).TrimEnd().Trim('\u0000')
|
||||
};
|
||||
|
||||
decodedVD.SystemIdentifier =
|
||||
Encoding.BigEndianUnicode.GetString(jolietvd.system_id).TrimEnd().Trim('\u0000');
|
||||
decodedVD.VolumeIdentifier =
|
||||
Encoding.BigEndianUnicode.GetString(jolietvd.volume_id).TrimEnd().Trim('\u0000');
|
||||
decodedVD.VolumeSetIdentifier = Encoding.BigEndianUnicode.GetString(jolietvd.volume_set_id).TrimEnd()
|
||||
.Trim('\u0000');
|
||||
decodedVD.PublisherIdentifier =
|
||||
Encoding.BigEndianUnicode.GetString(jolietvd.publisher_id).TrimEnd().Trim('\u0000');
|
||||
decodedVD.DataPreparerIdentifier =
|
||||
Encoding.BigEndianUnicode.GetString(jolietvd.preparer_id).TrimEnd().Trim('\u0000');
|
||||
decodedVD.ApplicationIdentifier = Encoding.BigEndianUnicode.GetString(jolietvd.application_id).TrimEnd()
|
||||
.Trim('\u0000');
|
||||
if(jolietvd.creation_date[0] < 0x31 || jolietvd.creation_date[0] > 0x39)
|
||||
decodedVD.CreationTime = DateTime.MinValue;
|
||||
else decodedVD.CreationTime = DateHandlers.ISO9660ToDateTime(jolietvd.creation_date);
|
||||
|
||||
Reference in New Issue
Block a user