diff --git a/browser/chromium/chromium.go b/browser/chromium/chromium.go index c66c5b7..a6aa157 100644 --- a/browser/chromium/chromium.go +++ b/browser/chromium/chromium.go @@ -3,6 +3,7 @@ package chromium import ( "io/fs" "log/slog" + "os" "path/filepath" "slices" "strings" @@ -136,6 +137,13 @@ func (c *Chromium) userDataTypePaths(profilePath string, items []types.DataType) // chromiumWalkFunc return a filepath.WalkFunc to find item's path func chromiumWalkFunc(items []types.DataType, multiItemPaths map[string]map[types.DataType]string) filepath.WalkFunc { return func(path string, info fs.FileInfo, err error) error { + if err != nil { + if os.IsPermission(err) { + slog.Warn("skipping walk chromium path permission error", "path", path, "err", err) + return nil + } + return err + } for _, v := range items { if info.Name() != v.Filename() { continue @@ -156,7 +164,7 @@ func chromiumWalkFunc(items []types.DataType, multiItemPaths map[string]map[type multiItemPaths[profileFolder] = map[types.DataType]string{v: path} } } - return err + return nil } } diff --git a/browser/firefox/firefox.go b/browser/firefox/firefox.go index 78a2aa2..91ba69c 100644 --- a/browser/firefox/firefox.go +++ b/browser/firefox/firefox.go @@ -6,6 +6,7 @@ import ( "errors" "fmt" "io/fs" + "log/slog" "os" "path/filepath" @@ -59,6 +60,13 @@ func (f *Firefox) copyItemToLocal() error { func firefoxWalkFunc(items []types.DataType, multiItemPaths map[string]map[types.DataType]string) fs.WalkDirFunc { return func(path string, info fs.DirEntry, err error) error { + if err != nil { + if os.IsPermission(err) { + slog.Warn("skipping walk firefox path permission error", "path", path, "err", err) + return nil + } + return err + } for _, v := range items { if info.Name() == v.Filename() { parentBaseDir := fileutil.ParentBaseDir(path) @@ -70,7 +78,7 @@ func firefoxWalkFunc(items []types.DataType, multiItemPaths map[string]map[types } } - return err + return nil } }