From 447aefd78cfae3fc6f9b32e3cc86e60a9264e156 Mon Sep 17 00:00:00 2001 From: NielsAD Date: Sun, 28 Oct 2018 13:53:32 +0100 Subject: [PATCH] Fix when target dir is root ('/') --- fs.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/fs.go b/fs.go index dab1bda..9f851e7 100644 --- a/fs.go +++ b/fs.go @@ -127,7 +127,15 @@ func (fs *CachedFS) Fill() (int, error) { cnt := 0 dirs := []int64{0} + root := fs.Root trim := len(fs.Root) + + if strings.HasSuffix(root, string(filepath.Separator)) { + trim-- + } else { + root += string(filepath.Separator) + } + err = walk.Walk(fs.Root, &walk.Options{ Error: func(r string, e *walk.Dirent, err error) error { logErr.Printf("Error iterating \"%s\": %s\n", r, err.Error()) @@ -184,13 +192,18 @@ func (fs *CachedFS) Fill() (int, error) { if err != nil { return err } - if strings.HasPrefix(a, fs.Root) { + if strings.HasPrefix(a, root) { logErr.Printf("Skipping symlink relative to root (%s)\n", r) return filepath.SkipDir } } - row, err := idir.Exec(r[trim:] + "/") + dir := filepath.ToSlash(r[trim:]) + if dir != "/" { + dir += "/" + } + + row, err := idir.Exec(dir) if err != nil { return err }