diff options
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/btrfs-rec/inspect_lsfiles.go | 8 | ||||
-rw-r--r-- | cmd/btrfs-rec/inspect_lstrees.go | 12 | ||||
-rw-r--r-- | cmd/btrfs-rec/inspect_rebuildmappings.go | 26 | ||||
-rw-r--r-- | cmd/btrfs-rec/inspect_rebuildnodes.go | 27 | ||||
-rw-r--r-- | cmd/btrfs-rec/inspect_scandevices.go | 26 | ||||
-rw-r--r-- | cmd/btrfs-rec/inspect_spewitems.go | 6 | ||||
-rw-r--r-- | cmd/btrfs-rec/main.go | 6 | ||||
-rw-r--r-- | cmd/btrfs-rec/util.go | 15 |
8 files changed, 48 insertions, 78 deletions
diff --git a/cmd/btrfs-rec/inspect_lsfiles.go b/cmd/btrfs-rec/inspect_lsfiles.go index 502d91d..395f60a 100644 --- a/cmd/btrfs-rec/inspect_lsfiles.go +++ b/cmd/btrfs-rec/inspect_lsfiles.go @@ -1,4 +1,4 @@ -// Copyright (C) 2022 Luke Shumaker <lukeshu@lukeshu.com> +// Copyright (C) 2022-2023 Luke Shumaker <lukeshu@lukeshu.com> // // SPDX-License-Identifier: GPL-2.0-or-later @@ -34,7 +34,11 @@ func init() { }, RunE: func(fs *btrfs.FS, cmd *cobra.Command, _ []string) (err error) { out := bufio.NewWriter(os.Stdout) - defer out.Flush() + defer func() { + if _err := out.Flush(); _err != nil && err == nil { + err = _err + } + }() defer func() { if r := derror.PanicToError(recover()); r != nil { textui.Fprintf(out, "\n\n%+v\n", r) diff --git a/cmd/btrfs-rec/inspect_lstrees.go b/cmd/btrfs-rec/inspect_lstrees.go index e92c544..f74956a 100644 --- a/cmd/btrfs-rec/inspect_lstrees.go +++ b/cmd/btrfs-rec/inspect_lstrees.go @@ -1,4 +1,4 @@ -// Copyright (C) 2022 Luke Shumaker <lukeshu@lukeshu.com> +// Copyright (C) 2022-2023 Luke Shumaker <lukeshu@lukeshu.com> // // SPDX-License-Identifier: GPL-2.0-or-later @@ -54,13 +54,13 @@ func init() { } numWidth := len(strconv.Itoa(slices.Max(treeErrCnt, totalItems))) - table := tabwriter.NewWriter(os.Stdout, 0, 8, 2, ' ', 0) + table := tabwriter.NewWriter(os.Stdout, 0, 8, 2, ' ', 0) //nolint:gomnd // This is what looks Nice. textui.Fprintf(table, " errors\t% *s\n", numWidth, strconv.Itoa(treeErrCnt)) for _, typ := range maps.SortedKeys(treeItemCnt) { textui.Fprintf(table, " %v items\t% *s\n", typ, numWidth, strconv.Itoa(treeItemCnt[typ])) } textui.Fprintf(table, " total items\t% *s\n", numWidth, strconv.Itoa(totalItems)) - table.Flush() + _ = table.Flush() } visitedNodes := make(containers.Set[btrfsvol.LogicalAddr]) btrfsutil.WalkAllTrees(ctx, fs, btrfsutil.WalkAllTreesHandler{ @@ -79,12 +79,12 @@ func init() { }, Item: func(_ btrfstree.TreePath, item btrfstree.Item) error { typ := item.Key.ItemType - treeItemCnt[typ] = treeItemCnt[typ] + 1 + treeItemCnt[typ]++ return nil }, BadItem: func(_ btrfstree.TreePath, item btrfstree.Item) error { typ := item.Key.ItemType - treeItemCnt[typ] = treeItemCnt[typ] + 1 + treeItemCnt[typ]++ return nil }, }, @@ -113,7 +113,7 @@ func init() { } for _, item := range node.Data.BodyLeaf { typ := item.Key.ItemType - treeItemCnt[typ] = treeItemCnt[typ] + 1 + treeItemCnt[typ]++ } } } diff --git a/cmd/btrfs-rec/inspect_rebuildmappings.go b/cmd/btrfs-rec/inspect_rebuildmappings.go index da7d12e..4555e58 100644 --- a/cmd/btrfs-rec/inspect_rebuildmappings.go +++ b/cmd/btrfs-rec/inspect_rebuildmappings.go @@ -1,12 +1,10 @@ -// Copyright (C) 2022 Luke Shumaker <lukeshu@lukeshu.com> +// Copyright (C) 2022-2023 Luke Shumaker <lukeshu@lukeshu.com> // // SPDX-License-Identifier: GPL-2.0-or-later package main import ( - "bufio" - "io" "os" "git.lukeshu.com/go/lowmemjson" @@ -49,7 +47,11 @@ func init() { } dlog.Infof(ctx, "Writing reconstructed mappings to stdout...") - if err := writeMappingsJSON(os.Stdout, fs); err != nil { + if err := writeJSONFile(os.Stdout, fs, lowmemjson.ReEncoder{ + Indent: "\t", + ForceTrailingNewlines: true, + CompactIfUnder: 120, //nolint:gomnd // This is what looks Nice. + }); err != nil { return err } dlog.Info(ctx, "... done writing") @@ -58,19 +60,3 @@ func init() { }, }) } - -func writeMappingsJSON(w io.Writer, fs *btrfs.FS) (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: 120, - }, fs.LV.Mappings()) -} diff --git a/cmd/btrfs-rec/inspect_rebuildnodes.go b/cmd/btrfs-rec/inspect_rebuildnodes.go index 0f3d60e..e61e6d2 100644 --- a/cmd/btrfs-rec/inspect_rebuildnodes.go +++ b/cmd/btrfs-rec/inspect_rebuildnodes.go @@ -1,12 +1,10 @@ -// Copyright (C) 2022 Luke Shumaker <lukeshu@lukeshu.com> +// Copyright (C) 2022-2023 Luke Shumaker <lukeshu@lukeshu.com> // // SPDX-License-Identifier: GPL-2.0-or-later package main import ( - "bufio" - "io" "os" "git.lukeshu.com/go/lowmemjson" @@ -15,11 +13,8 @@ import ( "github.com/spf13/cobra" "git.lukeshu.com/btrfs-progs-ng/lib/btrfs" - "git.lukeshu.com/btrfs-progs-ng/lib/btrfs/btrfsprim" - "git.lukeshu.com/btrfs-progs-ng/lib/btrfs/btrfsvol" "git.lukeshu.com/btrfs-progs-ng/lib/btrfsprogs/btrfsinspect" "git.lukeshu.com/btrfs-progs-ng/lib/btrfsprogs/btrfsinspect/rebuildnodes" - "git.lukeshu.com/btrfs-progs-ng/lib/containers" ) func init() { @@ -44,7 +39,10 @@ func init() { } dlog.Info(ctx, "Writing re-built nodes to stdout...") - if err := writeNodesJSON(os.Stdout, rebuiltNodes); err != nil { + if err := writeJSONFile(os.Stdout, rebuiltNodes, lowmemjson.ReEncoder{ + Indent: "\t", + ForceTrailingNewlines: true, + }); err != nil { return err } dlog.Info(ctx, "... done writing") @@ -53,18 +51,3 @@ func init() { }, }) } - -func writeNodesJSON(w io.Writer, rebuiltNodes map[btrfsprim.ObjID]containers.Set[btrfsvol.LogicalAddr]) (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, - }, rebuiltNodes) -} diff --git a/cmd/btrfs-rec/inspect_scandevices.go b/cmd/btrfs-rec/inspect_scandevices.go index 7235e45..410fa4f 100644 --- a/cmd/btrfs-rec/inspect_scandevices.go +++ b/cmd/btrfs-rec/inspect_scandevices.go @@ -1,12 +1,10 @@ -// Copyright (C) 2022 Luke Shumaker <lukeshu@lukeshu.com> +// Copyright (C) 2022-2023 Luke Shumaker <lukeshu@lukeshu.com> // // SPDX-License-Identifier: GPL-2.0-or-later package main import ( - "bufio" - "io" "os" "git.lukeshu.com/go/lowmemjson" @@ -33,7 +31,11 @@ func init() { } dlog.Info(ctx, "Writing scan results to stdout...") - if err := writeScanResults(os.Stdout, results); err != nil { + if err := writeJSONFile(os.Stdout, results, lowmemjson.ReEncoder{ + Indent: "\t", + ForceTrailingNewlines: true, + CompactIfUnder: 16, //nolint:gomnd // This is what looks Nice. + }); err != nil { return err } dlog.Info(ctx, "... done writing") @@ -42,19 +44,3 @@ func init() { }, }) } - -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) -} diff --git a/cmd/btrfs-rec/inspect_spewitems.go b/cmd/btrfs-rec/inspect_spewitems.go index 8d71797..3b79e8b 100644 --- a/cmd/btrfs-rec/inspect_spewitems.go +++ b/cmd/btrfs-rec/inspect_spewitems.go @@ -1,4 +1,4 @@ -// Copyright (C) 2022 Luke Shumaker <lukeshu@lukeshu.com> +// Copyright (C) 2022-2023 Luke Shumaker <lukeshu@lukeshu.com> // // SPDX-License-Identifier: GPL-2.0-or-later @@ -39,13 +39,13 @@ func init() { Item: func(path btrfstree.TreePath, item btrfstree.Item) error { textui.Fprintf(os.Stdout, "%s = ", path) spew.Dump(item) - os.Stdout.WriteString("\n") + _, _ = os.Stdout.WriteString("\n") return nil }, BadItem: func(path btrfstree.TreePath, item btrfstree.Item) error { textui.Fprintf(os.Stdout, "%s = ", path) spew.Dump(item) - os.Stdout.WriteString("\n") + _, _ = os.Stdout.WriteString("\n") return nil }, }, diff --git a/cmd/btrfs-rec/main.go b/cmd/btrfs-rec/main.go index 13ae886..d9ab485 100644 --- a/cmd/btrfs-rec/main.go +++ b/cmd/btrfs-rec/main.go @@ -1,4 +1,4 @@ -// Copyright (C) 2022 Luke Shumaker <lukeshu@lukeshu.com> +// Copyright (C) 2022-2023 Luke Shumaker <lukeshu@lukeshu.com> // // SPDX-License-Identifier: GPL-2.0-or-later @@ -43,7 +43,7 @@ func main() { SilenceErrors: true, // main() will handle this after .ExecuteContext() returns SilenceUsage: true, // our FlagErrorFunc will handle it - CompletionOptions: cobra.CompletionOptions{ //nolint:exhaustivestruct + CompletionOptions: cobra.CompletionOptions{ DisableDefaultCmd: true, }, } @@ -62,7 +62,7 @@ func main() { panic(err) } - var openFlag int = os.O_RDONLY + openFlag := os.O_RDONLY argparserInspect := &cobra.Command{ Use: "inspect {[flags]|SUBCOMMAND}", diff --git a/cmd/btrfs-rec/util.go b/cmd/btrfs-rec/util.go index adfe97e..ffc03cc 100644 --- a/cmd/btrfs-rec/util.go +++ b/cmd/btrfs-rec/util.go @@ -1,4 +1,4 @@ -// Copyright (C) 2022 Luke Shumaker <lukeshu@lukeshu.com> +// Copyright (C) 2022-2023 Luke Shumaker <lukeshu@lukeshu.com> // // SPDX-License-Identifier: GPL-2.0-or-later @@ -34,7 +34,7 @@ func newRuneScanner(ctx context.Context, fh *os.File) (*runeScanner, error) { progress: textui.Portion[int64]{ D: fi.Size(), }, - progressWriter: textui.NewProgress[textui.Portion[int64]](ctx, dlog.LogLevelInfo, 1*time.Second), + progressWriter: textui.NewProgress[textui.Portion[int64]](ctx, dlog.LogLevelInfo, textui.Tunable(1*time.Second)), reader: bufio.NewReader(fh), closer: fh, } @@ -81,3 +81,14 @@ func readJSONFile[T any](ctx context.Context, filename string) (T, error) { _ = buf.Close() return ret, nil } + +func writeJSONFile(w io.Writer, obj any, cfg lowmemjson.ReEncoder) (err error) { + buffer := bufio.NewWriter(w) + defer func() { + if _err := buffer.Flush(); err == nil && _err != nil { + err = _err + } + }() + cfg.Out = buffer + return lowmemjson.Encode(&cfg, obj) +} |