Make Encoding a private field only for IReadOnlyFilesystem implementors.

This commit is contained in:
2022-12-17 23:17:18 +00:00
parent dc26b85c2f
commit 24069676e2
147 changed files with 296 additions and 497 deletions

View File

@@ -59,6 +59,7 @@ public sealed partial class CPM : IReadOnlyFilesystem
List<string> _dirList;
/// <summary>CP/M disc parameter block (on-memory)</summary>
DiscParameterBlock _dpb;
Encoding _encoding;
/// <summary>Cached file data</summary>
Dictionary<string, byte[]> _fileCache;
/// <summary>The volume label, if the CP/M filesystem contains one</summary>
@@ -81,8 +82,6 @@ public sealed partial class CPM : IReadOnlyFilesystem
/// <summary>If <see cref="Identify" /> thinks this is a CP/M filesystem, this is the definition for it</summary>
CpmDefinition _workingDefinition;
/// <inheritdoc />
public Encoding Encoding { get; private set; }
/// <inheritdoc />
public FileSystem Metadata { get; private set; }
/// <inheritdoc />

View File

@@ -1141,7 +1141,6 @@ public sealed partial class CPM
public void GetInformation(IMediaImage imagePlugin, Partition partition, Encoding encoding, out string information,
out FileSystem metadata)
{
Encoding = encoding ?? Encoding.GetEncoding("IBM437");
information = "";
metadata = new FileSystem();
@@ -1214,13 +1213,11 @@ public sealed partial class CPM
sb.AppendFormat(Localization.Device_uses_0_one_hardware_interleaving, _workingDefinition.skew).AppendLine();
if(_workingDefinition.sofs > 0)
sb.AppendFormat("BSH {0} BLM {1} EXM {2} DSM {3} DRM {4} AL0 {5:X2}H AL1 {6:X2}H SOFS {7}", _dpb.bsh,
_dpb.blm, _dpb.exm, _dpb.dsm, _dpb.drm, _dpb.al0, _dpb.al1, _workingDefinition.sofs).
AppendLine();
sb.AppendLine($"BSH {_dpb.bsh} BLM {_dpb.blm} EXM {_dpb.exm} DSM {_dpb.dsm} DRM {_dpb.drm} AL0 {_dpb.al0
:X2}H AL1 {_dpb.al1:X2}H SOFS {_workingDefinition.sofs}");
else
sb.AppendFormat("BSH {0} BLM {1} EXM {2} DSM {3} DRM {4} AL0 {5:X2}H AL1 {6:X2}H OFS {7}", _dpb.bsh,
_dpb.blm, _dpb.exm, _dpb.dsm, _dpb.drm, _dpb.al0, _dpb.al1, _workingDefinition.ofs).
AppendLine();
sb.AppendLine($"BSH {_dpb.bsh} BLM {_dpb.blm} EXM {_dpb.exm} DSM {_dpb.dsm} DRM {_dpb.drm} AL0 {_dpb.al0
:X2}H AL1 {_dpb.al1:X2}H OFS {_workingDefinition.ofs}");
if(_label != null)
sb.AppendFormat(Localization.Volume_label_0, _label).AppendLine();

View File

@@ -55,8 +55,8 @@ public sealed partial class CPM
public ErrorNumber Mount(IMediaImage imagePlugin, Partition partition, Encoding encoding,
Dictionary<string, string> options, string @namespace)
{
_device = imagePlugin;
Encoding = encoding ?? Encoding.GetEncoding("IBM437");
_device = imagePlugin;
_encoding = encoding ?? Encoding.GetEncoding("IBM437");
// As the identification is so complex, just call Identify() and relay on its findings
if(!Identify(_device, partition) ||