diff options
author | Luke Shumaker <lukeshu@lukeshu.com> | 2022-08-23 20:28:30 -0600 |
---|---|---|
committer | Luke Shumaker <lukeshu@lukeshu.com> | 2022-08-23 20:29:25 -0600 |
commit | 9c46c8d8b447ff5e0a5ee688b15ef23034e6ce30 (patch) | |
tree | dd9be19efb43ea7fd245b46177dad7c7669bf658 /cmd/btrfs-rec/inspect_scandevices.go | |
parent | aaa85c40b2f8c5c4d107aaf3dee47901342fac78 (diff) |
Work on the new rebuildmappings
rebuildmappings.go didn't actually change very much, but was reworked to
be multi-device, so the diff looks like it totally changed.
Diffstat (limited to 'cmd/btrfs-rec/inspect_scandevices.go')
-rw-r--r-- | cmd/btrfs-rec/inspect_scandevices.go | 48 |
1 files changed, 32 insertions, 16 deletions
diff --git a/cmd/btrfs-rec/inspect_scandevices.go b/cmd/btrfs-rec/inspect_scandevices.go index a7a7fb2..37bafe4 100644 --- a/cmd/btrfs-rec/inspect_scandevices.go +++ b/cmd/btrfs-rec/inspect_scandevices.go @@ -6,6 +6,7 @@ package main import ( "bufio" + "io" "os" "git.lukeshu.com/go/lowmemjson" @@ -24,11 +25,6 @@ func init() { Args: cliutil.WrapPositionalArgs(cobra.NoArgs), }, RunE: func(fs *btrfs.FS, cmd *cobra.Command, _ []string) (err error) { - maybeSetErr := func(_err error) { - if err == nil && _err != nil { - err = _err - } - } ctx := cmd.Context() results, err := btrfsinspect.ScanDevices(ctx, fs) @@ -37,17 +33,37 @@ func init() { } dlog.Info(ctx, "Writing scan results to stdout...") - buffer := bufio.NewWriter(os.Stdout) - defer func() { - maybeSetErr(buffer.Flush()) - }() - return lowmemjson.Encode(&lowmemjson.ReEncoder{ - Out: buffer, - - Indent: "\t", - ForceTrailingNewlines: true, - CompactIfUnder: 16, - }, results) + return writeScanResults(os.Stdout, results) }, }) } + +func writeScanResults(w io.Writer, results btrfsinspect.ScanDevicesResult) (err error) { + buffer := bufio.NewWriter(w) + defer func() { + if _err := buffer.Flush(); err == nil && _err != nil { + err = _err + } + }() + return lowmemjson.Encode(&lowmemjson.ReEncoder{ + Out: buffer, + + Indent: "\t", + ForceTrailingNewlines: true, + CompactIfUnder: 16, + }, results) +} + +func readScanResults(filename string) (btrfsinspect.ScanDevicesResult, error) { + fh, err := os.Open(filename) + if err != nil { + return nil, err + } + var scanResults btrfsinspect.ScanDevicesResult + buf := bufio.NewReader(fh) + if err := lowmemjson.DecodeThenEOF(buf, &scanResults); err != nil { + return nil, err + } + _ = fh.Close() + return scanResults, nil +} |