diff --git a/Aaru.CommonTypes b/Aaru.CommonTypes index d580412b0..c723c09aa 160000 --- a/Aaru.CommonTypes +++ b/Aaru.CommonTypes @@ -1 +1 @@ -Subproject commit d580412b08047dc4fd8bec903eb1bd3d36d6ee9e +Subproject commit c723c09aaad90b73b737aa2003c21bc17fa97b5f diff --git a/Aaru.Core/Sidecar/Files.cs b/Aaru.Core/Sidecar/Files.cs index 5196ed83f..629e713ad 100644 --- a/Aaru.Core/Sidecar/Files.cs +++ b/Aaru.Core/Sidecar/Files.cs @@ -31,7 +31,6 @@ // Copyright © 2011-2023 Natalia Portillo // ****************************************************************************/ -using System; using System.Collections.Generic; using System.Linq; using Aaru.CommonTypes.AaruMetadata; @@ -165,7 +164,7 @@ public sealed partial class Sidecar StatusChangeTime = stat.StatusChangeTimeUtc }; - byte[] data = Array.Empty(); + byte[] data = null; if(stat.Length > 0) { @@ -173,28 +172,36 @@ public sealed partial class Sidecar UpdateStatus(string.Format(Localization.Core.Hashing_file_0_1, path, filename)); InitProgress2(); - while(position < stat.Length - 1048576) - { - if(_aborted) - return file; + ErrorNumber error = filesystem.OpenFile(path + "/" + filename, out IFileNode fileNode); + if(error == ErrorNumber.NoError) + { data = new byte[1048576]; - filesystem.Read(path + "/" + filename, position, 1048576, ref data); + + while(position < stat.Length - 1048576) + { + if(_aborted) + return file; + + // TODO: Better error handling + filesystem.ReadFile(fileNode, 1048576, data, out _); + + UpdateProgress2(Localization.Core.Hashing_file_byte_0_of_1, position, stat.Length); + + fileChkWorker.Update(data); + + position += 1048576; + } + + data = new byte[stat.Length - position]; + filesystem.ReadFile(fileNode, data.Length, data, out _); UpdateProgress2(Localization.Core.Hashing_file_byte_0_of_1, position, stat.Length); fileChkWorker.Update(data); - - position += 1048576; + filesystem.CloseFile(fileNode); } - data = new byte[stat.Length - position]; - filesystem.Read(path + "/" + filename, position, stat.Length - position, ref data); - - UpdateProgress2(Localization.Core.Hashing_file_byte_0_of_1, position, stat.Length); - - fileChkWorker.Update(data); - EndProgress2(); file.Checksums = fileChkWorker.End(); diff --git a/Aaru.Filesystems/AppleDOS/File.cs b/Aaru.Filesystems/AppleDOS/File.cs index c7f46bb3e..0fe9698e0 100644 --- a/Aaru.Filesystems/AppleDOS/File.cs +++ b/Aaru.Filesystems/AppleDOS/File.cs @@ -145,57 +145,28 @@ public sealed partial class AppleDOS } /// - public ErrorNumber Read(string path, long offset, long size, ref byte[] buf) + public ErrorNumber ReadFile(IFileNode node, long length, byte[] buffer, out long read) { + read = 0; + if(!_mounted) return ErrorNumber.AccessDenied; - string[] pathElements = path.Split(new[] - { - '/' - }, StringSplitOptions.RemoveEmptyEntries); - - if(pathElements.Length != 1) - return ErrorNumber.NotSupported; - - byte[] file; - string filename = pathElements[0].ToUpperInvariant(); - - if(filename.Length > 30) - return ErrorNumber.NameTooLong; - - if(_debug && (string.Compare(path, "$", StringComparison.InvariantCulture) == 0 || - string.Compare(path, "$Boot", StringComparison.InvariantCulture) == 0 || - string.Compare(path, "$Vtoc", StringComparison.InvariantCulture) == 0)) - if(string.Compare(path, "$", StringComparison.InvariantCulture) == 0) - file = _catalogBlocks; - else if(string.Compare(path, "$Vtoc", StringComparison.InvariantCulture) == 0) - file = _vtocBlocks; - else - file = _bootBlocks; - else - { - if(!_fileCache.TryGetValue(filename, out file)) - { - ErrorNumber error = CacheFile(filename); - - if(error != ErrorNumber.NoError) - return error; - - if(!_fileCache.TryGetValue(filename, out file)) - return ErrorNumber.InvalidArgument; - } - } - - if(offset >= file.Length) + if(buffer is null || + buffer.Length < length) return ErrorNumber.InvalidArgument; - if(size + offset >= file.Length) - size = file.Length - offset; + if(node is not AppleDosFileNode mynode) + return ErrorNumber.InvalidArgument; - buf = new byte[size]; + read = length; - Array.Copy(file, offset, buf, 0, size); + if(length + mynode.Offset >= mynode.Length) + read = mynode.Length - mynode.Offset; + + Array.Copy(mynode._cache, mynode.Offset, buffer, 0, read); + + mynode.Offset += read; return ErrorNumber.NoError; } diff --git a/Aaru.Filesystems/AppleMFS/File.cs b/Aaru.Filesystems/AppleMFS/File.cs index b501356f1..07fc5ffb9 100644 --- a/Aaru.Filesystems/AppleMFS/File.cs +++ b/Aaru.Filesystems/AppleMFS/File.cs @@ -218,57 +218,28 @@ public sealed partial class AppleMFS } /// - public ErrorNumber Read(string path, long offset, long size, ref byte[] buf) + public ErrorNumber ReadFile(IFileNode node, long length, byte[] buffer, out long read) { + read = 0; + if(!_mounted) return ErrorNumber.AccessDenied; - byte[] file; - ErrorNumber error = ErrorNumber.NoError; - - switch(_debug) - { - case true when string.Compare(path, "$", StringComparison.InvariantCulture) == 0: - file = _directoryBlocks; - - break; - case true when string.Compare(path, "$Boot", StringComparison.InvariantCulture) == 0 && _bootBlocks != null: - file = _bootBlocks; - - break; - case true when string.Compare(path, "$Bitmap", StringComparison.InvariantCulture) == 0: - file = _blockMapBytes; - - break; - case true when string.Compare(path, "$MDB", StringComparison.InvariantCulture) == 0: - file = _mdbBlocks; - - break; - default: - error = ReadFile(path, out file, false, false); - - break; - } - - if(error != ErrorNumber.NoError) - return error; - - if(size == 0) - { - buf = Array.Empty(); - - return ErrorNumber.NoError; - } - - if(offset >= file.Length) + if(buffer is null || + buffer.Length < length) return ErrorNumber.InvalidArgument; - if(size + offset >= file.Length) - size = file.Length - offset; + if(node is not AppleMfsFileNode mynode) + return ErrorNumber.InvalidArgument; - buf = new byte[size]; + read = length; - Array.Copy(file, offset, buf, 0, size); + if(length + mynode.Offset >= mynode.Length) + read = mynode.Length - mynode.Offset; + + Array.Copy(mynode._cache, mynode.Offset, buffer, 0, read); + + mynode.Offset += read; return ErrorNumber.NoError; } diff --git a/Aaru.Filesystems/CPM/File.cs b/Aaru.Filesystems/CPM/File.cs index 5cb3b7529..9591b4577 100644 --- a/Aaru.Filesystems/CPM/File.cs +++ b/Aaru.Filesystems/CPM/File.cs @@ -123,40 +123,28 @@ public sealed partial class CPM } /// - public ErrorNumber Read(string path, long offset, long size, ref byte[] buf) + public ErrorNumber ReadFile(IFileNode node, long length, byte[] buffer, out long read) { + read = 0; + if(!_mounted) return ErrorNumber.AccessDenied; - if(size == 0) - { - buf = Array.Empty(); - - return ErrorNumber.NoError; - } - - if(offset < 0) + if(buffer is null || + buffer.Length < length) return ErrorNumber.InvalidArgument; - string[] pathElements = path.Split(new[] - { - '/' - }, StringSplitOptions.RemoveEmptyEntries); + if(node is not CpmFileNode mynode) + return ErrorNumber.InvalidArgument; - if(pathElements.Length != 1) - return ErrorNumber.NotSupported; + read = length; - if(!_fileCache.TryGetValue(pathElements[0].ToUpperInvariant(), out byte[] file)) - return ErrorNumber.NoSuchFile; + if(length + mynode.Offset >= mynode.Length) + read = mynode.Length - mynode.Offset; - if(offset >= file.Length) - return ErrorNumber.EINVAL; + Array.Copy(mynode._cache, mynode.Offset, buffer, 0, read); - if(size + offset >= file.Length) - size = file.Length - offset; - - buf = new byte[size]; - Array.Copy(file, offset, buf, 0, size); + mynode.Offset += read; return ErrorNumber.NoError; } diff --git a/Aaru.Filesystems/FAT/File.cs b/Aaru.Filesystems/FAT/File.cs index 29cbbf3ad..3e7d49798 100644 --- a/Aaru.Filesystems/FAT/File.cs +++ b/Aaru.Filesystems/FAT/File.cs @@ -133,65 +133,52 @@ public sealed partial class FAT } /// - public ErrorNumber Read(string path, long offset, long size, ref byte[] buf) + public ErrorNumber ReadFile(IFileNode node, long length, byte[] buffer, out long read) { + read = 0; + if(!_mounted) return ErrorNumber.AccessDenied; - ErrorNumber err = Stat(path, out FileEntryInfo stat); - - if(err != ErrorNumber.NoError) - return err; - - if(stat.Attributes.HasFlag(FileAttributes.Directory) && - !_debug) - return ErrorNumber.IsDirectory; - - if(size == 0) - { - buf = Array.Empty(); - - return ErrorNumber.NoError; - } - - if(offset >= stat.Length) + if(buffer is null || + buffer.Length < length) return ErrorNumber.InvalidArgument; - if(size + offset >= stat.Length) - size = stat.Length - offset; - - uint[] clusters = GetClusters((uint)stat.Inode); - - if(clusters is null) + if(node is not FatFileNode mynode) return ErrorNumber.InvalidArgument; - long firstCluster = offset / _bytesPerCluster; - long offsetInCluster = offset % _bytesPerCluster; - long sizeInClusters = (size + offsetInCluster) / _bytesPerCluster; + read = length; - if((size + offsetInCluster) % _bytesPerCluster > 0) + if(length + mynode.Offset >= mynode.Length) + read = mynode.Length - mynode.Offset; + + long firstCluster = mynode.Offset / _bytesPerCluster; + long offsetInCluster = mynode.Offset % _bytesPerCluster; + long sizeInClusters = (read + offsetInCluster) / _bytesPerCluster; + + if((read + offsetInCluster) % _bytesPerCluster > 0) sizeInClusters++; var ms = new MemoryStream(); for(int i = 0; i < sizeInClusters; i++) { - if(i + firstCluster >= clusters.Length) + if(i + firstCluster >= mynode._clusters.Length) return ErrorNumber.InvalidArgument; ErrorNumber errno = - _image.ReadSectors(_firstClusterSector + (clusters[i + firstCluster] * _sectorsPerCluster), - _sectorsPerCluster, out byte[] buffer); + _image.ReadSectors(_firstClusterSector + (mynode._clusters[i + firstCluster] * _sectorsPerCluster), + _sectorsPerCluster, out byte[] buf); if(errno != ErrorNumber.NoError) return errno; - ms.Write(buffer, 0, buffer.Length); + ms.Write(buf, 0, buf.Length); } ms.Position = offsetInCluster; - buf = new byte[size]; - ms.EnsureRead(buf, 0, (int)size); + ms.EnsureRead(buffer, 0, (int)read); + mynode.Offset += read; return ErrorNumber.NoError; } diff --git a/Aaru.Filesystems/FATX/File.cs b/Aaru.Filesystems/FATX/File.cs index 233fc4c84..6da08e741 100644 --- a/Aaru.Filesystems/FATX/File.cs +++ b/Aaru.Filesystems/FATX/File.cs @@ -130,55 +130,53 @@ public sealed partial class XboxFatPlugin } /// - public ErrorNumber Read(string path, long offset, long size, ref byte[] buf) + public ErrorNumber ReadFile(IFileNode node, long length, byte[] buffer, out long read) { + read = 0; + if(!_mounted) return ErrorNumber.AccessDenied; - ErrorNumber err = Stat(path, out FileEntryInfo stat); - - if(err != ErrorNumber.NoError) - return err; - - if(stat.Attributes.HasFlag(FileAttributes.Directory) && - !_debug) - return ErrorNumber.IsDirectory; - - if(offset >= stat.Length) + if(buffer is null || + buffer.Length < length) return ErrorNumber.InvalidArgument; - if(size + offset >= stat.Length) - size = stat.Length - offset; + if(node is not FatxFileNode mynode) + return ErrorNumber.InvalidArgument; - uint[] clusters = GetClusters((uint)stat.Inode); + read = length; - long firstCluster = offset / _bytesPerCluster; - long offsetInCluster = offset % _bytesPerCluster; - long sizeInClusters = (size + offsetInCluster) / _bytesPerCluster; + if(length + mynode.Offset >= mynode.Length) + read = mynode.Length - mynode.Offset; - if((size + offsetInCluster) % _bytesPerCluster > 0) + long firstCluster = mynode.Offset / _bytesPerCluster; + long offsetInCluster = mynode.Offset % _bytesPerCluster; + long sizeInClusters = (read + offsetInCluster) / _bytesPerCluster; + + if((read + offsetInCluster) % _bytesPerCluster > 0) sizeInClusters++; var ms = new MemoryStream(); for(int i = 0; i < sizeInClusters; i++) { - if(i + firstCluster >= clusters.Length) + if(i + firstCluster >= mynode._clusters.Length) return ErrorNumber.InvalidArgument; ErrorNumber errno = - _imagePlugin.ReadSectors(_firstClusterSector + ((clusters[i + firstCluster] - 1) * _sectorsPerCluster), - _sectorsPerCluster, out byte[] buffer); + _imagePlugin. + ReadSectors(_firstClusterSector + ((mynode._clusters[i + firstCluster] - 1) * _sectorsPerCluster), + _sectorsPerCluster, out byte[] buf); if(errno != ErrorNumber.NoError) return errno; - ms.Write(buffer, 0, buffer.Length); + ms.Write(buf, 0, buf.Length); } ms.Position = offsetInCluster; - buf = new byte[size]; - ms.EnsureRead(buf, 0, (int)size); + ms.EnsureRead(buffer, 0, (int)read); + mynode.Offset += read; return ErrorNumber.NoError; } diff --git a/Aaru.Filesystems/ISO9660/File.cs b/Aaru.Filesystems/ISO9660/File.cs index 6abcf5640..75d5b444b 100644 --- a/Aaru.Filesystems/ISO9660/File.cs +++ b/Aaru.Filesystems/ISO9660/File.cs @@ -135,64 +135,71 @@ public sealed partial class ISO9660 // TODO: Resolve symbolic link /// - public ErrorNumber Read(string path, long offset, long size, ref byte[] buf) + public ErrorNumber ReadFile(IFileNode node, long length, byte[] buffer, out long read) { - buf = null; + read = 0; if(!_mounted) return ErrorNumber.AccessDenied; - ErrorNumber err = GetFileEntry(path, out DecodedDirectoryEntry entry); - - if(err != ErrorNumber.NoError) - return err; - - if(entry.Flags.HasFlag(FileFlags.Directory) && - !_debug) - return ErrorNumber.IsDirectory; - - if(entry.Extents is null) + if(buffer is null || + buffer.Length < length) return ErrorNumber.InvalidArgument; - if(entry.Size == 0) + if(node is not Iso9660FileNode mynode) + return ErrorNumber.InvalidArgument; + + read = length; + + if(length + mynode.Offset >= mynode.Length) + read = mynode.Length - mynode.Offset; + + long offset = mynode.Offset + (mynode._dentry.XattrLength * _blockSize); + + if(mynode._dentry.CdiSystemArea?.attributes.HasFlag(CdiAttributes.DigitalAudio) != true || + mynode._dentry.Extents.Count != 1) { - buf = Array.Empty(); + ErrorNumber err = ReadWithExtents(offset, read, mynode._dentry.Extents, + mynode._dentry.XA?.signature == XA_MAGIC && + mynode._dentry.XA?.attributes.HasFlag(XaAttributes.Interleaved) == true, + mynode._dentry.XA?.filenumber ?? 0, out byte[] buf); + + if(err != ErrorNumber.NoError) + { + read = 0; + + return err; + } + + Array.Copy(buf, 0, buffer, 0, read); + + node.Offset += read; return ErrorNumber.NoError; } - if(offset >= (long)entry.Size) - return ErrorNumber.InvalidArgument; - - if(size + offset >= (long)entry.Size) - size = (long)entry.Size - offset; - - offset += entry.XattrLength * _blockSize; - - if(entry.CdiSystemArea?.attributes.HasFlag(CdiAttributes.DigitalAudio) != true || - entry.Extents.Count != 1) - return ReadWithExtents(offset, size, entry.Extents, - entry.XA?.signature == XA_MAGIC && - entry.XA?.attributes.HasFlag(XaAttributes.Interleaved) == true, - entry.XA?.filenumber ?? 0, out buf); - try { long firstSector = offset / 2352; long offsetInSector = offset % 2352; - long sizeInSectors = (size + offsetInSector) / 2352; + long sizeInSectors = (read + offsetInSector) / 2352; - if((size + offsetInSector) % 2352 > 0) + if((read + offsetInSector) % 2352 > 0) sizeInSectors++; - ErrorNumber errno = _image.ReadSectorsLong((ulong)(entry.Extents[0].extent + firstSector), - (uint)sizeInSectors, out byte[] buffer); + ErrorNumber errno = _image.ReadSectorsLong((ulong)(mynode._dentry.Extents[0].extent + firstSector), + (uint)sizeInSectors, out byte[] buf); if(errno != ErrorNumber.NoError) - return errno; + { + read = 0; - buf = new byte[size]; - Array.Copy(buffer, offsetInSector, buf, 0, size); + return errno; + } + + Array.Copy(buf, offsetInSector, buffer, 0, read); + + node.Offset += read; return ErrorNumber.NoError; } @@ -201,6 +208,8 @@ public sealed partial class ISO9660 AaruConsole.DebugWriteLine("ISO9660 plugin", Localization.Exception_reading_CD_i_audio_file); AaruConsole.DebugWriteLine("ISO9660 plugin", "{0}", e); + read = 0; + return ErrorNumber.UnexpectedException; } } diff --git a/Aaru.Filesystems/LisaFS/File.cs b/Aaru.Filesystems/LisaFS/File.cs index 5089a71eb..a58a248d4 100644 --- a/Aaru.Filesystems/LisaFS/File.cs +++ b/Aaru.Filesystems/LisaFS/File.cs @@ -101,27 +101,30 @@ public sealed partial class LisaFS } /// - public ErrorNumber Read(string path, long offset, long size, ref byte[] buf) + public ErrorNumber ReadFile(IFileNode node, long length, byte[] buffer, out long read) { - if(size == 0) - { - buf = Array.Empty(); + read = 0; - return ErrorNumber.NoError; - } + if(!_mounted) + return ErrorNumber.AccessDenied; - if(offset < 0) + if(buffer is null || + buffer.Length < length) return ErrorNumber.InvalidArgument; - ErrorNumber error = LookupFileId(path, out short fileId, out _); + if(node is not LisaFileNode mynode) + return ErrorNumber.InvalidArgument; - if(error != ErrorNumber.NoError) - return error; + read = length; - byte[] tmp; + if(length + mynode.Offset >= mynode.Length) + read = mynode.Length - mynode.Offset; + + byte[] tmp; + ErrorNumber error; if(_debug) - switch(fileId) + switch(mynode._fileId) { case FILEID_BOOT_SIGNED: case FILEID_LOADER_SIGNED: @@ -129,28 +132,27 @@ public sealed partial class LisaFS case (short)FILEID_BITMAP: case (short)FILEID_SRECORD: case (short)FILEID_CATALOG: - error = ReadSystemFile(fileId, out tmp); + error = ReadSystemFile(mynode._fileId, out tmp); break; default: - error = ReadFile(fileId, out tmp); + error = ReadFile(mynode._fileId, out tmp); break; } else - error = ReadFile(fileId, out tmp); + error = ReadFile(mynode._fileId, out tmp); if(error != ErrorNumber.NoError) + { + read = 0; + return error; + } - if(offset >= tmp.Length) - return ErrorNumber.EINVAL; + Array.Copy(tmp, mynode.Offset, buffer, 0, read); - if(size + offset >= tmp.Length) - size = tmp.Length - offset; - - buf = new byte[size]; - Array.Copy(tmp, offset, buf, 0, size); + mynode.Offset += read; return ErrorNumber.NoError; } diff --git a/Aaru.Filesystems/Opera/File.cs b/Aaru.Filesystems/Opera/File.cs index aeb35b596..be448fede 100644 --- a/Aaru.Filesystems/Opera/File.cs +++ b/Aaru.Filesystems/Opera/File.cs @@ -122,60 +122,52 @@ public sealed partial class OperaFS } /// - public ErrorNumber Read(string path, long offset, long size, ref byte[] buf) + public ErrorNumber ReadFile(IFileNode node, long length, byte[] buffer, out long read) { - buf = null; + read = 0; if(!_mounted) return ErrorNumber.AccessDenied; - ErrorNumber err = GetFileEntry(path, out DirectoryEntryWithPointers entry); - - if(err != ErrorNumber.NoError) - return err; - - if((entry.Entry.flags & FLAGS_MASK) == (uint)FileFlags.Directory && - !_debug) - return ErrorNumber.IsDirectory; - - if(entry.Pointers.Length < 1) + if(buffer is null || + buffer.Length < length) return ErrorNumber.InvalidArgument; - if(entry.Entry.byte_count == 0) - { - buf = Array.Empty(); - - return ErrorNumber.NoError; - } - - if(offset >= entry.Entry.byte_count) + if(node is not OperaFileNode mynode) return ErrorNumber.InvalidArgument; - if(size + offset >= entry.Entry.byte_count) - size = entry.Entry.byte_count - offset; + read = length; - long firstBlock = offset / entry.Entry.block_size; - long offsetInBlock = offset % entry.Entry.block_size; - long sizeInBlocks = (size + offsetInBlock) / entry.Entry.block_size; + if(length + mynode.Offset >= mynode.Length) + read = mynode.Length - mynode.Offset; - if((size + offsetInBlock) % entry.Entry.block_size > 0) + long firstBlock = mynode.Offset / mynode._dentry.Entry.block_size; + long offsetInBlock = mynode.Offset % mynode._dentry.Entry.block_size; + long sizeInBlocks = (read + offsetInBlock) / mynode._dentry.Entry.block_size; + + if((read + offsetInBlock) % mynode._dentry.Entry.block_size > 0) sizeInBlocks++; uint fileBlockSizeRatio; if(_image.Info.SectorSize is 2336 or 2352 or 2448) - fileBlockSizeRatio = entry.Entry.block_size / 2048; + fileBlockSizeRatio = mynode._dentry.Entry.block_size / 2048; else - fileBlockSizeRatio = entry.Entry.block_size / _image.Info.SectorSize; + fileBlockSizeRatio = mynode._dentry.Entry.block_size / _image.Info.SectorSize; - ErrorNumber errno = _image.ReadSectors((ulong)(entry.Pointers[0] + (firstBlock * fileBlockSizeRatio)), - (uint)(sizeInBlocks * fileBlockSizeRatio), out byte[] buffer); + ErrorNumber errno = _image.ReadSectors((ulong)(mynode._dentry.Pointers[0] + (firstBlock * fileBlockSizeRatio)), + (uint)(sizeInBlocks * fileBlockSizeRatio), out byte[] buf); if(errno != ErrorNumber.NoError) - return errno; + { + read = 0; - buf = new byte[size]; - Array.Copy(buffer, offsetInBlock, buf, 0, size); + return errno; + } + + Array.Copy(buf, offsetInBlock, buffer, 0, read); + + mynode.Offset += read; return ErrorNumber.NoError; } diff --git a/Aaru.Filesystems/UCSDPascal/File.cs b/Aaru.Filesystems/UCSDPascal/File.cs index 8954547d3..026be5890 100644 --- a/Aaru.Filesystems/UCSDPascal/File.cs +++ b/Aaru.Filesystems/UCSDPascal/File.cs @@ -138,52 +138,27 @@ public sealed partial class PascalPlugin } /// - public ErrorNumber Read(string path, long offset, long size, ref byte[] buf) + public ErrorNumber ReadFile(IFileNode node, long length, byte[] buffer, out long read) { + read = 0; + if(!_mounted) return ErrorNumber.AccessDenied; - string[] pathElements = path.Split(new[] - { - '/' - }, StringSplitOptions.RemoveEmptyEntries); + if(buffer is null || + buffer.Length < length) + return ErrorNumber.InvalidArgument; - if(pathElements.Length != 1) - return ErrorNumber.NotSupported; + if(node is not PascalFileNode mynode) + return ErrorNumber.InvalidArgument; - byte[] file; + read = length; - if(_debug && (string.Compare(path, "$", StringComparison.InvariantCulture) == 0 || - string.Compare(path, "$Boot", StringComparison.InvariantCulture) == 0)) - file = string.Compare(path, "$", StringComparison.InvariantCulture) == 0 ? _catalogBlocks : _bootBlocks; - else - { - ErrorNumber error = GetFileEntry(path, out PascalFileEntry entry); + if(length + mynode.Offset >= mynode.Length) + read = mynode.Length - mynode.Offset; - if(error != ErrorNumber.NoError) - return error; - - error = _device.ReadSectors((ulong)entry.FirstBlock * _multiplier, - (uint)(entry.LastBlock - entry.FirstBlock) * _multiplier, out byte[] tmp); - - if(error != ErrorNumber.NoError) - return error; - - file = new byte[((entry.LastBlock - entry.FirstBlock - 1) * _device.Info.SectorSize * _multiplier) + - entry.LastBytes]; - - Array.Copy(tmp, 0, file, 0, file.Length); - } - - if(offset >= file.Length) - return ErrorNumber.EINVAL; - - if(size + offset >= file.Length) - size = file.Length - offset; - - buf = new byte[size]; - - Array.Copy(file, offset, buf, 0, size); + Array.Copy(mynode._cache, mynode.Offset, buffer, 0, read); + mynode.Offset += read; return ErrorNumber.NoError; } diff --git a/Aaru.Gui/ViewModels/Panels/SubdirectoryViewModel.cs b/Aaru.Gui/ViewModels/Panels/SubdirectoryViewModel.cs index 48ff82890..8de390560 100644 --- a/Aaru.Gui/ViewModels/Panels/SubdirectoryViewModel.cs +++ b/Aaru.Gui/ViewModels/Panels/SubdirectoryViewModel.cs @@ -38,6 +38,7 @@ using System.Linq; using System.Reactive; using System.Threading.Tasks; using Aaru.CommonTypes.Enums; +using Aaru.CommonTypes.Interfaces; using Aaru.CommonTypes.Interop; using Aaru.CommonTypes.Structs; using Aaru.Console; @@ -316,9 +317,15 @@ public sealed class SubdirectoryViewModel try { - byte[] outBuf = Array.Empty(); + byte[] outBuf = new byte[file.Stat.Length]; - ErrorNumber error = _model.Plugin.Read(_model.Path + "/" + file.Name, 0, file.Stat.Length, ref outBuf); + ErrorNumber error = _model.Plugin.OpenFile(_model.Path + "/" + file.Name, out IFileNode fileNode); + + if(error == ErrorNumber.NoError) + { + error = _model.Plugin.ReadFile(fileNode, file.Stat.Length, outBuf, out _); + _model.Plugin.CloseFile(fileNode); + } if(error != ErrorNumber.NoError) { diff --git a/Aaru.Tests/Filesystems/ReadOnlyFilesystemTest.cs b/Aaru.Tests/Filesystems/ReadOnlyFilesystemTest.cs index f407bcf8f..298d612aa 100644 --- a/Aaru.Tests/Filesystems/ReadOnlyFilesystemTest.cs +++ b/Aaru.Tests/Filesystems/ReadOnlyFilesystemTest.cs @@ -309,7 +309,14 @@ public abstract class ReadOnlyFilesystemTest : FilesystemTest static string BuildFile(IReadOnlyFilesystem fs, string path, long length) { byte[] buffer = new byte[length]; - fs.Read(path, 0, length, ref buffer); + + ErrorNumber error = fs.OpenFile(path, out IFileNode fileNode); + + if(error != ErrorNumber.NoError) + return Md5Context.Data(buffer, out _); + + fs.ReadFile(fileNode, length, buffer, out _); + fs.CloseFile(fileNode); return Md5Context.Data(buffer, out _); } @@ -426,7 +433,7 @@ public abstract class ReadOnlyFilesystemTest : FilesystemTest if(child.Value.Info.Attributes.HasFlag(FileAttributes.Directory)) { - ret = fs.Read(childPath, 0, 1, ref buffer); + ret = fs.OpenFile(childPath, out _); Assert.AreEqual(ErrorNumber.IsDirectory, ret, string.Format(Localization.Got_wrong_data_for_directory_0_in_1, childPath, testFile)); @@ -507,14 +514,26 @@ public abstract class ReadOnlyFilesystemTest : FilesystemTest static void TestFile(IReadOnlyFilesystem fs, string path, string md5, long length, string testFile) { byte[] buffer = new byte[length]; - ErrorNumber ret = fs.Read(path, 0, length, ref buffer); + ErrorNumber ret = fs.OpenFile(path, out IFileNode fileNode); Assert.AreEqual(ErrorNumber.NoError, ret, string.Format(Localization.Unexpected_error_0_when_reading_1_in_2, ret, path, testFile)); + ret = fs.ReadFile(fileNode, length, buffer, out long readBytes); + + Assert.AreEqual(ErrorNumber.NoError, ret, + string.Format(Localization.Unexpected_error_0_when_reading_1_in_2, ret, path, testFile)); + + Assert.AreEqual(length, readBytes, + string.Format(Localization.Got_less_bytes_0_than_expected_1_when_reading_2_in_3, readBytes, + length, path, testFile)); + + fs.CloseFile(fileNode); + string data = Md5Context.Data(buffer, out _); - Assert.AreEqual(md5, data, $"Got MD5 {data} for \"{path}\" in {testFile} but expected {md5}"); + Assert.AreEqual(md5, data, + string.Format(Localization.Got_MD5_0_for_1_in_2_but_expected_3, data, path, testFile, md5)); } static void TestFileXattrs(IReadOnlyFilesystem fs, string path, Dictionary xattrs, string testFile) diff --git a/Aaru.Tests/Issues/FsExtractHashIssueTest.cs b/Aaru.Tests/Issues/FsExtractHashIssueTest.cs index c9a77a0d1..f13f67728 100644 --- a/Aaru.Tests/Issues/FsExtractHashIssueTest.cs +++ b/Aaru.Tests/Issues/FsExtractHashIssueTest.cs @@ -251,14 +251,24 @@ public abstract class FsExtractHashIssueTest expectedXattrs); } - byte[] outBuf = Array.Empty(); + byte[] buffer = new byte[stat.Length]; + ErrorNumber ret = fs.OpenFile(path + "/" + entry, out IFileNode fileNode); - error = fs.Read(path + "/" + entry, 0, stat.Length, ref outBuf); + Assert.AreEqual(ErrorNumber.NoError, ret, + string.Format(Localization.Error_0_reading_file_1, ret, path + "/" + entry)); - Assert.AreEqual(ErrorNumber.NoError, error, - string.Format(Localization.Error_0_reading_file_1, error, path + "/" + entry)); + ret = fs.ReadFile(fileNode, stat.Length, buffer, out long readBytes); - string calculatedMd5 = Md5Context.Data(outBuf, out _); + Assert.AreEqual(ErrorNumber.NoError, ret, + string.Format(Localization.Error_0_reading_file_1, ret, path + "/" + entry)); + + Assert.AreEqual(stat.Length, readBytes, + string.Format(Localization.Error_0_reading_file_1, readBytes, stat.Length, + path + "/" + entry)); + + fs.CloseFile(fileNode); + + string calculatedMd5 = Md5Context.Data(buffer, out _); Assert.AreEqual(fileData.Md5, calculatedMd5, string.Format(Localization.Invalid_checksum_for_file_0, path + "/" + entry)); diff --git a/Aaru.Tests/Issues/FsExtractIssueTest.cs b/Aaru.Tests/Issues/FsExtractIssueTest.cs index f505c532a..717c653af 100644 --- a/Aaru.Tests/Issues/FsExtractIssueTest.cs +++ b/Aaru.Tests/Issues/FsExtractIssueTest.cs @@ -168,12 +168,20 @@ public abstract class FsExtractIssueTest } } - byte[] outBuf = Array.Empty(); + byte[] buffer = new byte[stat.Length]; + ErrorNumber ret = fs.OpenFile(path + "/" + entry, out IFileNode fileNode); - error = fs.Read(path + "/" + entry, 0, stat.Length, ref outBuf); + Assert.AreEqual(ErrorNumber.NoError, ret, + string.Format(Localization.Error_0_reading_file_1, ret, path + "/" + entry)); - Assert.AreEqual(ErrorNumber.NoError, error, - string.Format(Localization.Error_0_reading_file_1, error, path + "/" + entry)); + ret = fs.ReadFile(fileNode, stat.Length, buffer, out long readBytes); + + Assert.AreEqual(ErrorNumber.NoError, ret, + string.Format(Localization.Error_0_reading_file_1, ret, path + "/" + entry)); + + Assert.AreEqual(stat.Length, readBytes, + string.Format(Localization.Error_0_reading_file_1, readBytes, stat.Length, + path + "/" + entry)); } } } \ No newline at end of file diff --git a/Aaru.Tests/Localization/Localization.Designer.cs b/Aaru.Tests/Localization/Localization.Designer.cs index dc44d41fe..75f1fbb8c 100644 --- a/Aaru.Tests/Localization/Localization.Designer.cs +++ b/Aaru.Tests/Localization/Localization.Designer.cs @@ -11,32 +11,46 @@ namespace Aaru.Tests { using System; - [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [System.Diagnostics.DebuggerNonUserCodeAttribute()] - [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Localization { - private static System.Resources.ResourceManager resourceMan; + private static global::System.Resources.ResourceManager resourceMan; - private static System.Globalization.CultureInfo resourceCulture; + private static global::System.Globalization.CultureInfo resourceCulture; - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] internal Localization() { } - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] - internal static System.Resources.ResourceManager ResourceManager { + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { get { - if (object.Equals(null, resourceMan)) { - System.Resources.ResourceManager temp = new System.Resources.ResourceManager("Aaru.Tests.Localization.Localization", typeof(Localization).Assembly); + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Aaru.Tests.Localization.Localization", typeof(Localization).Assembly); resourceMan = temp; } return resourceMan; } } - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] - internal static System.Globalization.CultureInfo Culture { + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { get { return resourceCulture; } @@ -45,1042 +59,1579 @@ namespace Aaru.Tests { } } - internal static string Size_0 { - get { - return ResourceManager.GetString("Size_0", resourceCulture); - } - } - - internal static string Decoded_0 { - get { - return ResourceManager.GetString("Decoded_0", resourceCulture); - } - } - - internal static string Manufacturer_0 { - get { - return ResourceManager.GetString("Manufacturer_0", resourceCulture); - } - } - - internal static string Product_name_0 { - get { - return ResourceManager.GetString("Product_name_0", resourceCulture); - } - } - - internal static string Product_revision_0 { - get { - return ResourceManager.GetString("Product_revision_0", resourceCulture); - } - } - - internal static string Serial_number_0 { - get { - return ResourceManager.GetString("Serial_number_0", resourceCulture); - } - } - - internal static string Manufacturing_date_0 { - get { - return ResourceManager.GetString("Manufacturing_date_0", resourceCulture); - } - } - - internal static string CRC_0 { - get { - return ResourceManager.GetString("CRC_0", resourceCulture); - } - } - - internal static string Structure_version_0 { - get { - return ResourceManager.GetString("Structure_version_0", resourceCulture); - } - } - - internal static string Specification_version_0 { - get { - return ResourceManager.GetString("Specification_version_0", resourceCulture); - } - } - - internal static string TAAC_0 { - get { - return ResourceManager.GetString("TAAC_0", resourceCulture); - } - } - - internal static string NSAC_0 { - get { - return ResourceManager.GetString("NSAC_0", resourceCulture); - } - } - - internal static string Transfer_speed_0 { - get { - return ResourceManager.GetString("Transfer_speed_0", resourceCulture); - } - } - - internal static string Classes_0 { - get { - return ResourceManager.GetString("Classes_0", resourceCulture); - } - } - - internal static string Read_block_length_0 { - get { - return ResourceManager.GetString("Read_block_length_0", resourceCulture); - } - } - - internal static string Reads_partial_blocks_0 { - get { - return ResourceManager.GetString("Reads_partial_blocks_0", resourceCulture); - } - } - - internal static string Writes_misaligned_blocks_0 { - get { - return ResourceManager.GetString("Writes_misaligned_blocks_0", resourceCulture); - } - } - - internal static string Reads_misaligned_blocks_0 { - get { - return ResourceManager.GetString("Reads_misaligned_blocks_0", resourceCulture); - } - } - - internal static string DSR_implemented_0 { - get { - return ResourceManager.GetString("DSR_implemented_0", resourceCulture); - } - } - - internal static string Card_size_0 { - get { - return ResourceManager.GetString("Card_size_0", resourceCulture); - } - } - - internal static string Reading_current_at_minimum_Vdd_0 { - get { - return ResourceManager.GetString("Reading_current_at_minimum_Vdd_0", resourceCulture); - } - } - - internal static string Reading_current_at_maximum_Vdd_0 { - get { - return ResourceManager.GetString("Reading_current_at_maximum_Vdd_0", resourceCulture); - } - } - - internal static string Writing_current_at_minimum_Vdd_0 { - get { - return ResourceManager.GetString("Writing_current_at_minimum_Vdd_0", resourceCulture); - } - } - - internal static string Writing_current_at_maximum_Vdd_0 { - get { - return ResourceManager.GetString("Writing_current_at_maximum_Vdd_0", resourceCulture); - } - } - - internal static string Card_size_multiplier_0 { - get { - return ResourceManager.GetString("Card_size_multiplier_0", resourceCulture); - } - } - - internal static string Erase_sector_size_0 { - get { - return ResourceManager.GetString("Erase_sector_size_0", resourceCulture); - } - } - - internal static string Erase_group_size_0 { - get { - return ResourceManager.GetString("Erase_group_size_0", resourceCulture); - } - } - - internal static string Write_protect_group_size_0 { - get { - return ResourceManager.GetString("Write_protect_group_size_0", resourceCulture); - } - } - - internal static string Write_protect_group_enable_0 { - get { - return ResourceManager.GetString("Write_protect_group_enable_0", resourceCulture); - } - } - - internal static string Default_ECC_0 { - get { - return ResourceManager.GetString("Default_ECC_0", resourceCulture); - } - } - - internal static string Read_to_write_factor_0 { - get { - return ResourceManager.GetString("Read_to_write_factor_0", resourceCulture); - } - } - - internal static string write_block_length_0 { - get { - return ResourceManager.GetString("write_block_length_0", resourceCulture); - } - } - - internal static string Writes_partial_blocks_0 { - get { - return ResourceManager.GetString("Writes_partial_blocks_0", resourceCulture); - } - } - - internal static string File_format_group_0 { - get { - return ResourceManager.GetString("File_format_group_0", resourceCulture); - } - } - - internal static string Copy_0 { - get { - return ResourceManager.GetString("Copy_0", resourceCulture); - } - } - - internal static string Permanent_write_protect_0 { - get { - return ResourceManager.GetString("Permanent_write_protect_0", resourceCulture); - } - } - - internal static string Temporary_write_protect_0 { - get { - return ResourceManager.GetString("Temporary_write_protect_0", resourceCulture); - } - } - - internal static string File_format_0 { - get { - return ResourceManager.GetString("File_format_0", resourceCulture); - } - } - - internal static string ECC_0 { - get { - return ResourceManager.GetString("ECC_0", resourceCulture); - } - } - - internal static string Not_decoded_0 { - get { - return ResourceManager.GetString("Not_decoded_0", resourceCulture); - } - } - - internal static string Version_0 { - get { - return ResourceManager.GetString("Version_0", resourceCulture); - } - } - - internal static string Erase_block_enable_0 { - get { - return ResourceManager.GetString("Erase_block_enable_0", resourceCulture); - } - } - - internal static string Data_stat_after_erase_0 { - get { - return ResourceManager.GetString("Data_stat_after_erase_0", resourceCulture); - } - } - - internal static string Security_0 { - get { - return ResourceManager.GetString("Security_0", resourceCulture); - } - } - - internal static string Bus_widths_0 { - get { - return ResourceManager.GetString("Bus_widths_0", resourceCulture); - } - } - - internal static string Spec_3_0 { - get { - return ResourceManager.GetString("Spec_3_0", resourceCulture); - } - } - - internal static string Extended_security_0 { - get { - return ResourceManager.GetString("Extended_security_0", resourceCulture); - } - } - - internal static string Spec_4_0 { - get { - return ResourceManager.GetString("Spec_4_0", resourceCulture); - } - } - - internal static string Spec_X_0 { - get { - return ResourceManager.GetString("Spec_X_0", resourceCulture); - } - } - - internal static string Command_support_0 { - get { - return ResourceManager.GetString("Command_support_0", resourceCulture); - } - } - - internal static string Manufacturer_reserved_0 { - get { - return ResourceManager.GetString("Manufacturer_reserved_0", resourceCulture); - } - } - - internal static string Open_0 { - get { - return ResourceManager.GetString("Open_0", resourceCulture); - } - } - - internal static string Sectors_0 { - get { - return ResourceManager.GetString("Sectors_0", resourceCulture); - } - } - - internal static string Sector_size_0 { - get { - return ResourceManager.GetString("Sector_size_0", resourceCulture); - } - } - - internal static string Media_type_0 { - get { - return ResourceManager.GetString("Media_type_0", resourceCulture); - } - } - + /// + /// Looks up a localized string similar to {0} not found. + /// internal static string _0_not_found { get { return ResourceManager.GetString("_0_not_found", resourceCulture); } } - internal static string Filter_0 { - get { - return ResourceManager.GetString("Filter_0", resourceCulture); - } - } - - internal static string Image_format_0 { - get { - return ResourceManager.GetString("Image_format_0", resourceCulture); - } - } - - internal static string Cannot_open_image_for_0 { - get { - return ResourceManager.GetString("Cannot_open_image_for_0", resourceCulture); - } - } - - internal static string No_partitions_found_for_0 { - get { - return ResourceManager.GetString("No_partitions_found_for_0", resourceCulture); - } - } - - internal static string Filesystem_not_identified_for_0 { - get { - return ResourceManager.GetString("Filesystem_not_identified_for_0", resourceCulture); - } - } - - internal static string No_filesystems_found_for_0 { - get { - return ResourceManager.GetString("No_filesystems_found_for_0", resourceCulture); - } - } - - internal static string Not_identified_for_0 { - get { - return ResourceManager.GetString("Not_identified_for_0", resourceCulture); - } - } - - internal static string Could_not_instantiate_filesystem_for_0 { - get { - return ResourceManager.GetString("Could_not_instantiate_filesystem_for_0", resourceCulture); - } - } - - internal static string Application_ID_0 { - get { - return ResourceManager.GetString("Application_ID_0", resourceCulture); - } - } - - internal static string Bootable_0 { - get { - return ResourceManager.GetString("Bootable_0", resourceCulture); - } - } - - internal static string Clusters_0 { - get { - return ResourceManager.GetString("Clusters_0", resourceCulture); - } - } - - internal static string Cluster_size_0 { - get { - return ResourceManager.GetString("Cluster_size_0", resourceCulture); - } - } - - internal static string System_ID_0 { - get { - return ResourceManager.GetString("System_ID_0", resourceCulture); - } - } - - internal static string Filesystem_type_0 { - get { - return ResourceManager.GetString("Filesystem_type_0", resourceCulture); - } - } - - internal static string Volume_name_0 { - get { - return ResourceManager.GetString("Volume_name_0", resourceCulture); - } - } - - internal static string Volume_serial_0 { - get { - return ResourceManager.GetString("Volume_serial_0", resourceCulture); - } - } - - internal static string Unmountable_0 { - get { - return ResourceManager.GetString("Unmountable_0", resourceCulture); - } - } - - internal static string Unexpected_error_0_when_reading_directory_1_of_2 { - get { - return ResourceManager.GetString("Unexpected_error_0_when_reading_directory_1_of_2", resourceCulture); - } - } - - internal static string Unexpected_error_0_retrieving_stats_for_1_in_2 { - get { - return ResourceManager.GetString("Unexpected_error_0_retrieving_stats_for_1_in_2", resourceCulture); - } - } - - internal static string Wrong_info_for_0_in_1 { - get { - return ResourceManager.GetString("Wrong_info_for_0_in_1", resourceCulture); - } - } - - internal static string Got_wrong_data_for_directory_0_in_1 { - get { - return ResourceManager.GetString("Got_wrong_data_for_directory_0_in_1", resourceCulture); - } - } - - internal static string Contents_for_0_in_1_must_be_defined_in_unit_test_declaration { - get { - return ResourceManager.GetString("Contents_for_0_in_1_must_be_defined_in_unit_test_declaration", resourceCulture); - } - } - - internal static string Got_wrong_data_for_symbolic_link_0_in_1 { - get { - return ResourceManager.GetString("Got_wrong_data_for_symbolic_link_0_in_1", resourceCulture); - } - } - - internal static string Invalid_target_for_symbolic_link_0_in_1 { - get { - return ResourceManager.GetString("Invalid_target_for_symbolic_link_0_in_1", resourceCulture); - } - } - - internal static string Defined_extended_attributes_for_0_in_1_are_not_supported_by_filesystem { - get { - return ResourceManager.GetString("Defined_extended_attributes_for_0_in_1_are_not_supported_by_filesystem", resourceCulture); - } - } - - internal static string Unexpected_error_0_when_listing_extended_attributes_for_1_in_2 { - get { - return ResourceManager.GetString("Unexpected_error_0_when_listing_extended_attributes_for_1_in_2", resourceCulture); - } - } - - internal static string Extended_attributes_for_0_in_1_must_be_defined_in_unit_test_declaration { - get { - return ResourceManager.GetString("Extended_attributes_for_0_in_1_must_be_defined_in_unit_test_declaration", resourceCulture); - } - } - - internal static string Could_not_find_the_children_of_0_in_1_2 { - get { - return ResourceManager.GetString("Could_not_find_the_children_of_0_in_1_2", resourceCulture); - } - } - - internal static string Found_the_following_unexpected_children_of_0_in_1_2 { - get { - return ResourceManager.GetString("Found_the_following_unexpected_children_of_0_in_1_2", resourceCulture); - } - } - - internal static string Unexpected_error_0_when_reading_1_in_2 { - get { - return ResourceManager.GetString("Unexpected_error_0_when_reading_1_in_2", resourceCulture); - } - } - - internal static string Unexpected_error_0_retrieving_extended_attributes_for_1_in_2 { - get { - return ResourceManager.GetString("Unexpected_error_0_retrieving_extended_attributes_for_1_in_2", resourceCulture); - } - } - - internal static string Got_MD5_0_for_1_of_2_in_3_but_expected_4 { - get { - return ResourceManager.GetString("Got_MD5_0_for_1_of_2_in_3_but_expected_4", resourceCulture); - } - } - - internal static string Could_not_find_the_following_extended_attributes_of_0_in_1_2 { - get { - return ResourceManager.GetString("Could_not_find_the_following_extended_attributes_of_0_in_1_2", resourceCulture); - } - } - - internal static string Found_the_following_unexpected_extended_attributes_of_0_in_1_2 { - get { - return ResourceManager.GetString("Found_the_following_unexpected_extended_attributes_of_0_in_1_2", resourceCulture); - } - } - - internal static string Hash_0 { - get { - return ResourceManager.GetString("Hash_0", resourceCulture); - } - } - - internal static string Expected_0_partitions_in_1_but_found_2 { - get { - return ResourceManager.GetString("Expected_0_partitions_in_1_but_found_2", resourceCulture); - } - } - - internal static string Expected_partition_0_to_start_at_sector_1_but_found_it_starts_at_2_in_3 { - get { - return ResourceManager.GetString("Expected_partition_0_to_start_at_sector_1_but_found_it_starts_at_2_in_3", resourceCulture); - } - } - - internal static string Expected_partition_0_to_have_1_sectors_but_found_it_has_2_sectors_in_3 { - get { - return ResourceManager.GetString("Expected_partition_0_to_have_1_sectors_but_found_it_has_2_sectors_in_3", resourceCulture); - } - } - - internal static string Could_not_instantiate_filesystem_plugin { - get { - return ResourceManager.GetString("Could_not_instantiate_filesystem_plugin", resourceCulture); - } - } - - internal static string Could_not_instantiate_filesystem_0 { - get { - return ResourceManager.GetString("Could_not_instantiate_filesystem_0", resourceCulture); - } - } - - internal static string Could_not_mount_0_in_partition_1 { - get { - return ResourceManager.GetString("Could_not_mount_0_in_partition_1", resourceCulture); - } - } - - internal static string Tracks_0 { - get { - return ResourceManager.GetString("Tracks_0", resourceCulture); - } - } - - internal static string Track_session_0 { - get { - return ResourceManager.GetString("Track_session_0", resourceCulture); - } - } - - internal static string Track_start_0 { - get { - return ResourceManager.GetString("Track_start_0", resourceCulture); - } - } - - internal static string Track_end_0 { - get { - return ResourceManager.GetString("Track_end_0", resourceCulture); - } - } - - internal static string Track_pregap_0 { - get { - return ResourceManager.GetString("Track_pregap_0", resourceCulture); - } - } - - internal static string Track_flags_0 { - get { - return ResourceManager.GetString("Track_flags_0", resourceCulture); - } - } - - internal static string Last_sector_for_tracks_is_0_but_it_is_1_for_image { - get { - return ResourceManager.GetString("Last_sector_for_tracks_is_0_but_it_is_1_for_image", resourceCulture); - } - } - - internal static string Expected_0_filesystems_in_1_but_found_2 { - get { - return ResourceManager.GetString("Expected_0_filesystems_in_1_but_found_2", resourceCulture); - } - } - - internal static string Could_not_instantiate_filesystem_for_0_track_1_filesystem_2 { - get { - return ResourceManager.GetString("Could_not_instantiate_filesystem_for_0_track_1_filesystem_2", resourceCulture); - } - } - - internal static string Subchannel_hash_0 { - get { - return ResourceManager.GetString("Subchannel_hash_0", resourceCulture); - } - } - - internal static string Is_tape_0 { - get { - return ResourceManager.GetString("Is_tape_0", resourceCulture); - } - } - - internal static string Tape_files_0 { - get { - return ResourceManager.GetString("Tape_files_0", resourceCulture); - } - } - - internal static string Tape_partitions_0 { - get { - return ResourceManager.GetString("Tape_partitions_0", resourceCulture); - } - } - - internal static string Cannot_open_specified_file { - get { - return ResourceManager.GetString("Cannot_open_specified_file", resourceCulture); - } - } - - internal static string Image_format_not_identified_not_proceeding_with_analysis { - get { - return ResourceManager.GetString("Image_format_not_identified_not_proceeding_with_analysis", resourceCulture); - } - } - - internal static string Unable_to_open_image_format { - get { - return ResourceManager.GetString("Unable_to_open_image_format", resourceCulture); - } - } - - internal static string No_partitions_found { - get { - return ResourceManager.GetString("No_partitions_found", resourceCulture); - } - } - - internal static string Excepted_0_partitions_but_found_1 { - get { - return ResourceManager.GetString("Excepted_0_partitions_but_found_1", resourceCulture); - } - } - - internal static string Expected_no_filesystems_identified_in_partition_0_but_found_1 { - get { - return ResourceManager.GetString("Expected_no_filesystems_identified_in_partition_0_but_found_1", resourceCulture); - } - } - - internal static string Expected_0_filesystems_identified_in_partition_1_but_found_2 { - get { - return ResourceManager.GetString("Expected_0_filesystems_identified_in_partition_1_but_found_2", resourceCulture); - } - } - - internal static string Excepted_volume_name_0_for_filesystem_1_in_partition_2_but_found_3 { - get { - return ResourceManager.GetString("Excepted_volume_name_0_for_filesystem_1_in_partition_2_but_found_3", resourceCulture); - } - } - - internal static string Expected_directories_not_found { - get { - return ResourceManager.GetString("Expected_directories_not_found", resourceCulture); - } - } - - internal static string Expected_files_not_found { - get { - return ResourceManager.GetString("Expected_files_not_found", resourceCulture); - } - } - - internal static string Error_0_reading_root_directory_0 { - get { - return ResourceManager.GetString("Error_0_reading_root_directory_0", resourceCulture); - } - } - - internal static string Error_getting_stat_for_entry_0 { - get { - return ResourceManager.GetString("Error_getting_stat_for_entry_0", resourceCulture); - } - } - - internal static string Found_unexpected_directory_0 { - get { - return ResourceManager.GetString("Found_unexpected_directory_0", resourceCulture); - } - } - - internal static string Found_unexpected_file_0 { - get { - return ResourceManager.GetString("Found_unexpected_file_0", resourceCulture); - } - } - - internal static string Error_0_getting_extended_attributes_for_entry_1 { - get { - return ResourceManager.GetString("Error_0_getting_extended_attributes_for_entry_1", resourceCulture); - } - } - - internal static string Found_unexpected_extended_attribute_0_in_file_1 { - get { - return ResourceManager.GetString("Found_unexpected_extended_attribute_0_in_file_1", resourceCulture); - } - } - - internal static string Error_0_reading_extended_attributes_for_entry_1 { - get { - return ResourceManager.GetString("Error_0_reading_extended_attributes_for_entry_1", resourceCulture); - } - } - - internal static string Invalid_checksum_for_xattr_0_for_file_1 { - get { - return ResourceManager.GetString("Invalid_checksum_for_xattr_0_for_file_1", resourceCulture); - } - } - - internal static string Expected_extended_attributes_not_found_for_file_0 { - get { - return ResourceManager.GetString("Expected_extended_attributes_not_found_for_file_0", resourceCulture); - } - } - - internal static string Error_0_reading_file_1 { - get { - return ResourceManager.GetString("Error_0_reading_file_1", resourceCulture); - } - } - - internal static string Invalid_checksum_for_file_0 { - get { - return ResourceManager.GetString("Invalid_checksum_for_file_0", resourceCulture); - } - } - - internal static string No_filesystems_found { - get { - return ResourceManager.GetString("No_filesystems_found", resourceCulture); - } - } - - internal static string Test_file_not_found { - get { - return ResourceManager.GetString("Test_file_not_found", resourceCulture); - } - } - - internal static string Filter_for_test_file_is_not_detected { - get { - return ResourceManager.GetString("Filter_for_test_file_is_not_detected", resourceCulture); - } - } - - internal static string Image_format_for_test_file_is_not_detected { - get { - return ResourceManager.GetString("Image_format_for_test_file_is_not_detected", resourceCulture); - } - } - - internal static string Cannot_open_image_for_test_file { - get { - return ResourceManager.GetString("Cannot_open_image_for_test_file", resourceCulture); - } - } - - internal static string Output_file_already_exists_not_continuing { - get { - return ResourceManager.GetString("Output_file_already_exists_not_continuing", resourceCulture); - } - } - - internal static string Input_image_format_not_identified_not_proceeding_with_conversion { - get { - return ResourceManager.GetString("Input_image_format_not_identified_not_proceeding_with_conversion", resourceCulture); - } - } - - internal static string Output_format_does_not_support_media_type_cannot_continue { - get { - return ResourceManager.GetString("Output_format_does_not_support_media_type_cannot_continue", resourceCulture); - } - } - - internal static string Input_image_does_not_support_long_sectors { - get { - return ResourceManager.GetString("Input_image_does_not_support_long_sectors", resourceCulture); - } - } - - internal static string Could_not_treat_existing_image_as_optical_disc { - get { - return ResourceManager.GetString("Could_not_treat_existing_image_as_optical_disc", resourceCulture); - } - } - - internal static string Could_not_treat_new_image_as_optical_disc { - get { - return ResourceManager.GetString("Could_not_treat_new_image_as_optical_disc", resourceCulture); - } - } - - internal static string Existing_image_contains_no_tracks { - get { - return ResourceManager.GetString("Existing_image_contains_no_tracks", resourceCulture); - } - } - - internal static string Error_0_creating_output_image { - get { - return ResourceManager.GetString("Error_0_creating_output_image", resourceCulture); - } - } - - internal static string Error_0_setting_metadata { - get { - return ResourceManager.GetString("Error_0_setting_metadata", resourceCulture); - } - } - - internal static string Converting_media_tag_0 { - get { - return ResourceManager.GetString("Converting_media_tag_0", resourceCulture); - } - } - + /// + /// Looks up a localized string similar to {0} sectors to convert. + /// internal static string _0_sectors_to_convert { get { return ResourceManager.GetString("_0_sectors_to_convert", resourceCulture); } } - internal static string Error_0_sending_tracks_list_to_output_image { + /// + /// Looks up a localized string similar to Application ID: {0}. + /// + internal static string Application_ID_0 { get { - return ResourceManager.GetString("Error_0_sending_tracks_list_to_output_image", resourceCulture); + return ResourceManager.GetString("Application_ID_0", resourceCulture); } } - internal static string Error_0_writing_sector_1_not_continuing { + /// + /// Looks up a localized string similar to Bootable: {0}. + /// + internal static string Bootable_0 { get { - return ResourceManager.GetString("Error_0_writing_sector_1_not_continuing", resourceCulture); + return ResourceManager.GetString("Bootable_0", resourceCulture); } } - internal static string Error_0_reading_tag_not_continuing { + /// + /// Looks up a localized string similar to Bus widths - {0}. + /// + internal static string Bus_widths_0 { get { - return ResourceManager.GetString("Error_0_reading_tag_not_continuing", resourceCulture); + return ResourceManager.GetString("Bus_widths_0", resourceCulture); } } - internal static string Error_0_writing_tag_not_continuing { + /// + /// Looks up a localized string similar to Cannot open image for {0}. + /// + internal static string Cannot_open_image_for_0 { get { - return ResourceManager.GetString("Error_0_writing_tag_not_continuing", resourceCulture); + return ResourceManager.GetString("Cannot_open_image_for_0", resourceCulture); } } - internal static string Error_0_writing_tag_for_sector_1_not_continuing { + /// + /// Looks up a localized string similar to Cannot open image for test file. + /// + internal static string Cannot_open_image_for_test_file { get { - return ResourceManager.GetString("Error_0_writing_tag_for_sector_1_not_continuing", resourceCulture); + return ResourceManager.GetString("Cannot_open_image_for_test_file", resourceCulture); } } - internal static string Error_0_closing_output_image_Contents_are_not_correct { + /// + /// Looks up a localized string similar to Cannot open specified file.. + /// + internal static string Cannot_open_specified_file { get { - return ResourceManager.GetString("Error_0_closing_output_image_Contents_are_not_correct", resourceCulture); + return ResourceManager.GetString("Cannot_open_specified_file", resourceCulture); } } - internal static string Hashes_are_different { + /// + /// Looks up a localized string similar to Card size - {0}. + /// + internal static string Card_size_0 { get { - return ResourceManager.GetString("Hashes_are_different", resourceCulture); + return ResourceManager.GetString("Card_size_0", resourceCulture); } } - internal static string Image_format_for_test_file_is_not_for_an_optical_disc { + /// + /// Looks up a localized string similar to Card size multiplier - {0}. + /// + internal static string Card_size_multiplier_0 { get { - return ResourceManager.GetString("Image_format_for_test_file_is_not_for_an_optical_disc", resourceCulture); + return ResourceManager.GetString("Card_size_multiplier_0", resourceCulture); } } - internal static string Partitions_0 { + /// + /// Looks up a localized string similar to Classes - {0}. + /// + internal static string Classes_0 { get { - return ResourceManager.GetString("Partitions_0", resourceCulture); + return ResourceManager.GetString("Classes_0", resourceCulture); } } + /// + /// Looks up a localized string similar to Cluster size: {0}. + /// + internal static string Cluster_size_0 { + get { + return ResourceManager.GetString("Cluster_size_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Clusters: {0}. + /// + internal static string Clusters_0 { + get { + return ResourceManager.GetString("Clusters_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Command support - {0}. + /// + internal static string Command_support_0 { + get { + return ResourceManager.GetString("Command_support_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Contents for "{0}" in {1} must be defined in unit test declaration!. + /// + internal static string Contents_for_0_in_1_must_be_defined_in_unit_test_declaration { + get { + return ResourceManager.GetString("Contents_for_0_in_1_must_be_defined_in_unit_test_declaration", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Converting media tag {0}. + /// + internal static string Converting_media_tag_0 { + get { + return ResourceManager.GetString("Converting_media_tag_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Copy - {0}. + /// + internal static string Copy_0 { + get { + return ResourceManager.GetString("Copy_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Could not find the children of "{0}" in {1}: {2}. + /// + internal static string Could_not_find_the_children_of_0_in_1_2 { + get { + return ResourceManager.GetString("Could_not_find_the_children_of_0_in_1_2", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Could not find the following extended attributes of "{0}" in {1}: {2}. + /// + internal static string Could_not_find_the_following_extended_attributes_of_0_in_1_2 { + get { + return ResourceManager.GetString("Could_not_find_the_following_extended_attributes_of_0_in_1_2", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Could not instantiate filesystem {0}. + /// + internal static string Could_not_instantiate_filesystem_0 { + get { + return ResourceManager.GetString("Could_not_instantiate_filesystem_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Could not instantiate filesystem for {0}. + /// + internal static string Could_not_instantiate_filesystem_for_0 { + get { + return ResourceManager.GetString("Could_not_instantiate_filesystem_for_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Could not instantiate filesystem for {0}, track {1}, filesystem {2}. + /// + internal static string Could_not_instantiate_filesystem_for_0_track_1_filesystem_2 { + get { + return ResourceManager.GetString("Could_not_instantiate_filesystem_for_0_track_1_filesystem_2", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Could not instantiate filesystem plugin. + /// + internal static string Could_not_instantiate_filesystem_plugin { + get { + return ResourceManager.GetString("Could_not_instantiate_filesystem_plugin", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Could not instantiate input plugin for {0}. + /// internal static string Could_not_instantiate_input_plugin_for_0 { get { return ResourceManager.GetString("Could_not_instantiate_input_plugin_for_0", resourceCulture); } } + /// + /// Looks up a localized string similar to Could not instantiate output plugin for {0}. + /// internal static string Could_not_instantiate_output_plugin_for_0 { get { return ResourceManager.GetString("Could_not_instantiate_output_plugin_for_0", resourceCulture); } } - internal static string Trying_to_convert_unsupported_media_type_0_for_1 { + /// + /// Looks up a localized string similar to Could not mount {0} in partition {1}.. + /// + internal static string Could_not_mount_0_in_partition_1 { get { - return ResourceManager.GetString("Trying_to_convert_unsupported_media_type_0_for_1", resourceCulture); + return ResourceManager.GetString("Could_not_mount_0_in_partition_1", resourceCulture); } } + /// + /// Looks up a localized string similar to Could not treat existing image as optical disc.. + /// + internal static string Could_not_treat_existing_image_as_optical_disc { + get { + return ResourceManager.GetString("Could_not_treat_existing_image_as_optical_disc", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Could not treat new image as optical disc.. + /// + internal static string Could_not_treat_new_image_as_optical_disc { + get { + return ResourceManager.GetString("Could_not_treat_new_image_as_optical_disc", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to CRC - {0}. + /// + internal static string CRC_0 { + get { + return ResourceManager.GetString("CRC_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Data stat after erase - {0}. + /// + internal static string Data_stat_after_erase_0 { + get { + return ResourceManager.GetString("Data_stat_after_erase_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Decoded - {0}. + /// + internal static string Decoded_0 { + get { + return ResourceManager.GetString("Decoded_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Default ECC - {0}. + /// + internal static string Default_ECC_0 { + get { + return ResourceManager.GetString("Default_ECC_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Defined extended attributes for "{0}" in {1} are not supported by filesystem.. + /// + internal static string Defined_extended_attributes_for_0_in_1_are_not_supported_by_filesystem { + get { + return ResourceManager.GetString("Defined_extended_attributes_for_0_in_1_are_not_supported_by_filesystem", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to DSR implemented - {0}. + /// + internal static string DSR_implemented_0 { + get { + return ResourceManager.GetString("DSR_implemented_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to ECC - {0}. + /// + internal static string ECC_0 { + get { + return ResourceManager.GetString("ECC_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Erase block enable - {0}. + /// + internal static string Erase_block_enable_0 { + get { + return ResourceManager.GetString("Erase_block_enable_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Erase group size - {0}. + /// + internal static string Erase_group_size_0 { + get { + return ResourceManager.GetString("Erase_group_size_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Erase sector size - {0}. + /// + internal static string Erase_sector_size_0 { + get { + return ResourceManager.GetString("Erase_sector_size_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Error {0} closing output image... Contents are not correct.. + /// + internal static string Error_0_closing_output_image_Contents_are_not_correct { + get { + return ResourceManager.GetString("Error_0_closing_output_image_Contents_are_not_correct", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Error {0} creating output image.. + /// + internal static string Error_0_creating_output_image { + get { + return ResourceManager.GetString("Error_0_creating_output_image", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Error {0} getting extended attributes for entry {1}. + /// + internal static string Error_0_getting_extended_attributes_for_entry_1 { + get { + return ResourceManager.GetString("Error_0_getting_extended_attributes_for_entry_1", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Error {0} reading extended attributes for entry {1}. + /// + internal static string Error_0_reading_extended_attributes_for_entry_1 { + get { + return ResourceManager.GetString("Error_0_reading_extended_attributes_for_entry_1", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Error {0} reading file {1}. + /// + internal static string Error_0_reading_file_1 { + get { + return ResourceManager.GetString("Error_0_reading_file_1", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Error {0} reading root directory {0}. + /// + internal static string Error_0_reading_root_directory_0 { + get { + return ResourceManager.GetString("Error_0_reading_root_directory_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Error {0} reading tag, not continuing.... + /// + internal static string Error_0_reading_tag_not_continuing { + get { + return ResourceManager.GetString("Error_0_reading_tag_not_continuing", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Error {0} sending tracks list to output image.. + /// + internal static string Error_0_sending_tracks_list_to_output_image { + get { + return ResourceManager.GetString("Error_0_sending_tracks_list_to_output_image", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Error {0} setting metadata,. + /// + internal static string Error_0_setting_metadata { + get { + return ResourceManager.GetString("Error_0_setting_metadata", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Error {0} writing sector {1}.... + /// internal static string Error_0_writing_sector_1 { get { return ResourceManager.GetString("Error_0_writing_sector_1", resourceCulture); } } - internal static string Open_created_0 { + /// + /// Looks up a localized string similar to Error {0} writing sector {1}, not continuing.... + /// + internal static string Error_0_writing_sector_1_not_continuing { get { - return ResourceManager.GetString("Open_created_0", resourceCulture); + return ResourceManager.GetString("Error_0_writing_sector_1_not_continuing", resourceCulture); } } - internal static string Sectors_output_0 { + /// + /// Looks up a localized string similar to Error {0} writing tag for sector {1}, not continuing.... + /// + internal static string Error_0_writing_tag_for_sector_1_not_continuing { get { - return ResourceManager.GetString("Sectors_output_0", resourceCulture); + return ResourceManager.GetString("Error_0_writing_tag_for_sector_1_not_continuing", resourceCulture); } } - internal static string Sector_size_output_0 { + /// + /// Looks up a localized string similar to Error {0} writing tag, not continuing.... + /// + internal static string Error_0_writing_tag_not_continuing { get { - return ResourceManager.GetString("Sector_size_output_0", resourceCulture); + return ResourceManager.GetString("Error_0_writing_tag_not_continuing", resourceCulture); } } - internal static string Tracks_output_0 { + /// + /// Looks up a localized string similar to Error getting stat for entry {0}. + /// + internal static string Error_getting_stat_for_entry_0 { get { - return ResourceManager.GetString("Tracks_output_0", resourceCulture); + return ResourceManager.GetString("Error_getting_stat_for_entry_0", resourceCulture); } } - internal static string Track_session_output_0 { + /// + /// Looks up a localized string similar to Excepted {0} partitions but found {1}. + /// + internal static string Excepted_0_partitions_but_found_1 { get { - return ResourceManager.GetString("Track_session_output_0", resourceCulture); + return ResourceManager.GetString("Excepted_0_partitions_but_found_1", resourceCulture); } } - internal static string Track_start_output_0 { + /// + /// Looks up a localized string similar to Excepted volume name "{0}" for filesystem {1} in partition {2} but found "{3}". + /// + internal static string Excepted_volume_name_0_for_filesystem_1_in_partition_2_but_found_3 { get { - return ResourceManager.GetString("Track_start_output_0", resourceCulture); + return ResourceManager.GetString("Excepted_volume_name_0_for_filesystem_1_in_partition_2_but_found_3", resourceCulture); } } - internal static string Track_end_output_0 { + /// + /// Looks up a localized string similar to Existing image contains no tracks.. + /// + internal static string Existing_image_contains_no_tracks { get { - return ResourceManager.GetString("Track_end_output_0", resourceCulture); + return ResourceManager.GetString("Existing_image_contains_no_tracks", resourceCulture); } } - internal static string Track_pregap_output_0 { + /// + /// Looks up a localized string similar to Expected {0} filesystems identified in partition {1} but found {2}. + /// + internal static string Expected_0_filesystems_identified_in_partition_1_but_found_2 { get { - return ResourceManager.GetString("Track_pregap_output_0", resourceCulture); + return ResourceManager.GetString("Expected_0_filesystems_identified_in_partition_1_but_found_2", resourceCulture); } } - internal static string Track_flags_output_0 { + /// + /// Looks up a localized string similar to Expected {0} filesystems in {1} but found {2}. + /// + internal static string Expected_0_filesystems_in_1_but_found_2 { get { - return ResourceManager.GetString("Track_flags_output_0", resourceCulture); + return ResourceManager.GetString("Expected_0_filesystems_in_1_but_found_2", resourceCulture); } } - internal static string Last_sector_for_tracks_is_0_but_it_is_1_for_image_output { + /// + /// Looks up a localized string similar to Expected {0} partitions in {1} but found {2}. + /// + internal static string Expected_0_partitions_in_1_but_found_2 { get { - return ResourceManager.GetString("Last_sector_for_tracks_is_0_but_it_is_1_for_image_output", resourceCulture); + return ResourceManager.GetString("Expected_0_partitions_in_1_but_found_2", resourceCulture); } } - internal static string Long_hash_output { + /// + /// Looks up a localized string similar to Expected directories not found:. + /// + internal static string Expected_directories_not_found { get { - return ResourceManager.GetString("Long_hash_output", resourceCulture); + return ResourceManager.GetString("Expected_directories_not_found", resourceCulture); } } + /// + /// Looks up a localized string similar to Expected extended attributes not found for file {0}:. + /// + internal static string Expected_extended_attributes_not_found_for_file_0 { + get { + return ResourceManager.GetString("Expected_extended_attributes_not_found_for_file_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Expected files not found:. + /// + internal static string Expected_files_not_found { + get { + return ResourceManager.GetString("Expected_files_not_found", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Expected no filesystems identified in partition {0} but found {1}. + /// + internal static string Expected_no_filesystems_identified_in_partition_0_but_found_1 { + get { + return ResourceManager.GetString("Expected_no_filesystems_identified_in_partition_0_but_found_1", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Expected partition {0} to have {1} sectors but found it has {2} sectors in {3}. + /// + internal static string Expected_partition_0_to_have_1_sectors_but_found_it_has_2_sectors_in_3 { + get { + return ResourceManager.GetString("Expected_partition_0_to_have_1_sectors_but_found_it_has_2_sectors_in_3", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Expected partition {0} to start at sector {1} but found it starts at {2} in {3}. + /// + internal static string Expected_partition_0_to_start_at_sector_1_but_found_it_starts_at_2_in_3 { + get { + return ResourceManager.GetString("Expected_partition_0_to_start_at_sector_1_but_found_it_starts_at_2_in_3", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Extended attributes for "{0}" in {1} must be defined in unit test declaration!. + /// + internal static string Extended_attributes_for_0_in_1_must_be_defined_in_unit_test_declaration { + get { + return ResourceManager.GetString("Extended_attributes_for_0_in_1_must_be_defined_in_unit_test_declaration", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Extended security - {0}. + /// + internal static string Extended_security_0 { + get { + return ResourceManager.GetString("Extended_security_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to File format - {0}. + /// + internal static string File_format_0 { + get { + return ResourceManager.GetString("File_format_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to File format group - {0}. + /// + internal static string File_format_group_0 { + get { + return ResourceManager.GetString("File_format_group_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Filesystem not identified for {0}. + /// + internal static string Filesystem_not_identified_for_0 { + get { + return ResourceManager.GetString("Filesystem_not_identified_for_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Filesystem type: {0}. + /// + internal static string Filesystem_type_0 { + get { + return ResourceManager.GetString("Filesystem_type_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Filter: {0}. + /// + internal static string Filter_0 { + get { + return ResourceManager.GetString("Filter_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Filter for test file is not detected. + /// + internal static string Filter_for_test_file_is_not_detected { + get { + return ResourceManager.GetString("Filter_for_test_file_is_not_detected", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Found the following unexpected children of "{0}" in {1}: {2}. + /// + internal static string Found_the_following_unexpected_children_of_0_in_1_2 { + get { + return ResourceManager.GetString("Found_the_following_unexpected_children_of_0_in_1_2", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Found the following unexpected extended attributes of "{0}" in {1}: {2}. + /// + internal static string Found_the_following_unexpected_extended_attributes_of_0_in_1_2 { + get { + return ResourceManager.GetString("Found_the_following_unexpected_extended_attributes_of_0_in_1_2", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Found unexpected directory {0}. + /// + internal static string Found_unexpected_directory_0 { + get { + return ResourceManager.GetString("Found_unexpected_directory_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Found unexpected extended attribute {0} in file {1}. + /// + internal static string Found_unexpected_extended_attribute_0_in_file_1 { + get { + return ResourceManager.GetString("Found_unexpected_extended_attribute_0_in_file_1", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Found unexpected file {0}. + /// + internal static string Found_unexpected_file_0 { + get { + return ResourceManager.GetString("Found_unexpected_file_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Got less bytes ({0}) than expected ({1}) when reading {2} in {3}. + /// + internal static string Got_less_bytes_0_than_expected_1_when_reading_2_in_3 { + get { + return ResourceManager.GetString("Got_less_bytes_0_than_expected_1_when_reading_2_in_3", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Got MD5 {0} for "{1}" in {2} but expected {3}. + /// + internal static string Got_MD5_0_for_1_in_2_but_expected_3 { + get { + return ResourceManager.GetString("Got_MD5_0_for_1_in_2_but_expected_3", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Got MD5 {0} for {1} of "{2}" in {3} but expected {4}. + /// + internal static string Got_MD5_0_for_1_of_2_in_3_but_expected_4 { + get { + return ResourceManager.GetString("Got_MD5_0_for_1_of_2_in_3_but_expected_4", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Got wrong data for directory "{0}" in {1}. + /// + internal static string Got_wrong_data_for_directory_0_in_1 { + get { + return ResourceManager.GetString("Got_wrong_data_for_directory_0_in_1", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Got wrong data for symbolic link "{0}" in {1}. + /// + internal static string Got_wrong_data_for_symbolic_link_0_in_1 { + get { + return ResourceManager.GetString("Got_wrong_data_for_symbolic_link_0_in_1", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Hash: {0}. + /// + internal static string Hash_0 { + get { + return ResourceManager.GetString("Hash_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Hash (output). + /// internal static string Hash_output { get { return ResourceManager.GetString("Hash_output", resourceCulture); } } + /// + /// Looks up a localized string similar to Hashes are different. + /// + internal static string Hashes_are_different { + get { + return ResourceManager.GetString("Hashes_are_different", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Image format: {0}. + /// + internal static string Image_format_0 { + get { + return ResourceManager.GetString("Image_format_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Image format for test file is not detected. + /// + internal static string Image_format_for_test_file_is_not_detected { + get { + return ResourceManager.GetString("Image_format_for_test_file_is_not_detected", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Image format for test file is not for an optical disc. + /// + internal static string Image_format_for_test_file_is_not_for_an_optical_disc { + get { + return ResourceManager.GetString("Image_format_for_test_file_is_not_for_an_optical_disc", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Image format not identified, not proceeding with analysis.. + /// + internal static string Image_format_not_identified_not_proceeding_with_analysis { + get { + return ResourceManager.GetString("Image_format_not_identified_not_proceeding_with_analysis", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Input image does not support long sectors.. + /// + internal static string Input_image_does_not_support_long_sectors { + get { + return ResourceManager.GetString("Input_image_does_not_support_long_sectors", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Input image format not identified, not proceeding with conversion.. + /// + internal static string Input_image_format_not_identified_not_proceeding_with_conversion { + get { + return ResourceManager.GetString("Input_image_format_not_identified_not_proceeding_with_conversion", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Invalid checksum for file {0}. + /// + internal static string Invalid_checksum_for_file_0 { + get { + return ResourceManager.GetString("Invalid_checksum_for_file_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Invalid checksum for xattr {0} for file {1}. + /// + internal static string Invalid_checksum_for_xattr_0_for_file_1 { + get { + return ResourceManager.GetString("Invalid_checksum_for_xattr_0_for_file_1", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Invalid target for symbolic link "{0}" in {1}. + /// + internal static string Invalid_target_for_symbolic_link_0_in_1 { + get { + return ResourceManager.GetString("Invalid_target_for_symbolic_link_0_in_1", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Is tape?: {0}. + /// + internal static string Is_tape_0 { + get { + return ResourceManager.GetString("Is_tape_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Last sector for tracks is {0}, but it is {1} for image. + /// + internal static string Last_sector_for_tracks_is_0_but_it_is_1_for_image { + get { + return ResourceManager.GetString("Last_sector_for_tracks_is_0_but_it_is_1_for_image", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Last sector for tracks is {0}, but it is {1} for image (output). + /// + internal static string Last_sector_for_tracks_is_0_but_it_is_1_for_image_output { + get { + return ResourceManager.GetString("Last_sector_for_tracks_is_0_but_it_is_1_for_image_output", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Long hash (output). + /// + internal static string Long_hash_output { + get { + return ResourceManager.GetString("Long_hash_output", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Manufacturer - {0}. + /// + internal static string Manufacturer_0 { + get { + return ResourceManager.GetString("Manufacturer_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Manufacturer reserved - {0}. + /// + internal static string Manufacturer_reserved_0 { + get { + return ResourceManager.GetString("Manufacturer_reserved_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Manufacturing date - {0}. + /// + internal static string Manufacturing_date_0 { + get { + return ResourceManager.GetString("Manufacturing_date_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Media type: {0}. + /// + internal static string Media_type_0 { + get { + return ResourceManager.GetString("Media_type_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to No filesystems found.. + /// + internal static string No_filesystems_found { + get { + return ResourceManager.GetString("No_filesystems_found", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to No filesystems found for {0}. + /// + internal static string No_filesystems_found_for_0 { + get { + return ResourceManager.GetString("No_filesystems_found_for_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to No partitions found. + /// + internal static string No_partitions_found { + get { + return ResourceManager.GetString("No_partitions_found", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to No partitions found for {0}. + /// + internal static string No_partitions_found_for_0 { + get { + return ResourceManager.GetString("No_partitions_found_for_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Not decoded - {0}. + /// + internal static string Not_decoded_0 { + get { + return ResourceManager.GetString("Not_decoded_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Not identified for {0}. + /// + internal static string Not_identified_for_0 { + get { + return ResourceManager.GetString("Not_identified_for_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to NSAC - {0}. + /// + internal static string NSAC_0 { + get { + return ResourceManager.GetString("NSAC_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Open: {0}. + /// + internal static string Open_0 { + get { + return ResourceManager.GetString("Open_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Open created: {0}. + /// + internal static string Open_created_0 { + get { + return ResourceManager.GetString("Open_created_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Output file already exists, not continuing.. + /// + internal static string Output_file_already_exists_not_continuing { + get { + return ResourceManager.GetString("Output_file_already_exists_not_continuing", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Output format does not support media type, cannot continue.... + /// + internal static string Output_format_does_not_support_media_type_cannot_continue { + get { + return ResourceManager.GetString("Output_format_does_not_support_media_type_cannot_continue", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Partitions: {0}. + /// + internal static string Partitions_0 { + get { + return ResourceManager.GetString("Partitions_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Permanent write protect - {0}. + /// + internal static string Permanent_write_protect_0 { + get { + return ResourceManager.GetString("Permanent_write_protect_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Product name - {0}. + /// + internal static string Product_name_0 { + get { + return ResourceManager.GetString("Product_name_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Product revision - {0}. + /// + internal static string Product_revision_0 { + get { + return ResourceManager.GetString("Product_revision_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Read block length - {0}. + /// + internal static string Read_block_length_0 { + get { + return ResourceManager.GetString("Read_block_length_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Read to write factor - {0}. + /// + internal static string Read_to_write_factor_0 { + get { + return ResourceManager.GetString("Read_to_write_factor_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Reading current at maximum Vdd - {0}. + /// + internal static string Reading_current_at_maximum_Vdd_0 { + get { + return ResourceManager.GetString("Reading_current_at_maximum_Vdd_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Reading current at minimum Vdd - {0}. + /// + internal static string Reading_current_at_minimum_Vdd_0 { + get { + return ResourceManager.GetString("Reading_current_at_minimum_Vdd_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Reads misaligned blocks - {0}. + /// + internal static string Reads_misaligned_blocks_0 { + get { + return ResourceManager.GetString("Reads_misaligned_blocks_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Reads partial blocks - {0}. + /// + internal static string Reads_partial_blocks_0 { + get { + return ResourceManager.GetString("Reads_partial_blocks_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Sector size: {0}. + /// + internal static string Sector_size_0 { + get { + return ResourceManager.GetString("Sector_size_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Sector size (output): {0}. + /// + internal static string Sector_size_output_0 { + get { + return ResourceManager.GetString("Sector_size_output_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Sectors: {0}. + /// + internal static string Sectors_0 { + get { + return ResourceManager.GetString("Sectors_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Sectors (output): {0}. + /// + internal static string Sectors_output_0 { + get { + return ResourceManager.GetString("Sectors_output_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Security - {0}. + /// + internal static string Security_0 { + get { + return ResourceManager.GetString("Security_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Serial number - {0}. + /// + internal static string Serial_number_0 { + get { + return ResourceManager.GetString("Serial_number_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Size - {0}. + /// + internal static string Size_0 { + get { + return ResourceManager.GetString("Size_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Spec 3 - {0}. + /// + internal static string Spec_3_0 { + get { + return ResourceManager.GetString("Spec_3_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Spec 4 - {0}. + /// + internal static string Spec_4_0 { + get { + return ResourceManager.GetString("Spec_4_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Spec X - {0}. + /// + internal static string Spec_X_0 { + get { + return ResourceManager.GetString("Spec_X_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Specification version - {0}. + /// + internal static string Specification_version_0 { + get { + return ResourceManager.GetString("Specification_version_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Structure version - {0}. + /// + internal static string Structure_version_0 { + get { + return ResourceManager.GetString("Structure_version_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Subchannel hash: {0}. + /// + internal static string Subchannel_hash_0 { + get { + return ResourceManager.GetString("Subchannel_hash_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Subchannel hash (output): {0}. + /// internal static string Subchannel_hash_output_0 { get { return ResourceManager.GetString("Subchannel_hash_output_0", resourceCulture); } } + + /// + /// Looks up a localized string similar to System ID: {0}. + /// + internal static string System_ID_0 { + get { + return ResourceManager.GetString("System_ID_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to TAAC - {0}. + /// + internal static string TAAC_0 { + get { + return ResourceManager.GetString("TAAC_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Tape files: {0}. + /// + internal static string Tape_files_0 { + get { + return ResourceManager.GetString("Tape_files_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Tape partitions: {0}. + /// + internal static string Tape_partitions_0 { + get { + return ResourceManager.GetString("Tape_partitions_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Temporary write protect - {0}. + /// + internal static string Temporary_write_protect_0 { + get { + return ResourceManager.GetString("Temporary_write_protect_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test file not found. + /// + internal static string Test_file_not_found { + get { + return ResourceManager.GetString("Test_file_not_found", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Track end: {0}. + /// + internal static string Track_end_0 { + get { + return ResourceManager.GetString("Track_end_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Track end (output): {0}. + /// + internal static string Track_end_output_0 { + get { + return ResourceManager.GetString("Track_end_output_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Track flags: {0}. + /// + internal static string Track_flags_0 { + get { + return ResourceManager.GetString("Track_flags_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Track flags (output): {0}. + /// + internal static string Track_flags_output_0 { + get { + return ResourceManager.GetString("Track_flags_output_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Track pregap: {0}. + /// + internal static string Track_pregap_0 { + get { + return ResourceManager.GetString("Track_pregap_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Track pregap (output): {0}. + /// + internal static string Track_pregap_output_0 { + get { + return ResourceManager.GetString("Track_pregap_output_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Track session: {0}. + /// + internal static string Track_session_0 { + get { + return ResourceManager.GetString("Track_session_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Track session (output): {0}. + /// + internal static string Track_session_output_0 { + get { + return ResourceManager.GetString("Track_session_output_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Track start: {0}. + /// + internal static string Track_start_0 { + get { + return ResourceManager.GetString("Track_start_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Track start (output): {0}. + /// + internal static string Track_start_output_0 { + get { + return ResourceManager.GetString("Track_start_output_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Tracks: {0}. + /// + internal static string Tracks_0 { + get { + return ResourceManager.GetString("Tracks_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Tracks (output): {0}. + /// + internal static string Tracks_output_0 { + get { + return ResourceManager.GetString("Tracks_output_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Transfer speed - {0}. + /// + internal static string Transfer_speed_0 { + get { + return ResourceManager.GetString("Transfer_speed_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Trying to convert unsupported media type {0} for {1}. + /// + internal static string Trying_to_convert_unsupported_media_type_0_for_1 { + get { + return ResourceManager.GetString("Trying_to_convert_unsupported_media_type_0_for_1", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unable to open image format. + /// + internal static string Unable_to_open_image_format { + get { + return ResourceManager.GetString("Unable_to_open_image_format", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unexpected error {0} retrieving extended attributes for "{1}" in {2}. + /// + internal static string Unexpected_error_0_retrieving_extended_attributes_for_1_in_2 { + get { + return ResourceManager.GetString("Unexpected_error_0_retrieving_extended_attributes_for_1_in_2", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unexpected error {0} retrieving stats for "{1}" in {2}. + /// + internal static string Unexpected_error_0_retrieving_stats_for_1_in_2 { + get { + return ResourceManager.GetString("Unexpected_error_0_retrieving_stats_for_1_in_2", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unexpected error {0} when listing extended attributes for "{1}" in {2}. + /// + internal static string Unexpected_error_0_when_listing_extended_attributes_for_1_in_2 { + get { + return ResourceManager.GetString("Unexpected_error_0_when_listing_extended_attributes_for_1_in_2", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unexpected error {0} when reading "{1}" in {2}. + /// + internal static string Unexpected_error_0_when_reading_1_in_2 { + get { + return ResourceManager.GetString("Unexpected_error_0_when_reading_1_in_2", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unexpected error {0} when reading directory "{1}" of {2}.. + /// + internal static string Unexpected_error_0_when_reading_directory_1_of_2 { + get { + return ResourceManager.GetString("Unexpected_error_0_when_reading_directory_1_of_2", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unmountable: {0}. + /// + internal static string Unmountable_0 { + get { + return ResourceManager.GetString("Unmountable_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Version - {0}. + /// + internal static string Version_0 { + get { + return ResourceManager.GetString("Version_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Volume name: {0}. + /// + internal static string Volume_name_0 { + get { + return ResourceManager.GetString("Volume_name_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Volume serial: {0}. + /// + internal static string Volume_serial_0 { + get { + return ResourceManager.GetString("Volume_serial_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to write block length - {0}. + /// + internal static string write_block_length_0 { + get { + return ResourceManager.GetString("write_block_length_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Write protect group enable - {0}. + /// + internal static string Write_protect_group_enable_0 { + get { + return ResourceManager.GetString("Write_protect_group_enable_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Write protect group size - {0}. + /// + internal static string Write_protect_group_size_0 { + get { + return ResourceManager.GetString("Write_protect_group_size_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Writes misaligned blocks - {0}. + /// + internal static string Writes_misaligned_blocks_0 { + get { + return ResourceManager.GetString("Writes_misaligned_blocks_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Writes partial blocks - {0}. + /// + internal static string Writes_partial_blocks_0 { + get { + return ResourceManager.GetString("Writes_partial_blocks_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Writing current at maximum Vdd - {0}. + /// + internal static string Writing_current_at_maximum_Vdd_0 { + get { + return ResourceManager.GetString("Writing_current_at_maximum_Vdd_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Writing current at minimum Vdd - {0}. + /// + internal static string Writing_current_at_minimum_Vdd_0 { + get { + return ResourceManager.GetString("Writing_current_at_minimum_Vdd_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wrong info for "{0}" in {1}. + /// + internal static string Wrong_info_for_0_in_1 { + get { + return ResourceManager.GetString("Wrong_info_for_0_in_1", resourceCulture); + } + } } } diff --git a/Aaru.Tests/Localization/Localization.resx b/Aaru.Tests/Localization/Localization.resx index 7b773582a..b1c678459 100644 --- a/Aaru.Tests/Localization/Localization.resx +++ b/Aaru.Tests/Localization/Localization.resx @@ -540,4 +540,10 @@ Subchannel hash (output): {0} + + Got less bytes ({0}) than expected ({1}) when reading {2} in {3} + + + Got MD5 {0} for "{1}" in {2} but expected {3} + \ No newline at end of file diff --git a/Aaru/Commands/Filesystem/ExtractFiles.cs b/Aaru/Commands/Filesystem/ExtractFiles.cs index c711ef031..d48d9b15b 100644 --- a/Aaru/Commands/Filesystem/ExtractFiles.cs +++ b/Aaru/Commands/Filesystem/ExtractFiles.cs @@ -601,31 +601,39 @@ sealed class ExtractFilesCommand : Command ctx.AddTask(string.Format(UI.Reading_file_0, Markup.Escape(entry))); task.MaxValue = stat.Length; - byte[] outBuf = null; + byte[] outBuf = new byte[BUFFER_SIZE]; + error = fs.OpenFile(path + "/" + entry, out IFileNode fileNode); - while(position < stat.Length) + if(error == ErrorNumber.NoError) { - long bytesToRead; - - if(stat.Length - position > BUFFER_SIZE) - bytesToRead = BUFFER_SIZE; - else - bytesToRead = stat.Length - position; - - error = fs.Read(path + "/" + entry, position, bytesToRead, ref outBuf); - - if(error == ErrorNumber.NoError) - outputFile.Write(outBuf, 0, (int)bytesToRead); - else + while(position < stat.Length) { - AaruConsole.ErrorWriteLine(UI.Error_0_reading_file_1, error, entry); + long bytesToRead; - break; + if(stat.Length - position > BUFFER_SIZE) + bytesToRead = BUFFER_SIZE; + else + bytesToRead = stat.Length - position; + + error = fs.ReadFile(fileNode, bytesToRead, outBuf, out long bytesRead); + + if(error == ErrorNumber.NoError) + outputFile.Write(outBuf, 0, (int)bytesRead); + else + { + AaruConsole.ErrorWriteLine(UI.Error_0_reading_file_1, error, entry); + + break; + } + + position += bytesToRead; + task.Increment(bytesToRead); } - position += bytesToRead; - task.Increment(bytesToRead); + fs.CloseFile(fileNode); } + else + AaruConsole.ErrorWriteLine(UI.Error_0_reading_file_1, error, entry); }); outputFile.Close();