diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2018-10-22 16:47:23 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2018-10-22 20:46:14 +0200 |
commit | 9f74dc2a52b6f568b5a060b7a4be47196804b01f (patch) | |
tree | c0f3ddff1103d7244a02f14ba9b862cf5593dced /hugofs/rootmapping_fs.go | |
parent | d1661b823af25c50d3bbe5366ea40a3cdd52e237 (diff) |
hugolib: Improve errors in /data handlling
See #5324
Diffstat (limited to 'hugofs/rootmapping_fs.go')
-rw-r--r-- | hugofs/rootmapping_fs.go | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/hugofs/rootmapping_fs.go b/hugofs/rootmapping_fs.go index 176edaa07..2b8b8d2c0 100644 --- a/hugofs/rootmapping_fs.go +++ b/hugofs/rootmapping_fs.go @@ -101,7 +101,14 @@ func (fs *RootMappingFs) Stat(name string) (os.FileInfo, error) { return newRootMappingDirFileInfo(name), nil } realName := fs.realName(name) - return fs.Fs.Stat(realName) + + fi, err := fs.Fs.Stat(realName) + if rfi, ok := fi.(RealFilenameInfo); ok { + return rfi, err + } + + return &realFilenameInfo{FileInfo: fi, realFilename: realName}, err + } func (fs *RootMappingFs) isRoot(name string) bool { @@ -126,12 +133,15 @@ func (fs *RootMappingFs) Open(name string) (afero.File, error) { // It attempts to use Lstat if supported or defers to the os. In addition to // the FileInfo, a boolean is returned telling whether Lstat was called. func (fs *RootMappingFs) LstatIfPossible(name string) (os.FileInfo, bool, error) { + if fs.isRoot(name) { return newRootMappingDirFileInfo(name), false, nil } name = fs.realName(name) + if ls, ok := fs.Fs.(afero.Lstater); ok { - return ls.LstatIfPossible(name) + fi, b, err := ls.LstatIfPossible(name) + return &realFilenameInfo{FileInfo: fi, realFilename: name}, b, err } fi, err := fs.Stat(name) return fi, false, err |