diff --git a/fmp/fmp_table.go b/fmp/fmp_table.go index 0166ad4..3d81cc0 100644 --- a/fmp/fmp_table.go +++ b/fmp/fmp_table.go @@ -2,14 +2,43 @@ package fmp func (ctx *FmpFile) Tables() []*FmpTable { tables := make([]*FmpTable, 0) - metaDict := ctx.Dictionary.get([]uint64{4, 1, 7}) - if metaDict == nil { - return tables - } - for _, meta := range *metaDict.Children { - name := decodeByteSeq(meta.Children.get([]uint64{16}).Value) - table := &FmpTable{Name: name} - tables = append(tables, table) + + for _, chunk := range ctx.Chunks { + if chunk.Key != 3 || chunk.Type != FMP_CHUNK_SIMPLE_KEY_VALUE { + continue + } + + for _, chunk = range ctx.Chunks { + if chunk.Key != 16 { + continue + } + + for _, chunk = range ctx.Chunks { + if chunk.Key != 5 { + continue + } + + for tablePath, chunk := range ctx.Chunks { + if chunk.Key >= 128 { + continue + } + + // Found a table! + println("Found one at", tablePath) + } + } + } } + + // metaDict := ctx.Dictionary.get([]uint64{4, 1, 7}) + // if metaDict == nil { + // return tables + // } + // for _, meta := range *metaDict.Children { + // name := decodeByteSeq(meta.Children.get([]uint64{16}).Value) + // table := &FmpTable{Name: name} + // tables = append(tables, table) + // } + return tables }