go-vise

Constrained Size Output Virtual Machine
Info | Log | Files | Refs | README | LICENSE

commit e2d329b3f739ce7dbb1957b015f1a64e70ea8784
parent 3b5fc85b650b75272d0410d4e35ed94c6de85e14
Author: lash <dev@holbrook.no>
Date:   Wed, 15 Jan 2025 00:05:35 +0000

Finish fs dump with and without session id

Diffstat:
Mdb/db.go | 6+++++-
Mdb/fs/dump.go | 7++-----
Mdb/fs/dump_test.go | 12++++++------
Mdb/fs/fs.go | 3++-
4 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/db/db.go b/db/db.go @@ -164,7 +164,11 @@ func(bd *DbBase) SetLanguage(ln *lang.Language) { } // SetSession implements the Db interface. func(bd *DbBase) SetSession(sessionId string) { - bd.baseDb.sid = append([]byte(sessionId), 0x2E) + if sessionId == "" { + bd.baseDb.sid = []byte{} + } else { + bd.baseDb.sid = append([]byte(sessionId), 0x2E) + } } // SetLock implements the Db interface. diff --git a/db/fs/dump.go b/db/fs/dump.go @@ -32,13 +32,11 @@ func(fdb *fsDb) Dump(ctx context.Context, key []byte) (*db.Dumper, error) { if err != nil { return nil, err } - kk = append([]byte{k[0]}, kk...) return db.NewDumper(fdb.dumpFunc).WithFirst(kk, vv), nil } } for len(fdb.elements) > 0 { v := fdb.elements[0] - logg.TraceCtxf(ctx, "el", "v", v) fdb.elements = fdb.elements[1:] s := v.Name() k := []byte(s) @@ -48,7 +46,7 @@ func(fdb *fsDb) Dump(ctx context.Context, key []byte) (*db.Dumper, error) { k[0] -= 0x30 kk, err := fdb.DecodeKey(ctx, k) if err != nil { - return nil, err + continue } kkk := append([]byte{k[0]}, kk...) if bytes.HasPrefix(kkk, key) { @@ -56,7 +54,6 @@ func(fdb *fsDb) Dump(ctx context.Context, key []byte) (*db.Dumper, error) { if err != nil { return nil, err } - kk = append([]byte{k[0]}, kk...) return db.NewDumper(fdb.dumpFunc).WithFirst(kk, vv), nil } } @@ -82,7 +79,7 @@ func(fdb *fsDb) dumpFunc(ctx context.Context) ([]byte, []byte) { if err != nil { return nil, nil } - return kkk, vv + return kk, vv } return nil, nil } diff --git a/db/fs/dump_test.go b/db/fs/dump_test.go @@ -45,14 +45,14 @@ func TestDumpFs(t *testing.T) { t.Fatal(err) } k, v := o.Next(ctx) - if !bytes.Equal(k, append([]byte{db.DATATYPE_USERDATA}, []byte("foobar")...)) { + if !bytes.Equal(k, []byte("foobar")) { t.Fatalf("expected key 'foobar', got %s", k) } if !bytes.Equal(v, []byte("pinky")) { t.Fatalf("expected val 'pinky', got %s", v) } k, v = o.Next(ctx) - if !bytes.Equal(k, append([]byte{db.DATATYPE_USERDATA}, []byte("foobarbaz")...)) { + if !bytes.Equal(k, []byte("foobarbaz")) { t.Fatalf("expected key 'foobarbaz', got %s", k) } if !bytes.Equal(v, []byte("blinky")) { @@ -96,14 +96,14 @@ func TestDumpBinary(t *testing.T) { t.Fatal(err) } k, v := o.Next(ctx) - if !bytes.Equal(k, append([]byte{db.DATATYPE_USERDATA}, []byte{0x01, 0x02, 0x03}...)) { + if !bytes.Equal(k, []byte{0x01, 0x02, 0x03}) { t.Fatalf("expected key '0x010203', got %x", k) } if !bytes.Equal(v, []byte("inky")) { t.Fatalf("expected val 'inky', got %s", v) } k, v = o.Next(ctx) - if !bytes.Equal(k, append([]byte{db.DATATYPE_USERDATA}, []byte{0x01, 0x02, 0x04}...)) { + if !bytes.Equal(k, []byte{0x01, 0x02, 0x04}) { t.Fatalf("expected key '0x010204', got %x", k) } if !bytes.Equal(v, []byte("pinky")) { @@ -148,14 +148,14 @@ func TestDumpSessionBinary(t *testing.T) { t.Fatal(err) } k, v := o.Next(ctx) - if !bytes.Equal(k, append([]byte{db.DATATYPE_USERDATA}, []byte{0x01, 0x02, 0x03}...)) { + if !bytes.Equal(k, []byte{0x01, 0x02, 0x03}) { t.Fatalf("expected key '0x010203', got %x", k) } if !bytes.Equal(v, []byte("inky")) { t.Fatalf("expected val 'inky', got %s", v) } k, v = o.Next(ctx) - if !bytes.Equal(k, append([]byte{db.DATATYPE_USERDATA}, []byte{0x01, 0x02, 0x04}...)) { + if !bytes.Equal(k, []byte{0x01, 0x02, 0x04}) { t.Fatalf("expected key '0x010204', got %x", k) } if !bytes.Equal(v, []byte("pinky")) { diff --git a/db/fs/fs.go b/db/fs/fs.go @@ -4,6 +4,7 @@ import ( "context" "errors" "encoding/base64" + "fmt" "io/fs" "io/ioutil" "os" @@ -86,7 +87,7 @@ func(fdb *fsDb) DecodeKey(ctx context.Context, key []byte) ([]byte, error) { oldKey := key key, err = base64.StdEncoding.DecodeString(string(key)) if err != nil { - return []byte{}, err + return []byte{}, fmt.Errorf("base64 decode error '%s': %v", oldKey, err) } logg.TraceCtxf(ctx, "decoding base64 key", "base64", oldKey, "bin", key) return key, nil