From dbea256d169bfbcd49ca3f835962c6647dcdb409 Mon Sep 17 00:00:00 2001 From: Hawkynt Date: Fri, 23 Oct 2026 14:49:56 +0200 Subject: [PATCH 1/4] + Now Compress archives: read-only Now Compress (Now Software, Macintosh) had no descriptor. Its archives are a directory of 110-byte records (folders nest by child count) followed by one stream per file - a checksummed table of blocks, each stored, 32 KiB LZSS, static Huffman, Huffman+LZSS or the later Huffman-coded LZSS - carrying the resource fork then the data fork. Folders are listed; resource forks appear as ".rsrc". The recorded block offsets are sometimes shifted; as in XADMaster the shift is recovered from the stream-header checksum. Read-only: no Now Compress writer exists to check our output against. Evidence: the format has no data checksum, so on the only real samples found (commercial installers from the dexvert set, not redistributable; checked via CWB_NOWCOMPRESS_SAMPLES) every decoded resource fork satisfies its own header (data offset + length = map offset, map end = fork size) and the data forks decode to their readable text (e.g. "About In Re Macintosh, Vol. 1/No. 5 - May 1994"). unar 1.10 stops on those samples with "read more data than was available"; the test compares with it wherever it succeeds. Sourcing: rung 1 - converted from XADMaster (LGPL-2.1-or-later), notice in THIRD-PARTY-NOTICE.XADMaster.txt; the new-LZSS tables copied verbatim. --- .../NowCompress/NowCompressTests.cs | 87 ++++ .../NowCompressArchive.cs | 390 ++++++++++++++++++ .../NowCompressFormatDescriptor.cs | 70 ++++ .../THIRD-PARTY-NOTICE.XADMaster.txt | 14 + Hawkynt.FileFormats.Archives/README.md | 3 +- Hawkynt.FileFormats.Archives/REFERENCE.md | 54 +++ docs/catalogue/our-registry.csv | 1 + docs/catalogue/reference-formats.csv | 4 +- 8 files changed, 620 insertions(+), 3 deletions(-) create mode 100644 Compression.Tests/NowCompress/NowCompressTests.cs create mode 100644 Hawkynt.FileFormats.Archives/FileFormats/FileFormat.NowCompress/NowCompressArchive.cs create mode 100644 Hawkynt.FileFormats.Archives/FileFormats/FileFormat.NowCompress/NowCompressFormatDescriptor.cs create mode 100644 Hawkynt.FileFormats.Archives/FileFormats/FileFormat.NowCompress/THIRD-PARTY-NOTICE.XADMaster.txt diff --git a/Compression.Tests/NowCompress/NowCompressTests.cs b/Compression.Tests/NowCompress/NowCompressTests.cs new file mode 100644 index 000000000..005a0761b --- /dev/null +++ b/Compression.Tests/NowCompress/NowCompressTests.cs @@ -0,0 +1,87 @@ +using System.Buffers.Binary; +using FileFormat.NowCompress; + +namespace Compression.Tests.NowCompress; + +/// +/// Now Compress: structural checks plus real archives. The only real archives found are commercial +/// Mac installers (the dexvert sample set), which cannot be redistributed, so those checks run on a +/// directory named by CWB_NOWCOMPRESS_SAMPLES (raw or MacBinary-wrapped). +/// +/// +/// The format stores no checksum of the data, so each decoded resource fork is checked against its +/// own header (data offset + data length = map offset, map offset + map length = fork size): a +/// mis-decoded fork does not keep that invariant. Where The Unarchiver's unar can extract a sample +/// too, every data fork is compared with its output. +/// +[TestFixture] +public class NowCompressTests { + + [Test, Category("Exception")] + public void GivenRandomBytes_WhenRead_ThenRefused() { + var bytes = new byte[512]; + new Random(3).NextBytes(bytes); + bytes[0] = 0; bytes[1] = 2; + Assert.That(NowCompressArchive.IsNowCompress(bytes), Is.False); + Assert.That(() => NowCompressArchive.Read(new MemoryStream(bytes)), Throws.InstanceOf()); + } + + [Test, Category("Exception")] + public void GivenTooShortInput_WhenRead_ThenRefused() + => Assert.That(() => NowCompressArchive.Read(new MemoryStream([0, 2, 0, 0x60])), Throws.InstanceOf()); + + private static IEnumerable<(string File, byte[] Bytes, int Offset)> Samples() { + var samples = Environment.GetEnvironmentVariable("CWB_NOWCOMPRESS_SAMPLES"); + if (string.IsNullOrEmpty(samples) || !Directory.Exists(samples)) Assert.Ignore("CWB_NOWCOMPRESS_SAMPLES is not set."); + foreach (var file in Directory.EnumerateFiles(samples!)) { + var bytes = File.ReadAllBytes(file); + var offset = bytes.Length > 140 && NowCompressArchive.IsNowCompress(bytes.AsSpan(128)) ? 128 : 0; + if (NowCompressArchive.IsNowCompress(bytes.AsSpan(offset))) yield return (file, bytes, offset); + } + } + + [Test, Category("ThemVsUs")] + public void GivenLocalSampleArchives_WhenDecoded_ThenEveryResourceForkIsSelfConsistent() { + var forks = 0; + foreach (var (file, bytes, offset) in Samples()) { + foreach (var e in NowCompressArchive.Read(new MemoryStream(bytes, offset, bytes.Length - offset)).Where(x => x.ResourceSize >= 16)) { + var r = e.Resource; + var dataOffset = BinaryPrimitives.ReadUInt32BigEndian(r); + var mapOffset = BinaryPrimitives.ReadUInt32BigEndian(r.AsSpan(4)); + var dataLength = BinaryPrimitives.ReadUInt32BigEndian(r.AsSpan(8)); + var mapLength = BinaryPrimitives.ReadUInt32BigEndian(r.AsSpan(12)); + Assert.That((long)dataOffset + dataLength, Is.EqualTo(mapOffset), $"{file}: {e.Path} resource data does not meet its map"); + Assert.That((long)mapOffset + mapLength, Is.EqualTo(r.Length), $"{file}: {e.Path} resource map does not end the fork"); + ++forks; + } + } + Assert.That(forks, Is.GreaterThan(0), "no resource fork found in the samples"); + } + + [Test, Category("ExternalInterop")] + public void GivenLocalSampleArchives_WhenUnarCanExtractThem_ThenEveryDataForkMatches() { + if (OperatingSystem.IsWindows() && !FsInteropToolbox.WslAvailable) Assert.Ignore("WSL is not available."); + if (!FsInteropToolbox.WslHasTool("unar")) Assert.Ignore("unar (The Unarchiver) is not installed."); + var compared = 0; + var tmp = Path.Combine(Path.GetTempPath(), $"cwb_now_{Guid.NewGuid():N}"); + try { + foreach (var (file, bytes, offset) in Samples()) { + Directory.CreateDirectory(tmp); + var raw = Path.Combine(tmp, Path.GetFileName(file) + ".now"); + File.WriteAllBytes(raw, bytes[offset..]); + var outDir = Path.Combine(tmp, Path.GetFileName(file) + ".out"); + var r = FsInteropToolbox.RunWsl($"unar -q -f -k hidden -D -o '{FsInteropToolbox.WinToWsl(outDir)}' '{FsInteropToolbox.WinToWsl(raw)}'"); + if (r.ExitCode != 0) continue; // unar 1.10 stops on these samples with "read more data than was available" + foreach (var e in NowCompressArchive.Read(new MemoryStream(bytes, offset, bytes.Length - offset)).Where(x => !x.IsDirectory && x.DataSize > 0)) { + var theirs = Path.Combine(outDir, e.Path.Replace('/', Path.DirectorySeparatorChar)); + if (!File.Exists(theirs)) continue; + Assert.That(e.Data, Is.EqualTo(File.ReadAllBytes(theirs)), $"{file}: {e.Path}"); + ++compared; + } + } + } finally { + try { Directory.Delete(tmp, true); } catch { /* best effort */ } + } + if (compared == 0) Assert.Inconclusive("unar extracted none of the samples, so nothing could be compared."); + } +} diff --git a/Hawkynt.FileFormats.Archives/FileFormats/FileFormat.NowCompress/NowCompressArchive.cs b/Hawkynt.FileFormats.Archives/FileFormats/FileFormat.NowCompress/NowCompressArchive.cs new file mode 100644 index 000000000..841b3953b --- /dev/null +++ b/Hawkynt.FileFormats.Archives/FileFormats/FileFormat.NowCompress/NowCompressArchive.cs @@ -0,0 +1,390 @@ +using System.Buffers.Binary; +using System.Text; + +namespace FileFormat.NowCompress; + +/// One file or folder of a Now Compress archive. +public sealed class NowCompressEntry { + /// Gets the path inside the archive, '/'-separated. + public string Path { get; init; } = ""; + /// Gets whether this is a folder. + public bool IsDirectory { get; init; } + /// Gets the data fork size. + public long DataSize { get; init; } + /// Gets the resource fork size. + public long ResourceSize { get; init; } + /// Gets the modification time. + public DateTime? LastModified { get; init; } + /// Gets the decoded data fork. + public byte[] Data { get; internal set; } = []; + /// Gets the decoded resource fork. + public byte[] Resource { get; internal set; } = []; + + internal uint StreamOffset { get; init; } +} + +/// +/// Now Compress (Now Software, Macintosh, early 1990s): a directory of 110-byte records followed by +/// one stream per file, each a checksummed table of blocks; blocks are stored or compressed with a +/// 32 KiB LZSS, a static Huffman code, both, or a later Huffman-coded LZSS. Each file's stream +/// carries the resource fork, then the data fork. The format stores no checksum of the data itself, +/// so decoding errors surface only as structural failures. +/// +/// Converted from XADMaster's XADNowCompressParser / XADNowCompressHandle (LGPL-2.1-or-later). +public static class NowCompressArchive { + private const int RecordSize = 110; + private const string MacRomanHigh = + "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"; + + /// Whether the bytes start like a Now Compress archive (magic, file count, first name, header checksum). + public static bool IsNowCompress(ReadOnlySpan b) { + if (b.Length < 134 || b[0] != 0x00 || b[1] != 0x02) return false; + var count = BinaryPrimitives.ReadUInt32BigEndian(b[8..]); + if (count == 0 || count > 0xFFFF) return false; + int nameLength = b[24]; + if (nameLength is 0 or > 31) return false; + for (var i = 0; i < nameLength; ++i) if (b[25 + i] < 32) return false; + uint sum = 0; + for (var i = 24; i < 130; ++i) sum += b[i]; + return sum == BinaryPrimitives.ReadUInt32BigEndian(b[130..]); + } + + /// Parses the directory and decodes every fork. + /// Not a Now Compress archive, or a stream is damaged. + public static List Read(Stream stream) { + ArgumentNullException.ThrowIfNull(stream); + if (stream.CanSeek) stream.Position = 0; + using var ms = new MemoryStream(); + stream.CopyTo(ms); + var b = ms.ToArray(); + if (!IsNowCompress(b)) throw new InvalidDataException("Not a Now Compress archive."); + + var total = BinaryPrimitives.ReadUInt32BigEndian(b.AsSpan(8)); + var entries = new List(); + var p = 24; + var seen = 0u; + ParseDirectory(b, ref p, "", int.MaxValue, total, ref seen, entries); + + // The streams form one solid sequence: a block that starts a stream restores the history the + // previous stream's first block left behind (XADNowCompressHandle's dictionary cache). + var decoder = new BlockDecoder(b); + foreach (var e in entries.Where(x => !x.IsDirectory)) { + var bytes = decoder.DecodeFile(e.StreamOffset, e.ResourceSize + e.DataSize); + e.Resource = bytes[..(int)e.ResourceSize]; + e.Data = bytes[(int)e.ResourceSize..]; + } + return entries; + } + + private static void ParseDirectory(byte[] b, ref int p, string parent, int count, uint total, ref uint seen, List entries) { + for (var i = 0; i < count && seen < total; ++i, ++seen) { + if (p + RecordSize > b.Length) throw new InvalidDataException("Now Compress directory is truncated."); + var r = b.AsSpan(p, RecordSize); + p += RecordSize; + int nameLength = Math.Min((int)r[0], 31); + var name = MacRoman(r.Slice(1, nameLength)).Replace('/', ':'); + var flags = BinaryPrimitives.ReadUInt16BigEndian(r[36..]); + var modified = BinaryPrimitives.ReadUInt32BigEndian(r[58..]); + var children = BinaryPrimitives.ReadUInt16BigEndian(r[82..]); + var dataSize = BinaryPrimitives.ReadUInt32BigEndian(r[86..]); + var rsrcSize = BinaryPrimitives.ReadUInt32BigEndian(r[90..]); + var dataStart = BinaryPrimitives.ReadUInt32BigEndian(r[98..]); + var path = parent.Length == 0 ? name : parent + "/" + name; + var time = modified == 0 ? (DateTime?)null : new DateTime(1904, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(modified); + if ((flags & 0x10) != 0) { + entries.Add(new NowCompressEntry { Path = path, IsDirectory = true, LastModified = time }); + // As in XADMaster, the folder record itself is counted only after its children. + ParseDirectory(b, ref p, path, children, total, ref seen, entries); + } else { + entries.Add(new NowCompressEntry { Path = path, DataSize = dataSize, ResourceSize = rsrcSize, LastModified = time, StreamOffset = dataStart }); + } + } + } + + private static string MacRoman(ReadOnlySpan raw) { + var sb = new StringBuilder(raw.Length); + foreach (var c in raw) sb.Append(c < 0x80 ? (char)c : MacRomanHigh[c - 0x80]); + return sb.ToString(); + } + + // ── stream decoding ───────────────────────────────────────────────── + + private sealed class BlockDecoder(byte[] archive) { + private readonly byte[] _dictionaryCache = new byte[0x8000]; + private readonly byte[] _out = new byte[0x10000]; // 32 KiB history + 32 KiB block + + public byte[] DecodeFile(uint headerOffset, long size) { + if (size > int.MaxValue) throw new NotSupportedException("Now Compress file exceeds the 2 GiB in-memory limit."); + var result = new byte[size]; + var o = 0; + var blocks = this.ReadBlockTable(headerOffset); + foreach (var (offset, length, flags) in blocks) { + if (o >= size) break; + var produced = this.DecodeBlock(offset, length, flags); + var take = Math.Min(produced.Length, (int)(size - o)); + produced.AsSpan(0, take).CopyTo(result.AsSpan(o)); + o += take; + } + if (o != size) throw new InvalidDataException("Now Compress stream ended before the recorded size."); + return result; + } + + private static int Sum32(uint v) => (int)((v >> 24) + ((v >> 16) & 0xFF) + ((v >> 8) & 0xFF) + (v & 0xFF)); + private static int Sum16(int v) => (v >> 8) + (v & 0xFF); + + private uint U32(long at) { + if (at < 0 || at + 4 > archive.Length) throw new InvalidDataException("Now Compress stream header runs past the archive."); + return BinaryPrimitives.ReadUInt32BigEndian(archive.AsSpan((int)at)); + } + + private int U16(long at) { + if (at < 0 || at + 2 > archive.Length) throw new InvalidDataException("Now Compress stream header runs past the archive."); + return BinaryPrimitives.ReadUInt16BigEndian(archive.AsSpan((int)at)); + } + + private List<(long Offset, int Length, int Flags)> ReadBlockTable(uint headerOffset) { + var first = U32(headerOffset); + // The recorded offsets are sometimes shifted; XADMaster finds the delta from the header checksum. + if (first >= headerOffset + 20 && this.TryParse(headerOffset, first, 0, out var table)) return table; + var delta = this.FindDelta(headerOffset, first); + if (this.TryParse(headerOffset, first, delta, out table)) return table; + throw new InvalidDataException("Now Compress stream header fails its checksum."); + } + + private bool TryParse(uint headerOffset, uint first, int delta, out List<(long Offset, int Length, int Flags)> table) { + table = []; + try { + var count = (int)((first + delta - headerOffset - 4) / 8) - 1; + if (count < 0 || count > 0x100000) return false; + var p = (long)headerOffset + 4; + var last = first; + long checksum = Sum32(first); + var nextIsStart = true; + for (var i = 0; i < count; ++i) { + var flags = U16(p); + var padding = U16(p + 2); + var next = U32(p + 4); + p += 8; + checksum += Sum16(flags) + Sum16(padding) + Sum32(next); + if (next == last) { nextIsStart = true; continue; } + table.Add((last + delta, (int)(next - last - padding - 4), flags | (nextIsStart ? 0x10000 : 0))); + last = next; + nextIsStart = false; + } + for (var i = 0; i < 4; ++i) checksum += archive[p + i]; + return (uint)checksum == U32(p + 4); + } catch (Exception e) when (e is InvalidDataException or IndexOutOfRangeException or OverflowException) { + return false; + } + } + + private int FindDelta(uint headerOffset, uint first) { + var p = (long)headerOffset; + uint checksum = 0; + for (var i = 0; i < 16; ++i) checksum += archive[p++]; + for (var n = 2; n < 0x2000; ++n) { + if (U32(p) == checksum) return (int)(headerOffset + n * 8 + 4 - first); + for (var i = 0; i < 8; ++i) checksum += archive[p++]; + } + return 0; + } + + private byte[] DecodeBlock(long offset, int length, int flags) { + if (length < 0 || length > 0x8000 || offset < 0 || offset + length > archive.Length) + throw new InvalidDataException("Now Compress block is out of range."); + if ((flags & 0x10000) != 0) this._dictionaryCache.CopyTo(this._out, 0); + var input = archive.AsSpan((int)offset, length); + var outStart = 0x8000; + int produced; + if ((flags & 0x20) != 0) { + if ((flags & 0x1F) != 0) { + var huff = UnpackHuffman(input, 0x8000, 0x100); + produced = UnpackLzss(huff, this._out, outStart); + } else { + var huff = UnpackHuffman(input, 0x8000, 0x100); + huff.CopyTo(this._out, outStart); + produced = huff.Length; + } + } else if ((flags & 0x40) != 0) { + produced = UnpackNewLzss(input, this._out, outStart); + } else if ((flags & 0x1F) != 0) { + produced = UnpackLzss(input, this._out, outStart); + } else { + input.CopyTo(this._out.AsSpan(outStart)); + produced = length; + } + var block = this._out.AsSpan(outStart, produced).ToArray(); + // Slide: the last 32 KiB of history + output become the next block's history. + Buffer.BlockCopy(this._out, produced, this._out, 0, 0x8000); + if ((flags & 0x10000) != 0) Buffer.BlockCopy(this._out, 0, this._dictionaryCache, 0, 0x8000); + return block; + } + } + + private static int UnpackLzss(ReadOnlySpan src, byte[] dst, int dstStart) { + var s = 2; + var d = dstStart; + int bits = 0, numBits = 0; + while (s < src.Length) { + if (numBits == 0) { + bits = src[s++]; + numBits = 8; + if (s >= src.Length) throw new InvalidDataException("Now Compress LZSS data ends early."); + } + if ((bits & 0x80) != 0) { + if (d >= dst.Length) throw new InvalidDataException("Now Compress LZSS block overflows."); + dst[d++] = src[s++]; + } else { + int b1 = src[s++]; + if (s >= src.Length) throw new InvalidDataException("Now Compress LZSS data ends early."); + int b2 = src[s++]; + var offset = ((b1 & 0xF8) << 5) | b2; + var length = b1 & 0x07; + if (length == 0) { + if (s >= src.Length) throw new InvalidDataException("Now Compress LZSS data ends early."); + length = src[s++]; + } + length += 2; + if (d - offset < dstStart) throw new InvalidDataException("Now Compress LZSS match reaches before the block."); + for (var i = 0; i < length; ++i) { + if (d >= dst.Length) throw new InvalidDataException("Now Compress LZSS block overflows."); + dst[d] = dst[d - offset]; + ++d; + } + } + bits <<= 1; + --numBits; + } + return d - dstStart; + } + + private static readonly int[] LengthExtra = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,2,2,2,2,3,3,3,4,4,4,4,5,5,5,5]; + private static readonly int[] LengthBase = [0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x12,0x14,0x18,0x1c,0x20,0x24,0x28,0x30,0x38,0x40,0x50,0x60,0x70,0x80,0xa0,0xc0,0xe0]; + private static readonly int[] OffsetExtra = [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,8,8,8,8,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13]; + private static readonly int[] OffsetBase = [0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x000a,0x000c,0x000e,0x0010,0x0014,0x0018,0x001c,0x0020,0x0028,0x0030,0x0038,0x0040,0x0050,0x0060,0x0070,0x0080,0x00a0,0x00c0,0x00e0,0x0100,0x0200,0x0300,0x0400,0x0500,0x0600,0x0700,0x0800,0x0900,0x0b00,0x0d00,0x0f00,0x1100,0x1500,0x1900,0x1d00,0x2100,0x2900,0x3100,0x3900,0x4100,0x5100,0x6100,0x7100,0x8100,0xa100,0xc100,0xe100]; + + private static int UnpackNewLzss(ReadOnlySpan src, byte[] dst, int dstStart) { + if (src.Length < 4) throw new InvalidDataException("Now Compress block is too short."); + var headerSize = BinaryPrimitives.ReadUInt16BigEndian(src) - 0x2F59; + int endBits = src[3]; + var s = 4; + if (headerSize < 0 || s + headerSize > src.Length) throw new InvalidDataException("Now Compress block header is out of range."); + var header = UnpackHuffman(src.Slice(s, headerSize), 0x15A, 20); + if (header.Length != 0x15A) throw new InvalidDataException("Now Compress block code table is incomplete."); + s += headerSize; + if ((s & 1) != 0) ++s; + var mainLengths = new int[0x122]; + for (var i = 0; i < 0x122; ++i) mainLengths[i] = header[i]; + var offsetLengths = new int[0x38]; + for (var i = 0; i < 0x38; ++i) offsetLengths[i] = header[i + 0x122] != 0 ? header[i + 0x122] - 2 : 0; + var main = new Canonical(mainLengths, 20); + var offs = new Canonical(offsetLengths, 20); + var reader = new MsbReader(src[s..]); + long numBits = (long)(src.Length - s) * 8; + if (endBits != 0) numBits -= 16 - endBits; + var d = dstStart; + while (reader.Position < numBits) { + var symbol = main.Decode(ref reader); + if (symbol < 0x100) { + if (d >= dst.Length) throw new InvalidDataException("Now Compress block overflows."); + dst[d++] = (byte)symbol; + continue; + } + var ls = symbol - 0x100; + var length = LengthBase[ls] + (LengthExtra[ls] != 0 ? reader.Bits(LengthExtra[ls]) : 0) + 2; + var os = offs.Decode(ref reader); + var offset = OffsetBase[os] + (OffsetExtra[os] != 0 ? reader.Bits(OffsetExtra[os]) : 0); + if (d + length > dst.Length || d - offset < 0) throw new InvalidDataException("Now Compress match is out of range."); + for (var i = 0; i < length; ++i) { dst[d] = dst[d - offset]; ++d; } + } + return d - dstStart; + } + + private static byte[] UnpackHuffman(ReadOnlySpan src, int maxOutput, int numValues) { + var s = 0; + if (s >= src.Length) throw new InvalidDataException("Now Compress Huffman block is empty."); + int endBits = src[s++]; + var lengths = new int[numValues]; + for (var i = 0; i < numValues / 2; ++i) { + if (s >= src.Length) throw new InvalidDataException("Now Compress Huffman table is truncated."); + var v = src[s++]; + lengths[2 * i] = v >> 4; + lengths[2 * i + 1] = v & 0x0F; + } + if (s >= src.Length) throw new InvalidDataException("Now Compress Huffman table is truncated."); + int extra = src[s++]; + for (var i = 0; i < extra; ++i) { + if (s >= src.Length) throw new InvalidDataException("Now Compress Huffman table is truncated."); + var index = src[s++]; + if (index >= numValues) throw new InvalidDataException("Now Compress Huffman table index is out of range."); + lengths[index] += 16; + } + var code = new Canonical(lengths, 31); + if ((s & 1) != 0) ++s; + var reader = new MsbReader(src[Math.Min(s, src.Length)..]); + long numBits = (long)(src.Length - Math.Min(s, src.Length)) * 8; + if (endBits != 0) numBits -= 16 - endBits; + var output = new List(Math.Min(maxOutput, 0x8000)); + while (reader.Position < numBits) { + if (output.Count >= maxOutput) throw new InvalidDataException("Now Compress Huffman block overflows."); + output.Add((byte)code.Decode(ref reader)); + } + if (reader.Position != numBits) throw new InvalidDataException("Now Compress Huffman block has trailing bits."); + return [.. output]; + } + + private ref struct MsbReader(ReadOnlySpan data) { + private readonly ReadOnlySpan _data = data; + public long Position { get; private set; } + + public int Bit() { + var i = (int)(this.Position >> 3); + if (i >= this._data.Length) throw new InvalidDataException("Now Compress bit stream ended early."); + var bit = (this._data[i] >> (7 - (int)(this.Position & 7))) & 1; + ++this.Position; + return bit; + } + + public int Bits(int n) { + var v = 0; + for (var i = 0; i < n; ++i) v = (v << 1) | this.Bit(); + return v; + } + } + + /// Canonical prefix code, shortest code all zeros, decoded MSB first. + private sealed class Canonical { + private readonly int[] _count; + private readonly int[] _symbols; + private readonly int _maxLen; + + public Canonical(int[] lengths, int maxLen) { + this._maxLen = maxLen; + this._count = new int[maxLen + 1]; + var n = 0; + foreach (var l in lengths) { + if (l > maxLen) throw new InvalidDataException("Now Compress code length is too long."); + if (l > 0) { ++this._count[l]; ++n; } + } + this._symbols = new int[n]; + var offs = new int[maxLen + 2]; + for (var len = 1; len <= maxLen; ++len) offs[len + 1] = offs[len] + this._count[len]; + for (var sym = 0; sym < lengths.Length; ++sym) + if (lengths[sym] > 0) this._symbols[offs[lengths[sym]]++] = sym; + } + + public int Decode(ref MsbReader r) { + int code = 0, first = 0, index = 0; + for (var len = 1; len <= this._maxLen; ++len) { + code |= r.Bit(); + var count = this._count[len]; + if (code - first < count) return this._symbols[index + code - first]; + index += count; + first += count; + first <<= 1; + code <<= 1; + } + throw new InvalidDataException("Now Compress stream uses an unassigned code."); + } + } +} diff --git a/Hawkynt.FileFormats.Archives/FileFormats/FileFormat.NowCompress/NowCompressFormatDescriptor.cs b/Hawkynt.FileFormats.Archives/FileFormats/FileFormat.NowCompress/NowCompressFormatDescriptor.cs new file mode 100644 index 000000000..7e36e9b52 --- /dev/null +++ b/Hawkynt.FileFormats.Archives/FileFormats/FileFormat.NowCompress/NowCompressFormatDescriptor.cs @@ -0,0 +1,70 @@ +using Compression.Registry; +using static Compression.Registry.FormatHelpers; + +namespace FileFormat.NowCompress; + +/// Now Compress archive (Now Software, Macintosh). Read-only. +public sealed class NowCompressFormatDescriptor : IFormatDescriptor, IArchiveFormatOperations { + /// Suffix under which a file's resource fork is listed and extracted. + public const string ResourceForkSuffix = ".rsrc"; + + /// + public string Id => "NowCompress"; + /// + public string DisplayName => "Now Compress"; + /// + public FormatCategory Category => FormatCategory.Archive; + /// + public FormatCapabilities Capabilities => + FormatCapabilities.CanList | FormatCapabilities.CanExtract | FormatCapabilities.CanTest | + FormatCapabilities.SupportsMultipleEntries | FormatCapabilities.SupportsDirectories; + /// + public string DefaultExtension => ".now"; + // .sea is shared with every Mac self-extractor; the archive is recognised by content. + /// + public IReadOnlyList Extensions => [".now"]; + /// + public IReadOnlyList CompoundExtensions => []; + /// + public IReadOnlyList MagicSignatures => [ + new([0x00, 0x02, 0x00, 0x60, 0x00, 0x01], Confidence: 0.6, Mask: [0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF]), + ]; + /// + public IReadOnlyList Methods => [new("now", "Now Compress")]; + /// + public string? TarCompressionFormatId => null; + /// + public AlgorithmFamily Family => AlgorithmFamily.Archive; + /// + public string Description => "Now Compress Macintosh archive (LZSS / Huffman blocks); read-only"; + + private static IEnumerable<(NowCompressEntry Entry, bool Resource, string Name)> Items(List entries) { + foreach (var e in entries) { + if (e.IsDirectory) { yield return (e, false, e.Path); continue; } + if (e.DataSize > 0 || e.ResourceSize == 0) yield return (e, false, e.Path); + if (e.ResourceSize > 0) yield return (e, true, e.Path + ResourceForkSuffix); + } + } + + /// + public List List(Stream stream, string? password) + => Items(NowCompressArchive.Read(stream)).Select((x, i) => new ArchiveEntryInfo(i, x.Name, + x.Entry.IsDirectory ? 0 : x.Resource ? x.Entry.ResourceSize : x.Entry.DataSize, -1, + x.Entry.IsDirectory ? "" : "Now Compress", x.Entry.IsDirectory, false, x.Entry.LastModified)).ToList(); + + /// + public void Extract(Stream stream, string outputDir, string? password, string[]? files) { + foreach (var (e, resource, name) in Items(NowCompressArchive.Read(stream))) { + if (e.IsDirectory || files is { Length: > 0 } && !MatchesFilter(name, files)) continue; + WriteFile(outputDir, name, resource ? e.Resource : e.Data); + } + } + + /// + public byte[] ExtractEntryToMemory(Stream archive, string entryName, string? password) { + foreach (var (e, resource, name) in Items(NowCompressArchive.Read(archive))) + if (!e.IsDirectory && string.Equals(name, entryName, StringComparison.OrdinalIgnoreCase)) + return resource ? e.Resource : e.Data; + return []; + } +} diff --git a/Hawkynt.FileFormats.Archives/FileFormats/FileFormat.NowCompress/THIRD-PARTY-NOTICE.XADMaster.txt b/Hawkynt.FileFormats.Archives/FileFormats/FileFormat.NowCompress/THIRD-PARTY-NOTICE.XADMaster.txt new file mode 100644 index 000000000..20b0d9c06 --- /dev/null +++ b/Hawkynt.FileFormats.Archives/FileFormats/FileFormat.NowCompress/THIRD-PARTY-NOTICE.XADMaster.txt @@ -0,0 +1,14 @@ +Now Compress support in this folder (NowCompressArchive) is converted from XADMaster, the archive +library of The Unarchiver. + +Upstream: https://github.com/MacPaw/XADMaster +Revision: 7cb9ee0abbb163f261e4cb74501e15067032319c +Files: XADNowCompressParser.m, XADNowCompressHandle.m +Licence: GNU Lesser General Public License, version 2.1 or (at your option) any later version. + This repository is distributed under LGPL-3.0-or-later, which the "any later version" + grant permits. + +Copyright (c) 2017-present, MacPaw Way Ltd. and the XADMaster contributors. + +The length/offset base and extra-bit tables of the "new LZSS" blocks are copied verbatim; all other +code was rewritten in C# for this codebase. diff --git a/Hawkynt.FileFormats.Archives/README.md b/Hawkynt.FileFormats.Archives/README.md index d3f8c6198..62e381e01 100644 --- a/Hawkynt.FileFormats.Archives/README.md +++ b/Hawkynt.FileFormats.Archives/README.md @@ -132,6 +132,7 @@ Every State, Test, Maintenance, Compress/Decompress and Demux/Mux/Remux cell is | [LHA / LZH](https://en.wikipedia.org/wiki/LHA_(file_format)) | `Lzh` | `.lzh` `.lha` | R/W | ✅ | defrag · wipe | | [GitHub](https://github.com/jca02266/lha) | | [LZX (Amiga)](https://en.wikipedia.org/wiki/LZX) | `LzxAmiga` | `.lzx` | R/W | ✅ | defrag · wipe | | [Aminet](https://aminet.net) | | [mtree](https://man.freebsd.org/cgi/man.cgi?query=mtree&sektion=5) | `Mtree` | `.mtree` | WORM | ✅ | — | Filesystem metadata manifest; does not embed file bodies, so CWB does not dereference `contents=` host paths | [FreeBSD mtree(5)](https://man.freebsd.org/cgi/man.cgi?query=mtree&sektion=5) | +| Now Compress | `NowCompress` | `.now` | R | ✅ | — | Read-only; folders, resource forks as `.rsrc`; all four block codings | [GitHub](https://github.com/MacPaw/XADMaster) | | [NuFX / ShrinkIt](https://en.wikipedia.org/wiki/ShrinkIt) | `NuFx` | `.shk` `.sdk` `.bxy` | R/W | ✅ | defrag · shrink · wipe | | [nulib.com](https://nulib.com/library/FTN.e08002.htm) | | PackDisk (Amiga) | `PackDisk` | `.pdsk` | WORM | ✅ | defrag | Whole-disk archiver: entries are track_NNN.raw | [Aminet](https://aminet.net) | | PackIt | `PackIt` | `.pit` | R/W | ✅ | defrag · wipe | | [GitHub](https://github.com/MacPaw/XADMaster) | @@ -548,7 +549,7 @@ Use it when a .NET process needs to enumerate, extract, test, create, edit or in -Every public and protected member of all 2578 types, generated from the built assembly and its XML documentation, is in [REFERENCE.md](https://github.com/Hawkynt/CompressionWorkbench/blob/main/Hawkynt.FileFormats.Archives/REFERENCE.md). +Every public and protected member of all 2581 types, generated from the built assembly and its XML documentation, is in [REFERENCE.md](https://github.com/Hawkynt/CompressionWorkbench/blob/main/Hawkynt.FileFormats.Archives/REFERENCE.md). diff --git a/Hawkynt.FileFormats.Archives/REFERENCE.md b/Hawkynt.FileFormats.Archives/REFERENCE.md index 4f6a3d7bd..5b539bcbc 100644 --- a/Hawkynt.FileFormats.Archives/REFERENCE.md +++ b/Hawkynt.FileFormats.Archives/REFERENCE.md @@ -22790,6 +22790,60 @@ The NIfTI header revision the file declares. | `Nifti1` | `1` | | | `Nifti2` | `2` | | +### Namespace `FileFormat.NowCompress` + +[`NowCompressArchive`](#nowcompressarchive) · [`NowCompressEntry`](#nowcompressentry) · [`NowCompressFormatDescriptor`](#nowcompressformatdescriptor) + +#### `NowCompressArchive` + +Now Compress (Now Software, Macintosh, early 1990s): a directory of 110-byte records followed by one stream per file, each a checksummed table of blocks; blocks are stored or compressed with a 32 KiB LZSS, a static Huffman code, both, or a later Huffman-coded LZSS. Each file's stream carries the resource fork, then the data fork. The format stores no checksum of the data itself, so decoding errors surface only as structural failures. + +| Member | Signature | Summary | +| --- | --- | --- | +| `IsNowCompress` | `static bool IsNowCompress(ReadOnlySpan b)` | Whether the bytes start like a Now Compress archive (magic, file count, first name, header checksum). | +| `Read` | `static List Read(Stream stream)` | Parses the directory and decodes every fork. | + +#### `NowCompressEntry` + +One file or folder of a Now Compress archive. + +| Member | Signature | Summary | +| --- | --- | --- | +| `NowCompressEntry` | `NowCompressEntry()` | | +| `DataSize` | `long DataSize { get; init; }` | Gets the data fork size. | +| `Data` | `byte[] Data { get; }` | Gets the decoded data fork. | +| `IsDirectory` | `bool IsDirectory { get; init; }` | Gets whether this is a folder. | +| `LastModified` | `DateTime? LastModified { get; init; }` | Gets the modification time. | +| `Path` | `string Path { get; init; }` | Gets the path inside the archive, '/'-separated. | +| `ResourceSize` | `long ResourceSize { get; init; }` | Gets the resource fork size. | +| `Resource` | `byte[] Resource { get; }` | Gets the decoded resource fork. | + +#### `NowCompressFormatDescriptor` + +Now Compress archive (Now Software, Macintosh). Read-only. + +Implements `IArchiveFormatOperations`, `IFormatDescriptor`. + +| Member | Signature | Summary | +| --- | --- | --- | +| `NowCompressFormatDescriptor` | `NowCompressFormatDescriptor()` | | +| `ResourceForkSuffix` | `const string ResourceForkSuffix` | Suffix under which a file's resource fork is listed and extracted. | +| `Capabilities` | `FormatCapabilities Capabilities { get; }` | | +| `Category` | `FormatCategory Category { get; }` | | +| `CompoundExtensions` | `IReadOnlyList CompoundExtensions { get; }` | | +| `DefaultExtension` | `string DefaultExtension { get; }` | | +| `Description` | `string Description { get; }` | | +| `DisplayName` | `string DisplayName { get; }` | | +| `Extensions` | `IReadOnlyList Extensions { get; }` | | +| `Family` | `AlgorithmFamily Family { get; }` | | +| `Id` | `string Id { get; }` | | +| `MagicSignatures` | `IReadOnlyList MagicSignatures { get; }` | | +| `Methods` | `IReadOnlyList Methods { get; }` | | +| `TarCompressionFormatId` | `string TarCompressionFormatId { get; }` | | +| `ExtractEntryToMemory` | `byte[] ExtractEntryToMemory(Stream archive, string entryName, string password)` | | +| `Extract` | `void Extract(Stream stream, string outputDir, string password, string[] files)` | | +| `List` | `List List(Stream stream, string password)` | | + ### Namespace `FileFormat.Nrbf` [`NrbfFormatDescriptor`](#nrbfformatdescriptor) diff --git a/docs/catalogue/our-registry.csv b/docs/catalogue/our-registry.csv index a8bf87611..91fc4bbcd 100644 --- a/docs/catalogue/our-registry.csv +++ b/docs/catalogue/our-registry.csv @@ -349,6 +349,7 @@ format,Nifti,NIfTI,Archive,,.nii;.nii.gz,Y,Y,, format,Nilfs1,NILFS v1,Archive,Y,.nilfs1;.nilfs,Y,Y,Y,Y format,Nilfs2,NILFS2,Archive,Y,.nilfs2;.nilfs,Y,Y,Y,Y format,Npy,NumPy NPY,Archive,,.npy,Y,Y,Y, +format,NowCompress,Now Compress,Archive,,.now,Y,Y,, format,Npz,NumPy NPZ,Archive,,.npz,Y,Y,Y, format,Nrbf,.NET BinaryFormatter / NRBF object graph,Archive,,.nrbf,Y,Y,Y, format,Nrg,NRG,Archive,,.nrg,Y,Y,Y,Y diff --git a/docs/catalogue/reference-formats.csv b/docs/catalogue/reference-formats.csv index ab231c065..babf5c8b8 100644 --- a/docs/catalogue/reference-formats.csv +++ b/docs/catalogue/reference-formats.csv @@ -48,7 +48,7 @@ StuffIt X,sitx,archive,,,R,,R,fmt/399,RW,4,https://en.wikipedia.org/wiki/StuffIt DiskDoubler,dd,archive,,,R,,,,Y,2,https://en.wikipedia.org/wiki/DiskDoubler,DiskDoubler,Y,Y,,PARTIAL,,stored only; compressed members are returned as raw compressed bytes without an error (DiskDoublerReader.cs) Compact Pro,cpt,archive,,,R,,,,Y,2,https://en.wikipedia.org/wiki/Compact_Pro,CompactPro,Y,Y,Y,PARTIAL,,stored and RLE only; LZ+RLE and LZ+Huffman unsupported (CompactProReader.cs) PackIt,pit,archive,,,R,,,,Y,2,https://en.wikipedia.org/wiki/PackIt,PackIt,Y,Y,Y,PARTIAL,,PMag (stored) only; PMa4 Huffman members are returned raw (PackItReader.cs) -Now Compress,now,archive,,,R,,,,,1,,,,,,MISSING,, +Now Compress,now,archive,,,R,,,,,1,https://github.com/MacPaw/XADMaster,NowCompress,Y,,,OK,,read-only: no writer exists to verify against LZX (Amiga),lzx,archive,,,R,,R,,Y,3,https://en.wikipedia.org/wiki/LZX,LzxAmiga,Y,Y,Y,OK,, NuFX / ShrinkIt,shk;sdk;bxy,archive,,,,,,,Y,1,https://wiki.preterhuman.net/NuFX,NuFx,Y,Y,Y,OK,, Spark (Acorn),spk;arc,archive,,,,,,,Y,1,https://en.wikipedia.org/wiki/Spark_(archiver),Spark,Y,Y,Y,OK,, @@ -189,7 +189,7 @@ DiskDoubler methods (ADn/DDn/Method2),,codec,,,R,,,,,1,,,,,,MISSING,, Compact Pro LZH/RLE,,codec,,,R,,,,,1,,,,,,MISSING,, Squeeze (Huffman),,codec,,,R,,,,,1,,Squeeze,Y,Y,,OK,, Crunch CP/M (LZW),,codec,,,R,,,,,1,,Crunch,Y,Y,,OK,, -Now Compress method,,codec,,,R,,,,,1,,,,,,MISSING,, +Now Compress method,,codec,,,R,,,,,1,,NowCompress,Y,,,OK,, WinZip JPEG (ZIP method 96),,codec,,,R,,,,,1,,,,,,MISSING,, WinZip WavPack (ZIP method 97),,codec,,,R,,,,,1,,,,,,MISSING,, tar sparse files,,codec,,,R,,,,,1,,Tar,Y,Y,Y,PARTIAL,,GNU/PAX sparse members are not hole-reconstructed (TarReader.cs) From 6a72816879c0248b9a8d57f8455c5f7a43572276 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 23 Oct 2026 13:53:06 +0000 Subject: [PATCH 2/4] * refresh the application screenshot --- screenshots/main-window.png | Bin 66235 -> 66606 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/screenshots/main-window.png b/screenshots/main-window.png index a9ceb7f7ce233693ac240e941d4af64380209648..aa69fe22edc4f186bfed005a94faa07823a27224 100644 GIT binary patch delta 28331 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 Orz%RCiX??UUi~KsRH1tS delta 27813 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 Dp<1tG From 75000e3e88fa57432546623af33c07c362b5d745 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 23 Oct 2026 15:15:45 +0000 Subject: [PATCH 3/4] * refresh the archive browser screenshot --- docs/screenshots/archive-browser.png | Bin 65657 -> 66898 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/screenshots/archive-browser.png b/docs/screenshots/archive-browser.png index e3795c0d04a8041389e0aaa3edc8cc5c89e36820..8d41f3335b0d5b7d5b69e0f6a677f8f31ea78784 100644 GIT binary patch literal 66898 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 `BQZ%^Mw^$d{Py8%WP_`*}*; z%#)0Rk~{p+Fi<(qI>Wzz*@tczFKH1_8!6s%w6wM+uqRD~VGDqee%E2tQd?+usb75S z9!|12*%C*pW{$>>W!)u$For1pFPfU^GrjYSKw40clY8SZuMiSbO8UImDMvBlAsr?C zXiZyG{p(u-V2g`&n5a&@{+DJD)<>}uS{^YS!xCwH?>znwYdtz4x<5<|m_U5rjw*iL z1r<9rJr&56Kgl8$Y`8vsymE52)8!QJyke`fJ0X-lDknAdV8vrSl%(vy(lV&=Tv>l) z<#;QpH4pb0GG+v`HkW5sy`T5?R^|E5p?7vPcigiime;8X+fhT8-~I&34(l@eXBNYr z!KPH9*sq2`4T{;$Uf79r13BP)Fs{?~1aF z0s}n_eOu@GzN@S2)3czHaueNJEkp;6Y&b)!j+IK7_yg;0yY-3ljqYhM7xJs9JhZm# z{_(?7xfCSTHuXydbP749W`>qW2VbFS%8QJ_=X62|jd1;@#+8-gnwK z*lZt(iMLk{aP$u2bDI=P=!TZ-@%}2W<){*&uh9Py8Fn`G±w#Ds+qFF}z6V`0P@ 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

J-t(C?D*vNbSd$Mpldw%6G^3`$t6)P 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 O*JNyHeySLKDeAvN*8HCU From 67c60ff225f5aed5a07414ee0d318d803a6c9716 Mon Sep 17 00:00:00 2001 From: Hawkynt Date: Wed, 28 Oct 2026 06:49:48 +0100 Subject: [PATCH 4/4] # reject ambiguous firmware payloads before writing an image Adding a second named payload to Intel HEX could silently discard a file because the shared image builder kept only the first payload in filesystem enumeration order. Reject multiple non-metadata payloads, including an empty first payload, before any output is written. Tests verify creation refusal and byte-preserving add refusal. Verified all three regressions fail before the fix and pass after it, 93 focused tests, 34280 required tests with 1582 skips and no failures, and three package documentation checks. --- .../FirmwareHex/FirmwareHexPayloadTests.cs | 37 +++++++++++++++++++ .../FirmwareHexWriter.cs | 5 ++- 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 Compression.Tests/FirmwareHex/FirmwareHexPayloadTests.cs diff --git a/Compression.Tests/FirmwareHex/FirmwareHexPayloadTests.cs b/Compression.Tests/FirmwareHex/FirmwareHexPayloadTests.cs new file mode 100644 index 000000000..bbbc898af --- /dev/null +++ b/Compression.Tests/FirmwareHex/FirmwareHexPayloadTests.cs @@ -0,0 +1,37 @@ +using Compression.Registry; +using FileFormat.FirmwareHex; + +namespace Compression.Tests.FirmwareHex; + +[TestFixture] +public sealed class FirmwareHexPayloadTests { + [TestCase(false)] + [TestCase(true)] + public void Create_RejectsMultiplePayloadsWithoutWritingOutput(bool emptyFirst) { + var descriptor = new IntelHexFormatDescriptor(); + using var output = new MemoryStream(); + var inputs = new[] { + ArchiveInputInfo.InMemory("first.bin", emptyFirst ? [] : [1, 2, 3]), + ArchiveInputInfo.InMemory("second.bin", [9, 8, 7]), + }; + + Assert.Throws(() => + ((IArchiveCreatable)descriptor).Create(output, inputs, new FormatCreateOptions())); + Assert.That(output.Length, Is.Zero); + } + + [Test] + public void Add_RejectsAnotherPayloadWithoutChangingTheArchive() { + var descriptor = new IntelHexFormatDescriptor(); + using var archive = new MemoryStream(); + ((IArchiveCreatable)descriptor).Create(archive, + [ArchiveInputInfo.InMemory("firmware.bin", [1, 2, 3])], new FormatCreateOptions()); + var original = archive.ToArray(); + archive.Position = 0; + + Assert.Throws(() => ((IArchiveModifiable)descriptor).Add(archive, + [ArchiveInputInfo.InMemory("ADD.BIN", [9, 8, 7])])); + Assert.That(archive.ToArray(), Is.EqualTo(original)); + } + +} diff --git a/Hawkynt.FileFormats.FileSystems/FileFormats/FileFormat.FirmwareHex/FirmwareHexWriter.cs b/Hawkynt.FileFormats.FileSystems/FileFormats/FileFormat.FirmwareHex/FirmwareHexWriter.cs index 6c7d4b452..1c9e17266 100644 --- a/Hawkynt.FileFormats.FileSystems/FileFormats/FileFormat.FirmwareHex/FirmwareHexWriter.cs +++ b/Hawkynt.FileFormats.FileSystems/FileFormats/FileFormat.FirmwareHex/FirmwareHexWriter.cs @@ -33,6 +33,7 @@ public static class FirmwareHexWriter { /// one the reader rendered. An input list with no payload describes an image /// with no data, which both formats can write. /// + /// More than one non-metadata payload is supplied. public static FirmwareImage ImageFrom(IReadOnlyList inputs, string sourceFormat) { ArgumentNullException.ThrowIfNull(inputs); @@ -53,7 +54,9 @@ public static FirmwareImage ImageFrom(IReadOnlyList inputs, st } // Any other single input is the payload, whatever it is called: a caller // converting a .bin into a .hex should not have to rename it first. - payload ??= input.ReadContent(); + if (payload is not null) + throw new InvalidDataException($"{sourceFormat} represents one logical firmware payload; multiple payload inputs are ambiguous."); + payload = input.ReadContent(); } List<(uint Address, byte[] Data)> segments;