1
0
mirror of https://github.com/garraflavatra/go-fmp.git synced 2025-06-28 04:25:11 +00:00

Add debug print

This commit is contained in:
2025-06-11 22:32:46 +02:00
parent 91e5db912d
commit c5478ea6d0
2 changed files with 8 additions and 6 deletions

View File

@ -128,16 +128,16 @@ func (ctx *FmpFile) readChunk(payload []byte) (*FmpChunk, error) {
length := payload[4]
return &FmpChunk{
Type: FMP_CHUNK_LONG_KEY_VALUE,
Key: parseVarUint32(payload[1 : 1+3]), // todo, won't work?
Key: parseVarUint32(payload[1 : 1+3]),
Value: payload[5 : 5+length],
Length: 5 + uint32(length),
}, nil
}
if payload[0] == 0x17 {
length := parseVarUint32(payload[1 : 1+3]) // todo, won't work?
length := uint32(binary.BigEndian.Uint16(payload[4 : 4+2]))
return &FmpChunk{
Type: FMP_CHUNK_LONG_KEY_VALUE,
Key: uint32(binary.BigEndian.Uint16(payload[4 : 4+2])),
Key: uint32(binary.BigEndian.Uint16(payload[1 : 1+2])),
Value: payload[6 : 6+length],
Length: 6 + uint32(length),
}, nil
@ -175,12 +175,12 @@ func (ctx *FmpFile) readChunk(payload []byte) (*FmpChunk, error) {
}, nil
}
if payload[0] == 0x0F {
length := binary.BigEndian.Uint16(payload[3 : 3+2])
length := uint32(binary.BigEndian.Uint16(payload[3 : 3+2]))
return &FmpChunk{
Type: FMP_CHUNK_SEGMENTED_DATA,
Index: uint32(binary.BigEndian.Uint16(payload[1 : 1+2])),
Value: payload[5 : 5+length],
Length: 5 + uint32(length),
Length: 5 + length,
}, nil
}

View File

@ -3,6 +3,7 @@ package fmp
import (
"bytes"
"encoding/binary"
"encoding/hex"
"io"
"os"
"time"
@ -57,6 +58,7 @@ func OpenFile(path string) (*FmpFile, error) {
ctx.Sectors = make([]*FmpSector, ctx.NumSectors)
for i := uint(0); i < ctx.NumSectors; i++ {
println("reading sector ", i)
sector, err := ctx.readSector()
if err != nil {
return nil, err
@ -120,6 +122,7 @@ func (ctx *FmpFile) readSector() (*FmpSector, error) {
sector.Chunks = make([]*FmpChunk, 0)
for {
println(hex.EncodeToString(payload[0:2]))
chunk, err := ctx.readChunk(payload)
if err == io.EOF {
break
@ -134,7 +137,6 @@ func (ctx *FmpFile) readSector() (*FmpSector, error) {
if chunk.Length == 0 {
panic("chunk length not set")
}
print(chunk.String() + "\n")
payload = payload[chunk.Length:]
}