mirror of
https://github.com/labstack/echo.git
synced 2024-11-28 08:38:39 +02:00
Replace relative path determination from proprietary to std
This commit is contained in:
parent
a0c211542c
commit
36ff0b3fbd
18
echo_fs.go
18
echo_fs.go
@ -7,7 +7,6 @@ import (
|
|||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -125,7 +124,7 @@ func subFS(currentFs fs.FS, root string) (fs.FS, error) {
|
|||||||
// we need to make exception for `defaultFS` instances as it interprets root prefix differently from fs.FS.
|
// we need to make exception for `defaultFS` instances as it interprets root prefix differently from fs.FS.
|
||||||
// fs.Fs.Open does not like relative paths ("./", "../") and absolute paths at all but prior echo.Filesystem we
|
// fs.Fs.Open does not like relative paths ("./", "../") and absolute paths at all but prior echo.Filesystem we
|
||||||
// were able to use paths like `./myfile.log`, `/etc/hosts` and these would work fine with `os.Open` but not with fs.Fs
|
// were able to use paths like `./myfile.log`, `/etc/hosts` and these would work fine with `os.Open` but not with fs.Fs
|
||||||
if isRelativePath(root) {
|
if !filepath.IsAbs(root) {
|
||||||
root = filepath.Join(dFS.prefix, root)
|
root = filepath.Join(dFS.prefix, root)
|
||||||
}
|
}
|
||||||
return &defaultFS{
|
return &defaultFS{
|
||||||
@ -136,21 +135,6 @@ func subFS(currentFs fs.FS, root string) (fs.FS, error) {
|
|||||||
return fs.Sub(currentFs, root)
|
return fs.Sub(currentFs, root)
|
||||||
}
|
}
|
||||||
|
|
||||||
func isRelativePath(path string) bool {
|
|
||||||
if path == "" {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
if path[0] == '/' {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if runtime.GOOS == "windows" && strings.IndexByte(path, ':') != -1 {
|
|
||||||
// https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN#file_and_directory_names
|
|
||||||
// https://docs.microsoft.com/en-us/dotnet/standard/io/file-path-formats
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
// MustSubFS creates sub FS from current filesystem or panic on failure.
|
// MustSubFS creates sub FS from current filesystem or panic on failure.
|
||||||
// Panic happens when `fsRoot` contains invalid path according to `fs.ValidPath` rules.
|
// Panic happens when `fsRoot` contains invalid path according to `fs.ValidPath` rules.
|
||||||
//
|
//
|
||||||
|
Loading…
Reference in New Issue
Block a user