1
1
mirror of https://github.com/wader/fq.git synced 2024-11-27 14:14:58 +03:00
fq/format/bitcoin/bitcoin_blkdat.go
2023-05-01 13:19:04 +02:00

39 lines
783 B
Go

package bitcoin
import (
"github.com/wader/fq/format"
"github.com/wader/fq/pkg/decode"
"github.com/wader/fq/pkg/interp"
)
var bitcoinBlockGroup decode.Group
func init() {
interp.RegisterFormat(
format.Bitcoin_Blkdat,
&decode.Format{
Description: "Bitcoin blk.dat",
Groups: []*decode.Group{format.Probe},
Dependencies: []decode.Dependency{
{Groups: []*decode.Group{format.Bitcoin_Block}, Out: &bitcoinBlockGroup},
},
DecodeFn: decodeBlkDat,
RootArray: true,
RootName: "blocks",
})
}
func decodeBlkDat(d *decode.D) any {
validBlocks := 0
for !d.End() {
d.FieldFormat("block", &bitcoinBlockGroup, format.Bitcoin_Block_In{HasHeader: true})
validBlocks++
}
if validBlocks == 0 {
d.Fatalf("no valid blocks found")
}
return nil
}