diff options
-rw-r--r-- | cmd/btrfs-ls-files/main.go | 13 | ||||
-rw-r--r-- | pkg/btrfs/io3_btree.go | 2 |
2 files changed, 10 insertions, 5 deletions
diff --git a/cmd/btrfs-ls-files/main.go b/cmd/btrfs-ls-files/main.go index 042dc14..375f427 100644 --- a/cmd/btrfs-ls-files/main.go +++ b/cmd/btrfs-ls-files/main.go @@ -121,13 +121,18 @@ func printDir(fs *btrfs.FS, fsTree btrfsvol.LogicalAddr, prefix0, prefix1, dirNa panic(fmt.Errorf("TODO: handle item type %v", item.Head.Key.ItemType)) } } - fmt.Printf("%s%q\t[ino=%d\t", + fmt.Printf("%s%q\t[ino=%d", prefix0, dirName, dirInode) if dirInodeDatOK { - fmt.Printf("uid=%d\tgid=%d\tsize=%d]\n", + fmt.Printf("\tuid=%d\tgid=%d\tsize=%d]\n", dirInodeDat.UID, dirInodeDat.GID, dirInodeDat.Size) } else { - fmt.Printf("error=read dir: no inode data\n") + err := fmt.Errorf("read dir: no inode data") + if len(items) == 0 && len(errs) == 1 { + err = errs[0] + errs = nil + } + fmt.Printf("]\terror: %v\n", err) } for i, index := range util.SortedMapKeys(membersByIndex) { entry := membersByIndex[index] @@ -159,7 +164,7 @@ func printDir(fs *btrfs.FS, fsTree btrfsvol.LogicalAddr, prefix0, prefix1, dirNa if i == len(errs)-1 { p0, p1 = tL, tS } - fmt.Printf("%s%s%s\n", prefix1+p0, prefix1+p1, strings.ReplaceAll(err.Error(), "\n", prefix1+tS+"\n")) + fmt.Printf("%serror: %s\n", prefix1+p0, strings.ReplaceAll(err.Error(), "\n", prefix1+p1+" \n")) } } diff --git a/pkg/btrfs/io3_btree.go b/pkg/btrfs/io3_btree.go index b5414ab..01da746 100644 --- a/pkg/btrfs/io3_btree.go +++ b/pkg/btrfs/io3_btree.go @@ -325,7 +325,7 @@ func (fs *FS) next(path TreePath, node *util.Ref[btrfsvol.LogicalAddr, Node]) (T } for path[len(path)-1].ItemIdx+1 >= int(node.Data.Head.NumItems) { path = path[:len(path)-1] - if len(path) == 0 { + if len(path) == 1 { return nil, nil, nil } if node.Addr != path[len(path)-2].NodeAddr { |