aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/memfs/internal/test/embed/embed_test.go10
-rw-r--r--lib/memfs/memfs.go34
-rw-r--r--lib/memfs/node.go30
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)