diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/memfs/internal/test/embed/embed_test.go | 10 | ||||
| -rw-r--r-- | lib/memfs/memfs.go | 34 | ||||
| -rw-r--r-- | lib/memfs/node.go | 30 |
3 files changed, 27 insertions, 47 deletions
diff --git a/lib/memfs/internal/test/embed/embed_test.go b/lib/memfs/internal/test/embed/embed_test.go index 9ad68920..f36f5638 100644 --- a/lib/memfs/internal/test/embed/embed_test.go +++ b/lib/memfs/internal/test/embed/embed_test.go @@ -16,7 +16,7 @@ func generate_testdata() *memfs.Node { GenFuncName: "generate_testdata", } node.SetMode(2147484141) - node.SetModTimeUnix(1633772772, 881353676) + node.SetModTimeUnix(1661878911, 219020749) node.SetName("/") node.SetSize(0) node.AddChild(_memFS_getNode(memFS, "/direct", generate_testdata_direct)) @@ -116,7 +116,7 @@ func generate_testdata_exclude_index_link_css() *memfs.Node { Content: []byte("\x62\x6F\x64\x79\x20\x7B\x0A\x7D\x0A"), } node.SetMode(420) - node.SetModTimeUnix(1633792794, 467899662) + node.SetModTimeUnix(1562038157, 0) node.SetName("index-link.css") node.SetSize(9) return node @@ -131,7 +131,7 @@ func generate_testdata_exclude_index_link_html() *memfs.Node { Content: []byte("\x3C\x68\x74\x6D\x6C\x3E\x3C\x2F\x68\x74\x6D\x6C\x3E\x0A"), } node.SetMode(420) - node.SetModTimeUnix(1633792794, 467899662) + node.SetModTimeUnix(1588592347, 0) node.SetName("index-link.html") node.SetSize(14) return node @@ -146,7 +146,7 @@ func generate_testdata_exclude_index_link_js() *memfs.Node { Content: []byte("\x66\x75\x6E\x63\x74\x69\x6F\x6E\x20\x58\x28\x29\x20\x7B\x7D\x0A"), } node.SetMode(420) - node.SetModTimeUnix(1633792794, 467899662) + node.SetModTimeUnix(1562038157, 0) node.SetName("index-link.js") node.SetSize(16) return node @@ -193,7 +193,7 @@ func generate_testdata_include_index_html() *memfs.Node { Content: []byte("\x3C\x68\x74\x6D\x6C\x3E\x3C\x2F\x68\x74\x6D\x6C\x3E\x0A"), } node.SetMode(420) - node.SetModTimeUnix(1588592346, 0) + node.SetModTimeUnix(1588592347, 0) node.SetName("index.html") node.SetSize(14) return node diff --git a/lib/memfs/memfs.go b/lib/memfs/memfs.go index 019ffb33..f0f3e5bd 100644 --- a/lib/memfs/memfs.go +++ b/lib/memfs/memfs.go @@ -475,10 +475,9 @@ func (mfs *MemFS) isExcluded(sysPath string, mode os.FileMode) bool { // pass the list of Includes regexp or no filter defined. func (mfs *MemFS) isIncluded(sysPath string, mode os.FileMode) bool { var ( - re *regexp.Regexp - fi os.FileInfo - absPath string - err error + re *regexp.Regexp + fi os.FileInfo + err error ) if len(mfs.incRE) == 0 { @@ -490,26 +489,17 @@ func (mfs *MemFS) isIncluded(sysPath string, mode os.FileMode) bool { return true } } - if mode&os.ModeSymlink == 0 { - // If file is NOT a symlink and its a directory, include it. - return mode.IsDir() - } - - // File is symlink, get the real FileInfo to check if its - // directory or not. - absPath, err = filepath.EvalSymlinks(sysPath) - if err != nil { - return false + if mode&os.ModeSymlink == os.ModeSymlink { + // File is symlink, get the real FileInfo to check if its + // directory or not. + fi, err = os.Stat(sysPath) + if err != nil { + return false + } + mode = fi.Mode() } - fi, err = os.Lstat(absPath) - if err != nil { - return false - } - if fi.IsDir() { - return true - } - return false + return mode.IsDir() } // isWatched will return true if the system path is filtered to be watched. diff --git a/lib/memfs/node.go b/lib/memfs/node.go index 0520a044..76720f66 100644 --- a/lib/memfs/node.go +++ b/lib/memfs/node.go @@ -89,39 +89,29 @@ func NewNode(parent *Node, fi os.FileInfo, maxFileSize int64) (node *Node, err e SysPath: sysPath, Path: relPath, name: fi.Name(), - modTime: fi.ModTime(), - mode: fi.Mode(), - size: fi.Size(), Parent: parent, } node.generateFuncName(sysPath) - if node.mode.IsDir() { - node.size = 0 - return node, nil - } - // If the file is symbolic link, update the node size and mode based // on original. - if fi.Mode()&os.ModeSymlink != 0 { - sysPath, err = filepath.EvalSymlinks(sysPath) + if fi.Mode()&os.ModeSymlink == os.ModeSymlink { + fi, err = os.Stat(sysPath) if err != nil { return nil, fmt.Errorf("%s: %w", logp, err) } + } - fi, err = os.Lstat(sysPath) - if err != nil { - return nil, fmt.Errorf("%s: %w", logp, err) - } + node.mode = fi.Mode() + node.modTime = fi.ModTime() - node.mode = fi.Mode() - if node.mode.IsDir() { - node.size = 0 - return node, nil - } - node.size = fi.Size() + if node.mode.IsDir() { + node.size = 0 + return node, nil } + node.size = fi.Size() + err = node.updateContent(maxFileSize) if err != nil { return nil, fmt.Errorf("%s: %w", logp, err) |
