diff options
| author | Shulhan <ms@kilabit.info> | 2023-11-21 20:35:38 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2023-11-21 20:35:38 +0700 |
| commit | f71065d116172550f2ebd99ce3fe77ffcaf37b31 (patch) | |
| tree | 2e1662989855aa2d8198b885e56238a5a6252fb0 | |
| parent | 9ef7d782eb2b0a767bba5b8f5fd95e5814cfa748 (diff) | |
| download | pakakeh.go-f71065d116172550f2ebd99ce3fe77ffcaf37b31.tar.xz | |
lib/memfs: check for file not exist in scanDir and updateDir
Another error for handling fs.ErrNotExist when scanning directory
which is may caused by broken symlink.
| -rw-r--r-- | lib/memfs/memfs.go | 3 | ||||
| -rw-r--r-- | lib/memfs/node.go | 5 |
2 files changed, 8 insertions, 0 deletions
diff --git a/lib/memfs/memfs.go b/lib/memfs/memfs.go index f75fe95d..a40b7ee1 100644 --- a/lib/memfs/memfs.go +++ b/lib/memfs/memfs.go @@ -605,6 +605,9 @@ func (mfs *MemFS) scanDir(node *Node) (n int, err error) { for _, fi = range fis { child, err = mfs.AddChild(node, fi) if err != nil { + if errors.Is(err, fs.ErrNotExist) { + continue + } err = fmt.Errorf(`%s %q: %w`, logp, node.SysPath, err) goto out } diff --git a/lib/memfs/node.go b/lib/memfs/node.go index ffcf371d..4bb7a498 100644 --- a/lib/memfs/node.go +++ b/lib/memfs/node.go @@ -10,6 +10,7 @@ import ( "errors" "fmt" "io" + "io/fs" "mime" "net/http" "os" @@ -610,6 +611,10 @@ func (node *Node) updateDir(maxFileSize int64) (err error) { // Ignore error due to permission. continue } + if errors.Is(err, fs.ErrNotExist) { + // File exist but a broken symlink. + continue + } return err } |
