Added support for AAIP extensions to ISO9660.

This commit is contained in:
2017-10-09 12:54:46 +01:00
parent 8fb732cc60
commit 78e616ab73
2 changed files with 13 additions and 0 deletions

View File

@@ -64,6 +64,8 @@ namespace DiscImageChef.Filesystems.ISO9660
const ushort ziso_Magic = 0x5A46; // "ZF" const ushort ziso_Magic = 0x5A46; // "ZF"
const ushort ziso_PagedZlib = 0x707A; // "pz" const ushort ziso_PagedZlib = 0x707A; // "pz"
const ushort Amiga_Magic = 0x4153; // "AS" const ushort Amiga_Magic = 0x4153; // "AS"
const ushort AAIP_Magic = 0x414C; // "AL"
const ushort AAIP_OldMagic = 0x4141; // "AA"
[Flags] [Flags]
enum FileFlags : byte enum FileFlags : byte
@@ -267,5 +269,11 @@ namespace DiscImageChef.Filesystems.ISO9660
Script = 1 << 6, Script = 1 << 6,
Reserved = 1 << 7, Reserved = 1 << 7,
} }
[Flags]
enum AAIPFlags : byte
{
Continue = 1
}
} }
} }

View File

@@ -259,6 +259,7 @@ namespace DiscImageChef.Filesystems.ISO9660
bool RRIP = false; bool RRIP = false;
bool ziso = false; bool ziso = false;
bool Amiga = false; bool Amiga = false;
bool AAIP = false;
List<ContinuationArea> contareas = new List<ContinuationArea>(); List<ContinuationArea> contareas = new List<ContinuationArea>();
List<byte[]> refareas = new List<byte[]>(); List<byte[]> refareas = new List<byte[]>();
StringBuilder suspInformation = new StringBuilder(); StringBuilder suspInformation = new StringBuilder();
@@ -380,6 +381,7 @@ namespace DiscImageChef.Filesystems.ISO9660
ziso |= nextSignature == ziso_Magic; ziso |= nextSignature == ziso_Magic;
Amiga |= nextSignature == Amiga_Magic; Amiga |= nextSignature == Amiga_Magic;
AAIP |= nextSignature == AAIP_Magic || (nextSignature == AAIP_OldMagic && sa[sa_off + 3] == 1 && sa[sa_off + 2] >= 9);
sa_off += sa[sa_off + 2]; sa_off += sa[sa_off + 2];
@@ -438,6 +440,7 @@ namespace DiscImageChef.Filesystems.ISO9660
ziso |= nextSignature == ziso_Magic; ziso |= nextSignature == ziso_Magic;
Amiga |= nextSignature == Amiga_Magic; Amiga |= nextSignature == Amiga_Magic;
AAIP |= nextSignature == AAIP_Magic || (nextSignature == AAIP_OldMagic && ca_data[ca_off + 3] == 1 && ca_data[ca_off + 2] >= 9);
ca_off += ca_data[ca_off + 2]; ca_off += ca_data[ca_off + 2];
} }
@@ -480,6 +483,8 @@ namespace DiscImageChef.Filesystems.ISO9660
ISOMetadata.AppendLine("System Use Sharing Protocol present."); ISOMetadata.AppendLine("System Use Sharing Protocol present.");
if(RRIP) if(RRIP)
ISOMetadata.AppendLine("Rock Ridge Interchange Protocol present."); ISOMetadata.AppendLine("Rock Ridge Interchange Protocol present.");
if(AAIP)
ISOMetadata.AppendLine("Arbitrary Attribute Interchange Protocol present.");
if(ziso) if(ziso)
ISOMetadata.AppendLine("zisofs compression present."); ISOMetadata.AppendLine("zisofs compression present.");
if(bvd != null) if(bvd != null)