summaryrefslogtreecommitdiff
path: root/lib/btrfs/internal
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2022-08-18 01:55:32 -0600
committerLuke Shumaker <lukeshu@lukeshu.com>2022-08-18 01:57:43 -0600
commit45494a8d80e4c78144b653044b55f8572e12e67d (patch)
tree417d22998e42bb79c5e40f0ca421d06b0d3dc43e /lib/btrfs/internal
parentee0d8981e501c86774f3ec45466d3273464921e8 (diff)
Work on the scandevices output
Diffstat (limited to 'lib/btrfs/internal')
-rw-r--r--lib/btrfs/internal/uuid.go26
1 files changed, 22 insertions, 4 deletions
diff --git a/lib/btrfs/internal/uuid.go b/lib/btrfs/internal/uuid.go
index 3749b1a..96807b6 100644
--- a/lib/btrfs/internal/uuid.go
+++ b/lib/btrfs/internal/uuid.go
@@ -5,6 +5,7 @@
package internal
import (
+ "encoding"
"encoding/hex"
"fmt"
"strings"
@@ -14,6 +15,13 @@ import (
type UUID [16]byte
+var (
+ _ fmt.Stringer = UUID{}
+ _ fmt.Formatter = UUID{}
+ _ encoding.TextMarshaler = UUID{}
+ _ encoding.TextUnmarshaler = (*UUID)(nil)
+)
+
func (uuid UUID) String() string {
str := hex.EncodeToString(uuid[:])
return strings.Join([]string{
@@ -25,6 +33,20 @@ func (uuid UUID) String() string {
}, "-")
}
+func (uuid UUID) MarshalText() ([]byte, error) {
+ return []byte(uuid.String()), nil
+}
+
+func (uuid *UUID) UnmarshalText(text []byte) error {
+ var err error
+ *uuid, err = ParseUUID(string(text))
+ return err
+}
+
+func (uuid UUID) Format(f fmt.State, verb rune) {
+ fmtutil.FormatByteArrayStringer(uuid, uuid[:], f, verb)
+}
+
func (a UUID) Cmp(b UUID) int {
for i := range a {
if d := int(a[i]) - int(b[i]); d != 0 {
@@ -34,10 +56,6 @@ func (a UUID) Cmp(b UUID) int {
return 0
}
-func (uuid UUID) Format(f fmt.State, verb rune) {
- fmtutil.FormatByteArrayStringer(uuid, uuid[:], f, verb)
-}
-
func ParseUUID(str string) (UUID, error) {
var ret UUID
j := 0