From fd100fd8425b82c09eba2e291d1dcbfcb1242774 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sun, 5 Jun 2022 10:36:03 -0600 Subject: more, fixup array init --- pkg/btrfs/Makefile | 2 +- pkg/btrfs/btrfsitem/item_chunk.go | 1 + pkg/btrfs/btrfsitem/item_dir.go | 1 + pkg/btrfs/btrfsitem/item_inoderef.go | 1 + pkg/btrfs/btrfsitem/item_uuid.go | 10 ++++------ pkg/btrfs/internal/itemtype.go | 4 ++-- 6 files changed, 10 insertions(+), 9 deletions(-) (limited to 'pkg') diff --git a/pkg/btrfs/Makefile b/pkg/btrfs/Makefile index 9777cbe..c79b271 100644 --- a/pkg/btrfs/Makefile +++ b/pkg/btrfs/Makefile @@ -38,7 +38,7 @@ internal/itemtype.go: btrfsitem/items.txt $(MAKEFILE_LIST) echo ')'; \ echo 'func (t ItemType) String() string {'; \ echo ' names := map[ItemType]string{'; \ - sed -E 's@(.*)=(.*) (.*)@\1_KEY: "\1",@' $<; \ + sed -E 's@(.*)=(.*) (.*)@\1_KEY: "\1",@' $< | sed 's/"UUID_/&KEY_/'; \ echo ' }'; \ echo ' if name, ok := names[t]; ok {'; \ echo ' return name'; \ diff --git a/pkg/btrfs/btrfsitem/item_chunk.go b/pkg/btrfs/btrfsitem/item_chunk.go index 826ecc6..eae8339 100644 --- a/pkg/btrfs/btrfsitem/item_chunk.go +++ b/pkg/btrfs/btrfsitem/item_chunk.go @@ -34,6 +34,7 @@ func (chunk *Chunk) UnmarshalBinary(dat []byte) (int, error) { if err != nil { return n, err } + chunk.Stripes = nil for i := 0; i < int(chunk.NumStripes); i++ { var stripe ChunkStripe _n, err := binstruct.Unmarshal(dat[n:], &stripe) diff --git a/pkg/btrfs/btrfsitem/item_dir.go b/pkg/btrfs/btrfsitem/item_dir.go index afef12d..6814041 100644 --- a/pkg/btrfs/btrfsitem/item_dir.go +++ b/pkg/btrfs/btrfsitem/item_dir.go @@ -10,6 +10,7 @@ import ( type DirList []Dir // DIR_ITEM=84, DIR_INDEX=96, XATTR_ITEM=24 func (o *DirList) UnmarshalBinary(dat []byte) (int, error) { + *o = nil n := 0 for n < len(dat) { var ref Dir diff --git a/pkg/btrfs/btrfsitem/item_inoderef.go b/pkg/btrfs/btrfsitem/item_inoderef.go index e59c4b3..39b7738 100644 --- a/pkg/btrfs/btrfsitem/item_inoderef.go +++ b/pkg/btrfs/btrfsitem/item_inoderef.go @@ -7,6 +7,7 @@ import ( type InodeRefList []InodeRef // INODE_REF=12 func (o *InodeRefList) UnmarshalBinary(dat []byte) (int, error) { + *o = nil n := 0 for n < len(dat) { var ref InodeRef diff --git a/pkg/btrfs/btrfsitem/item_uuid.go b/pkg/btrfs/btrfsitem/item_uuid.go index 894ccff..d66e102 100644 --- a/pkg/btrfs/btrfsitem/item_uuid.go +++ b/pkg/btrfs/btrfsitem/item_uuid.go @@ -7,12 +7,10 @@ import ( // The Key for this item is a UUID, and the item is a list of // subvolume IDs (ObjectIDs) that that UUID maps to. -type UUIDMap struct { // UUID_SUBVOL=251 UUID_RECEIVED_SUBVOL=252 - SubvolIDs []internal.ObjID -} +type UUIDMap []internal.ObjID // UUID_SUBVOL=251 UUID_RECEIVED_SUBVOL=252 func (o *UUIDMap) UnmarshalBinary(dat []byte) (int, error) { - o.SubvolIDs = nil + *o = nil var n int for len(dat) > n { var subvolID internal.ObjID @@ -21,14 +19,14 @@ func (o *UUIDMap) UnmarshalBinary(dat []byte) (int, error) { if err != nil { return n, err } - o.SubvolIDs = append(o.SubvolIDs, subvolID) + *o = append(*o, subvolID) } return n, nil } func (o UUIDMap) MarshalBinary() ([]byte, error) { var ret []byte - for _, subvolID := range o.SubvolIDs { + for _, subvolID := range o { bs, err := binstruct.Marshal(subvolID) ret = append(ret, bs...) if err != nil { diff --git a/pkg/btrfs/internal/itemtype.go b/pkg/btrfs/internal/itemtype.go index 7f16889..c046ea3 100644 --- a/pkg/btrfs/internal/itemtype.go +++ b/pkg/btrfs/internal/itemtype.go @@ -53,8 +53,8 @@ func (t ItemType) String() string { PERSISTENT_ITEM_KEY: "PERSISTENT_ITEM", ROOT_ITEM_KEY: "ROOT_ITEM", SHARED_DATA_REF_KEY: "SHARED_DATA_REF", - UUID_SUBVOL_KEY: "UUID_SUBVOL", - UUID_RECEIVED_SUBVOL_KEY: "UUID_RECEIVED_SUBVOL", + UUID_SUBVOL_KEY: "UUID_KEY_SUBVOL", + UUID_RECEIVED_SUBVOL_KEY: "UUID_KEY_RECEIVED_SUBVOL", } if name, ok := names[t]; ok { return name -- cgit v1.2.3-2-g168b