diff options
author | Luke Shumaker <lukeshu@lukeshu.com> | 2023-02-12 16:17:34 -0700 |
---|---|---|
committer | Luke Shumaker <lukeshu@lukeshu.com> | 2023-02-12 16:17:34 -0700 |
commit | c55326b0cb6994bb802cf6aac4a296acfb0e41ff (patch) | |
tree | 020cb033adb3809bcc8ffed5f56ba8d167b32dd1 /lib/btrfs/btrfsprim/misc.go | |
parent | cfcc753dc8906817e15b1b7c36b4dc12462d12e4 (diff) | |
parent | acbbfafa07922b458506b91a58f3a082da453fd1 (diff) |
Merge branch 'lukeshu/enums'
Diffstat (limited to 'lib/btrfs/btrfsprim/misc.go')
-rw-r--r-- | lib/btrfs/btrfsprim/misc.go | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/lib/btrfs/btrfsprim/misc.go b/lib/btrfs/btrfsprim/misc.go index da661f6..ca2e313 100644 --- a/lib/btrfs/btrfsprim/misc.go +++ b/lib/btrfs/btrfsprim/misc.go @@ -22,8 +22,35 @@ type Key struct { binstruct.End `bin:"off=0x11"` } +// mimics print-tree.c:btrfs_print_key() +func (key Key) Format(tree ObjID) string { + switch tree { + case UUID_TREE_OBJECTID: + return fmt.Sprintf("(%v %v %#08x)", + key.ObjectID.Format(tree), + key.ItemType, + key.Offset) + case ROOT_TREE_OBJECTID, QUOTA_TREE_OBJECTID: + return fmt.Sprintf("(%v %v %v)", + key.ObjectID.Format(tree), + key.ItemType, + ObjID(key.Offset).Format(tree)) + default: + if key.Offset == math.MaxUint64 { + return fmt.Sprintf("(%v %v -1)", + key.ObjectID.Format(tree), + key.ItemType) + } else { + return fmt.Sprintf("(%v %v %v)", + key.ObjectID.Format(tree), + key.ItemType, + key.Offset) + } + } +} + func (key Key) String() string { - return fmt.Sprintf("{%v %v %v}", key.ObjectID, key.ItemType, key.Offset) + return key.Format(0) } var MaxKey = Key{ |