mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
On optical media after recalculation sectors per cluster may
contain 0, it should not.
This commit is contained in:
@@ -923,6 +923,9 @@ namespace DiscImageChef.Filesystems
|
|||||||
fakeBPB.hsectors /= 4;
|
fakeBPB.hsectors /= 4;
|
||||||
fakeBPB.sptrk /= 4;
|
fakeBPB.sptrk /= 4;
|
||||||
fakeBPB.rsectors /= 4;
|
fakeBPB.rsectors /= 4;
|
||||||
|
|
||||||
|
if(fakeBPB.spc == 0)
|
||||||
|
fakeBPB.spc = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// This assumes no sane implementation will violate cluster size rules
|
// This assumes no sane implementation will violate cluster size rules
|
||||||
@@ -932,10 +935,11 @@ namespace DiscImageChef.Filesystems
|
|||||||
if(!isFAT12 && !isFAT16)
|
if(!isFAT12 && !isFAT16)
|
||||||
{
|
{
|
||||||
ulong clusters;
|
ulong clusters;
|
||||||
|
|
||||||
if(fakeBPB.sectors == 0)
|
if(fakeBPB.sectors == 0)
|
||||||
clusters = fakeBPB.big_sectors / fakeBPB.spc;
|
clusters = fakeBPB.spc == 0 ? fakeBPB.big_sectors : fakeBPB.big_sectors / fakeBPB.spc;
|
||||||
else
|
else
|
||||||
clusters = (ulong)(fakeBPB.sectors / fakeBPB.spc);
|
clusters = fakeBPB.spc == 0 ? (ulong)fakeBPB.sectors : (ulong)fakeBPB.sectors / fakeBPB.spc;
|
||||||
|
|
||||||
if(clusters < 4089)
|
if(clusters < 4089)
|
||||||
isFAT12 = true;
|
isFAT12 = true;
|
||||||
@@ -1001,12 +1005,12 @@ namespace DiscImageChef.Filesystems
|
|||||||
if(fakeBPB.sectors == 0)
|
if(fakeBPB.sectors == 0)
|
||||||
{
|
{
|
||||||
sb.AppendFormat("{0} sectors on volume ({1} bytes).", fakeBPB.big_sectors, fakeBPB.big_sectors * fakeBPB.bps).AppendLine();
|
sb.AppendFormat("{0} sectors on volume ({1} bytes).", fakeBPB.big_sectors, fakeBPB.big_sectors * fakeBPB.bps).AppendLine();
|
||||||
xmlFSType.Clusters = (long)(fakeBPB.big_sectors / fakeBPB.spc);
|
xmlFSType.Clusters = fakeBPB.spc == 0 ? fakeBPB.big_sectors : fakeBPB.big_sectors / fakeBPB.spc;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sb.AppendFormat("{0} sectors on volume ({1} bytes).", fakeBPB.sectors, fakeBPB.sectors * fakeBPB.bps).AppendLine();
|
sb.AppendFormat("{0} sectors on volume ({1} bytes).", fakeBPB.sectors, fakeBPB.sectors * fakeBPB.bps).AppendLine();
|
||||||
xmlFSType.Clusters = fakeBPB.sectors / fakeBPB.spc;
|
xmlFSType.Clusters = fakeBPB.spc == 0 ? fakeBPB.sectors : fakeBPB.sectors / fakeBPB.spc;
|
||||||
}
|
}
|
||||||
sb.AppendFormat("{0} sectors per cluster.", fakeBPB.spc).AppendLine();
|
sb.AppendFormat("{0} sectors per cluster.", fakeBPB.spc).AppendLine();
|
||||||
sb.AppendFormat("{0} clusters on volume.", xmlFSType.Clusters).AppendLine();
|
sb.AppendFormat("{0} clusters on volume.", xmlFSType.Clusters).AppendLine();
|
||||||
|
|||||||
Reference in New Issue
Block a user