From 114c7454ce8bd936a103d2fa56e5320a7df96204 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sun, 8 Oct 2017 21:54:56 +0100 Subject: [PATCH] Use PVD's blocks and blocksize in ISO9660. --- DiscImageChef.Filesystems/ISO9660/Info.cs | 5 +++-- DiscImageChef.Filesystems/ISO9660/Structs.cs | 8 ++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/DiscImageChef.Filesystems/ISO9660/Info.cs b/DiscImageChef.Filesystems/ISO9660/Info.cs index 0356b012b..540755ef5 100644 --- a/DiscImageChef.Filesystems/ISO9660/Info.cs +++ b/DiscImageChef.Filesystems/ISO9660/Info.cs @@ -278,6 +278,7 @@ namespace DiscImageChef.Filesystems.ISO9660 ISOMetadata.AppendFormat("Volume effective date: {0}", decodedVD.EffectiveTime).AppendLine(); else ISOMetadata.AppendFormat("Volume has always been effective.").AppendLine(); + ISOMetadata.AppendFormat("Volume has {0} blocks of {1} bytes each", decodedVD.Blocks, decodedVD.BlockSize).AppendLine(); if(jolietvd != null) { @@ -382,8 +383,8 @@ namespace DiscImageChef.Filesystems.ISO9660 } xmlFSType.Bootable |= bvd != null || SegaCD != null || Saturn != null || Dreamcast != null; - xmlFSType.Clusters = (long)(partition.End - partition.Start + 1); - xmlFSType.ClusterSize = 2048; + xmlFSType.Clusters = decodedVD.Blocks; + xmlFSType.ClusterSize = decodedVD.BlockSize; information = ISOMetadata.ToString(); } diff --git a/DiscImageChef.Filesystems/ISO9660/Structs.cs b/DiscImageChef.Filesystems/ISO9660/Structs.cs index 4d2a8bd9f..c15f0840e 100644 --- a/DiscImageChef.Filesystems/ISO9660/Structs.cs +++ b/DiscImageChef.Filesystems/ISO9660/Structs.cs @@ -201,6 +201,8 @@ namespace DiscImageChef.Filesystems.ISO9660 public DateTime ExpirationTime; public bool HasEffectiveTime; public DateTime EffectiveTime; + public ushort BlockSize; + public uint Blocks; } static DecodedVolumeDescriptor DecodeJolietDescriptor(PrimaryVolumeDescriptor jolietvd) @@ -248,6 +250,9 @@ namespace DiscImageChef.Filesystems.ISO9660 decodedVD.EffectiveTime = DateHandlers.ISO9660ToDateTime(jolietvd.effective_date); } + decodedVD.Blocks = jolietvd.volume_space_size; + decodedVD.BlockSize = jolietvd.logical_block_size; + return decodedVD; } @@ -296,6 +301,9 @@ namespace DiscImageChef.Filesystems.ISO9660 decodedVD.EffectiveTime = DateHandlers.ISO9660ToDateTime(pvd.effective_date); } + decodedVD.Blocks = pvd.volume_space_size; + decodedVD.BlockSize = pvd.logical_block_size; + return decodedVD; } }