From 7981a257904b7049db214c4ced7b58c33021853c Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Sun, 12 Jun 2022 18:08:24 +0000 Subject: [PATCH] ByteStream print unknown bytes for inspection --- kiss/src/kiss/ByteStream.hx | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/kiss/src/kiss/ByteStream.hx b/kiss/src/kiss/ByteStream.hx index 42f994c0..e4de5f6b 100644 --- a/kiss/src/kiss/ByteStream.hx +++ b/kiss/src/kiss/ByteStream.hx @@ -72,27 +72,35 @@ class ByteStream { } public function unknownBytes(num:Int) { - trace('Warning: ignoring $num unknown bytes starting at ${posToPrint()} in $file'); - paddingBytes(num); + var startPos = position; + paddingBytes(num, true); + var hexString = [for (p in collectedPadding) p.hex(2)].join(" "); + trace('Warning: ignoring $num unknown bytes starting at ${posToPrint(startPos)} in $file: $collectedPadding ($hexString)'); } - public function paddingBytes(num) { - for (_ in 0...num) readByte(); + var collectedPadding:Array = []; + public function paddingBytes(num, collect=false) { + if (collect) + collectedPadding = [for (_ in 0...num) readByte()]; + else + for (_ in 0...num) readByte(); } - public function paddingUntil(pos:String) { + public function paddingUntil(pos:String, collect=false) { var nextPos = Std.parseInt(pos); + var startPos = position; if (nextPos <= position) { throw 'given position $pos ($nextPos) is <= stream ${posToPrint()} in $file'; } - paddingBytes(nextPos - position); - return nextPos - position; + paddingBytes(nextPos - position, collect); + return nextPos - startPos; } public function unknownUntil(pos:String) { var startPos = position; - var num = paddingUntil(pos); - trace('Warning: ignoring $num unknown bytes starting at ${posToPrint(startPos)} in $file'); + var num = paddingUntil(pos, true); + var hexString = [for (p in collectedPadding) p.hex(2)].join(" "); + trace('Warning: ignoring $num unknown bytes starting at ${posToPrint(startPos)} in $file: $collectedPadding ($hexString)'); } public function tracePosition() {