From 27401b6ea459921a6152ab1744da1618358465f4 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sun, 10 Jul 2022 13:18:30 -0600 Subject: Rename the module, mv pkg lib --- pkg/btrfs/btrfsitem/items.go | 77 -------------------------------------------- 1 file changed, 77 deletions(-) delete mode 100644 pkg/btrfs/btrfsitem/items.go (limited to 'pkg/btrfs/btrfsitem/items.go') diff --git a/pkg/btrfs/btrfsitem/items.go b/pkg/btrfs/btrfsitem/items.go deleted file mode 100644 index 5ad3471..0000000 --- a/pkg/btrfs/btrfsitem/items.go +++ /dev/null @@ -1,77 +0,0 @@ -package btrfsitem - -import ( - "fmt" - "reflect" - - "lukeshu.com/btrfs-tools/pkg/binstruct" - "lukeshu.com/btrfs-tools/pkg/btrfs/btrfssum" - "lukeshu.com/btrfs-tools/pkg/btrfs/internal" -) - -type Type = internal.ItemType - -type Item interface { - isItem() -} - -type Error struct { - Dat []byte - Err error -} - -func (Error) isItem() {} - -func (o Error) MarshalBinary() ([]byte, error) { - return o.Dat, nil -} - -func (o *Error) UnmarshalBinary(dat []byte) (int, error) { - o.Dat = dat - return len(dat), nil -} - -// Rather than returning a separate error value, return an Error item. -func UnmarshalItem(key internal.Key, csumType btrfssum.CSumType, dat []byte) Item { - var gotyp reflect.Type - if key.ItemType == UNTYPED_KEY { - var ok bool - gotyp, ok = untypedObjID2gotype[key.ObjectID] - if !ok { - return Error{ - Dat: dat, - Err: fmt.Errorf("btrfsitem.UnmarshalItem({ItemType:%v, ObjectID:%v}, dat): unknown object ID for untyped item", - key.ItemType, key.ObjectID), - } - } - } else { - var ok bool - gotyp, ok = keytype2gotype[key.ItemType] - if !ok { - return Error{ - Dat: dat, - Err: fmt.Errorf("btrfsitem.UnmarshalItem({ItemType:%v}, dat): unknown item type", key.ItemType), - } - } - } - retPtr := reflect.New(gotyp) - if csums, ok := retPtr.Interface().(*ExtentCSum); ok { - csums.ChecksumSize = csumType.Size() - } - n, err := binstruct.Unmarshal(dat, retPtr.Interface()) - if err != nil { - return Error{ - Dat: dat, - Err: fmt.Errorf("btrfsitem.UnmarshalItem({ItemType:%v}, dat): %w", key.ItemType, err), - } - - } - if n < len(dat) { - return Error{ - Dat: dat, - Err: fmt.Errorf("btrfsitem.UnmarshalItem({ItemType:%v}, dat): left over data: got %v bytes but only consumed %v", - key.ItemType, len(dat), n), - } - } - return retPtr.Elem().Interface().(Item) -} -- cgit v1.2.3-2-g168b