From 079054c1ce90235eff4b7c26cce1b9f77c02269f Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sun, 17 Jul 2022 23:07:36 -0600 Subject: improve ls-files --- cmd/btrfs-rec/inspect_lsfiles.go | 30 +++++++++++++++++++++--------- scripts/main.sh | 9 ++++----- 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/cmd/btrfs-rec/inspect_lsfiles.go b/cmd/btrfs-rec/inspect_lsfiles.go index e706c1f..283ee2d 100644 --- a/cmd/btrfs-rec/inspect_lsfiles.go +++ b/cmd/btrfs-rec/inspect_lsfiles.go @@ -78,15 +78,27 @@ func printText(out io.Writer, prefix string, isLast bool, name, text string) { func printSubvol(out io.Writer, prefix string, isLast bool, name string, subvol *btrfs.Subvolume) { rootInode, err := subvol.GetRootInode() if err != nil { - printText(out, prefix, isLast, name, "err="+err.Error()) + printText(out, prefix, isLast, name+"/", fmt.Sprintf("subvol_id=%v err=%v", + subvol.TreeID, err)) return } dir, err := subvol.LoadDir(rootInode) if err != nil { - printText(out, prefix, isLast, name, "err="+err.Error()) + printText(out, prefix, isLast, name+"/", fmt.Sprintf("subvol_id=%v err=%v", + subvol.TreeID, err)) return } - printDir(out, prefix, isLast, name, dir) + if name == "/" { + printDir(out, prefix, isLast, name, dir) + return + } + printText(out, prefix, isLast, name+"/", fmt.Sprintf("subvol_id=%v", subvol.TreeID)) + if isLast { + prefix += tS + } else { + prefix += tl + } + printDir(out, prefix, true, name, dir) } func fmtInode(inode btrfs.BareInode) string { @@ -109,7 +121,7 @@ func fmtInode(inode btrfs.BareInode) string { } func printDir(out io.Writer, prefix string, isLast bool, name string, dir *btrfs.Dir) { - printText(out, prefix, isLast, name, fmtInode(dir.BareInode)) + printText(out, prefix, isLast, name+"/", fmtInode(dir.BareInode)) if isLast { prefix += tS } else { @@ -136,7 +148,7 @@ func printDirEntry(out io.Writer, prefix string, isLast bool, subvol *btrfs.Subv case btrfsitem.INODE_ITEM_KEY: dir, err := subvol.LoadDir(entry.Location.ObjectID) if err != nil { - printText(out, prefix, isLast, name, "err="+err.Error()) + printText(out, prefix, isLast, name, fmt.Sprintf("%v err=%v", entry.Type, err)) return } printDir(out, prefix, isLast, name, dir) @@ -156,7 +168,7 @@ func printDirEntry(out io.Writer, prefix string, isLast bool, subvol *btrfs.Subv } file, err := subvol.LoadFile(entry.Location.ObjectID) if err != nil { - printText(out, prefix, isLast, name, "err="+err.Error()) + printText(out, prefix, isLast, name, fmt.Sprintf("%v err=%v", entry.Type, err)) return } printSymlink(out, prefix, isLast, name, file) @@ -167,7 +179,7 @@ func printDirEntry(out io.Writer, prefix string, isLast bool, subvol *btrfs.Subv } file, err := subvol.LoadFile(entry.Location.ObjectID) if err != nil { - printText(out, prefix, isLast, name, "err="+err.Error()) + printText(out, prefix, isLast, name, fmt.Sprintf("%v err=%v", entry.Type, err)) return } printFile(out, prefix, isLast, name, file) @@ -178,7 +190,7 @@ func printDirEntry(out io.Writer, prefix string, isLast bool, subvol *btrfs.Subv } file, err := subvol.LoadFile(entry.Location.ObjectID) if err != nil { - printText(out, prefix, isLast, name, "err="+err.Error()) + printText(out, prefix, isLast, name, fmt.Sprintf("%v err=%v", entry.Type, err)) return } printSocket(out, prefix, isLast, name, file) @@ -189,7 +201,7 @@ func printDirEntry(out io.Writer, prefix string, isLast bool, subvol *btrfs.Subv } file, err := subvol.LoadFile(entry.Location.ObjectID) if err != nil { - printText(out, prefix, isLast, name, "err="+err.Error()) + printText(out, prefix, isLast, name, fmt.Sprintf("%v err=%v", entry.Type, err)) return } printPipe(out, prefix, isLast, name, file) diff --git a/scripts/main.sh b/scripts/main.sh index bc8b01d..c490841 100755 --- a/scripts/main.sh +++ b/scripts/main.sh @@ -7,8 +7,7 @@ gen() ( if test -s "$tgt"; then return fi - set -x - time "$@" \ + { set -x; time "$@"; } \ >"$tgt" \ 2> >(tee >&2 "$log") ) @@ -33,6 +32,6 @@ gen $b.gen/2.csums.gob \ gen $b.gen/3.mappings.json \ ./btrfs-rec --pv=$b.img --mappings=$b.gen/1.mappings.json \ inspect scan-for-extents $b.gen/0.scan-for-nodes.json $b.gen/2.csums.gob - -#time ./btrfs-rec --pv=$b.img --mappings=$b.mappings.0.json inspect ls-files \ -# &> $b.ls-files.txt +gen $b.gen/4.ls-files.txt \ + ./btrfs-rec --pv=$b.img --mappings=$b.gen/3.mappings.json \ + inspect ls-files -- cgit v1.2.3-2-g168b