mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Handle associated files in ISO9660.
This commit is contained in:
13
.idea/.idea.DiscImageChef/.idea/contentModel.xml
generated
13
.idea/.idea.DiscImageChef/.idea/contentModel.xml
generated
@@ -35,7 +35,6 @@
|
|||||||
<e p="Entropy.cs" t="Include" />
|
<e p="Entropy.cs" t="Include" />
|
||||||
<e p="ExtractFiles.cs" t="Include" />
|
<e p="ExtractFiles.cs" t="Include" />
|
||||||
<e p="Formats.cs" t="Include" />
|
<e p="Formats.cs" t="Include" />
|
||||||
<e p="Gui.cs" t="Include" />
|
|
||||||
<e p="ImageInfo.cs" t="Include" />
|
<e p="ImageInfo.cs" t="Include" />
|
||||||
<e p="ListDevices.cs" t="Include" />
|
<e p="ListDevices.cs" t="Include" />
|
||||||
<e p="ListEncodings.cs" t="Include" />
|
<e p="ListEncodings.cs" t="Include" />
|
||||||
@@ -61,7 +60,7 @@
|
|||||||
<e p="bin" t="ExcludeRecursive" />
|
<e p="bin" t="ExcludeRecursive" />
|
||||||
<e p="obj" t="ExcludeRecursive">
|
<e p="obj" t="ExcludeRecursive">
|
||||||
<e p="Debug" t="Include">
|
<e p="Debug" t="Include">
|
||||||
<e p="net461" t="Include">
|
<e p="netcoreapp2.0" t="Include">
|
||||||
<e p="DiscImageChef.AssemblyInfo.cs" t="Include" />
|
<e p="DiscImageChef.AssemblyInfo.cs" t="Include" />
|
||||||
</e>
|
</e>
|
||||||
</e>
|
</e>
|
||||||
@@ -76,7 +75,6 @@
|
|||||||
<e p="DiscImageChef.Checksums.csproj" t="IncludeRecursive" />
|
<e p="DiscImageChef.Checksums.csproj" t="IncludeRecursive" />
|
||||||
<e p="FletcherContext.cs" t="Include" />
|
<e p="FletcherContext.cs" t="Include" />
|
||||||
<e p="MD5Context.cs" t="Include" />
|
<e p="MD5Context.cs" t="Include" />
|
||||||
<e p="RIPEMD160Context.cs" t="Include" />
|
|
||||||
<e p="ReedSolomon.cs" t="Include" />
|
<e p="ReedSolomon.cs" t="Include" />
|
||||||
<e p="Register.cs" t="Include" />
|
<e p="Register.cs" t="Include" />
|
||||||
<e p="SHA1Context.cs" t="Include" />
|
<e p="SHA1Context.cs" t="Include" />
|
||||||
@@ -1303,27 +1301,33 @@
|
|||||||
<e p="ElTorito.cs" t="Include" />
|
<e p="ElTorito.cs" t="Include" />
|
||||||
<e p="HighSierra.cs" t="Include" />
|
<e p="HighSierra.cs" t="Include" />
|
||||||
<e p="ISO.cs" t="Include" />
|
<e p="ISO.cs" t="Include" />
|
||||||
|
<e p="Internal.cs" t="Include" />
|
||||||
<e p="RRIP.cs" t="Include" />
|
<e p="RRIP.cs" t="Include" />
|
||||||
<e p="SUSP.cs" t="Include" />
|
<e p="SUSP.cs" t="Include" />
|
||||||
<e p="XA.cs" t="Include" />
|
<e p="XA.cs" t="Include" />
|
||||||
<e p="Ziso.cs" t="Include" />
|
<e p="Ziso.cs" t="Include" />
|
||||||
</e>
|
</e>
|
||||||
|
<e p="Date.cs" t="Include" />
|
||||||
|
<e p="Dir.cs" t="Include" />
|
||||||
|
<e p="File.cs" t="Include" />
|
||||||
<e p="ISO9660.cs" t="Include" />
|
<e p="ISO9660.cs" t="Include" />
|
||||||
<e p="Info.cs" t="Include" />
|
<e p="Info.cs" t="Include" />
|
||||||
<e p="Structs" t="Include">
|
<e p="Structs" t="Include">
|
||||||
<e p="Amiga.cs" t="Include" />
|
<e p="Amiga.cs" t="Include" />
|
||||||
<e p="Apple.cs" t="Include" />
|
<e p="Apple.cs" t="Include" />
|
||||||
<e p="CDi.cs" t="Include" />
|
<e p="CDi.cs" t="Include" />
|
||||||
<e p="Common.cs" t="Include" />
|
|
||||||
<e p="ElTorito.cs" t="Include" />
|
<e p="ElTorito.cs" t="Include" />
|
||||||
<e p="HighSierra.cs" t="Include" />
|
<e p="HighSierra.cs" t="Include" />
|
||||||
<e p="ISO.cs" t="Include" />
|
<e p="ISO.cs" t="Include" />
|
||||||
|
<e p="Internal.cs" t="Include" />
|
||||||
<e p="Joliet.cs" t="Include" />
|
<e p="Joliet.cs" t="Include" />
|
||||||
<e p="RRIP.cs" t="Include" />
|
<e p="RRIP.cs" t="Include" />
|
||||||
<e p="SUSP.cs" t="Include" />
|
<e p="SUSP.cs" t="Include" />
|
||||||
<e p="XA.cs" t="Include" />
|
<e p="XA.cs" t="Include" />
|
||||||
<e p="Ziso.cs" t="Include" />
|
<e p="Ziso.cs" t="Include" />
|
||||||
</e>
|
</e>
|
||||||
|
<e p="Super.cs" t="Include" />
|
||||||
|
<e p="Xattr.cs" t="Include" />
|
||||||
</e>
|
</e>
|
||||||
<e p="JFS.cs" t="Include" />
|
<e p="JFS.cs" t="Include" />
|
||||||
<e p="LIF.cs" t="Include" />
|
<e p="LIF.cs" t="Include" />
|
||||||
@@ -2074,7 +2078,6 @@
|
|||||||
<e p="CRC32.cs" t="Include" />
|
<e p="CRC32.cs" t="Include" />
|
||||||
<e p="CRC64.cs" t="Include" />
|
<e p="CRC64.cs" t="Include" />
|
||||||
<e p="MD5.cs" t="Include" />
|
<e p="MD5.cs" t="Include" />
|
||||||
<e p="RIPEMD160.cs" t="Include" />
|
|
||||||
<e p="SHA1.cs" t="Include" />
|
<e p="SHA1.cs" t="Include" />
|
||||||
<e p="SHA256.cs" t="Include" />
|
<e p="SHA256.cs" t="Include" />
|
||||||
<e p="SHA384.cs" t="Include" />
|
<e p="SHA384.cs" t="Include" />
|
||||||
|
|||||||
@@ -210,7 +210,32 @@ namespace DiscImageChef.Filesystems.ISO9660
|
|||||||
};
|
};
|
||||||
|
|
||||||
// TODO: Multi-extent files
|
// TODO: Multi-extent files
|
||||||
if(!entries.ContainsKey(entry.IsoFilename)) entries.Add(entry.IsoFilename, entry);
|
if(entry.Flags.HasFlag(FileFlags.Associated))
|
||||||
|
{
|
||||||
|
// TODO: Detect if Apple extensions, as associated files contain the resource fork there
|
||||||
|
|
||||||
|
if(entries.ContainsKey(entry.IsoFilename)) entries[entry.IsoFilename].AssociatedFile = entry;
|
||||||
|
else
|
||||||
|
entries[entry.IsoFilename] = new DecodedDirectoryEntry
|
||||||
|
{
|
||||||
|
Extent = 0,
|
||||||
|
Size = 0,
|
||||||
|
Flags = record.flags ^ FileFlags.Associated,
|
||||||
|
FileUnitSize = 0,
|
||||||
|
Interleave = 0,
|
||||||
|
VolumeSequenceNumber = record.volume_sequence_number,
|
||||||
|
IsoFilename =
|
||||||
|
Encoding.ASCII.GetString(data, entryOff + DirectoryRecordSize, record.name_len),
|
||||||
|
Timestamp = DecodeIsoDateTime(record.date),
|
||||||
|
AssociatedFile = entry
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(entries.ContainsKey(entry.IsoFilename))
|
||||||
|
entry.AssociatedFile = entries[entry.IsoFilename].AssociatedFile;
|
||||||
|
entries[entry.IsoFilename] = entry;
|
||||||
|
}
|
||||||
|
|
||||||
entryOff += record.length;
|
entryOff += record.length;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,14 +57,15 @@ namespace DiscImageChef.Filesystems.ISO9660
|
|||||||
|
|
||||||
class DecodedDirectoryEntry
|
class DecodedDirectoryEntry
|
||||||
{
|
{
|
||||||
public uint Extent;
|
public DecodedDirectoryEntry AssociatedFile;
|
||||||
public byte FileUnitSize;
|
public uint Extent;
|
||||||
public FileFlags Flags;
|
public byte FileUnitSize;
|
||||||
public byte Interleave;
|
public FileFlags Flags;
|
||||||
public string IsoFilename;
|
public byte Interleave;
|
||||||
public uint Size;
|
public string IsoFilename;
|
||||||
public DateTime? Timestamp;
|
public uint Size;
|
||||||
public ushort VolumeSequenceNumber;
|
public DateTime? Timestamp;
|
||||||
|
public ushort VolumeSequenceNumber;
|
||||||
|
|
||||||
public override string ToString() => IsoFilename;
|
public override string ToString() => IsoFilename;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user