From 66509e4e2f13f545fea2eb4d15ec4ac9ba8a18cb Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Mon, 19 Dec 2022 10:45:07 +0000 Subject: [PATCH] [Apple DOS filesystem] Fix file sizes. --- Aaru.Filesystems/AppleDOS/Dir.cs | 4 ---- Aaru.Filesystems/AppleDOS/File.cs | 4 ++++ Aaru.Filesystems/AppleDOS/Super.cs | 2 ++ 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Aaru.Filesystems/AppleDOS/Dir.cs b/Aaru.Filesystems/AppleDOS/Dir.cs index 639537af6..4a0a53516 100644 --- a/Aaru.Filesystems/AppleDOS/Dir.cs +++ b/Aaru.Filesystems/AppleDOS/Dir.cs @@ -82,7 +82,6 @@ public sealed partial class AppleDOS _totalFileEntries = 0; _catalogCache = new Dictionary(); _fileTypeCache = new Dictionary(); - _fileSizeCache = new Dictionary(); _lockedFiles = new List(); if(lba == 0 || @@ -125,9 +124,6 @@ public sealed partial class AppleDOS if(!_fileTypeCache.ContainsKey(filename)) _fileTypeCache.Add(filename, (byte)(entry.typeAndFlags & 0x7F)); - if(!_fileSizeCache.ContainsKey(filename)) - _fileSizeCache.Add(filename, entry.length * _vtoc.bytesPerSector); - if((entry.typeAndFlags & 0x80) == 0x80 && !_lockedFiles.Contains(filename)) _lockedFiles.Add(filename); diff --git a/Aaru.Filesystems/AppleDOS/File.cs b/Aaru.Filesystems/AppleDOS/File.cs index 2718449c5..c7f46bb3e 100644 --- a/Aaru.Filesystems/AppleDOS/File.cs +++ b/Aaru.Filesystems/AppleDOS/File.cs @@ -337,8 +337,12 @@ public sealed partial class AppleDOS if(_extentCache.ContainsKey(filename)) _extentCache.Remove(filename); + if(_fileSizeCache.ContainsKey(filename)) + _fileSizeCache.Remove(filename); + _fileCache.Add(filename, fileMs.ToArray()); _extentCache.Add(filename, tsListMs.ToArray()); + _fileSizeCache.Add(filename, (int)fileMs.Length); return ErrorNumber.NoError; } diff --git a/Aaru.Filesystems/AppleDOS/Super.cs b/Aaru.Filesystems/AppleDOS/Super.cs index 257cb3aad..2efb8074c 100644 --- a/Aaru.Filesystems/AppleDOS/Super.cs +++ b/Aaru.Filesystems/AppleDOS/Super.cs @@ -94,6 +94,8 @@ public sealed partial class AppleDOS return error; } + _fileSizeCache = new Dictionary(); + error = CacheAllFiles(); if(error != ErrorNumber.NoError)