diff options
author | Arran Walker <ajwalker@gitlab.com> | 2021-01-11 12:33:44 +0300 |
---|---|---|
committer | Arran Walker <ajwalker@gitlab.com> | 2021-01-11 13:58:32 +0300 |
commit | ef81bdf35ffe13bff738f98ef00a37dc0b8dd801 (patch) | |
tree | 7753e578ab027ee589ae6090e50f8ed158e2055e | |
parent | 2db62f2094f178315a1d73cc4829caff0cd240ab (diff) |
Optimize zip file findingajwalker/zip-path
-rw-r--r-- | internal/vfs/zip/archive.go | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/internal/vfs/zip/archive.go b/internal/vfs/zip/archive.go index 1137f004..9826cdd6 100644 --- a/internal/vfs/zip/archive.go +++ b/internal/vfs/zip/archive.go @@ -7,7 +7,7 @@ import ( "fmt" "io" "os" - "path/filepath" + "path" "strconv" "strings" "sync" @@ -161,34 +161,30 @@ func (a *zipArchive) readArchive(url string) { } // addPathDirectory adds a directory for a given path -func (a *zipArchive) addPathDirectory(path string) { +func (a *zipArchive) addPathDirectory(pathname string) { // Split dir and file from `path` - path, _ = filepath.Split(path) - if path == "" { + pathname, _ = path.Split(pathname) + if pathname == "" { return } - if a.directories[path] != nil { + if a.directories[pathname] != nil { return } - a.directories[path] = &zip.FileHeader{ - Name: path, + a.directories[pathname] = &zip.FileHeader{ + Name: pathname, } } func (a *zipArchive) findFile(name string) *zip.File { - name = filepath.Join(dirPrefix, name) + name = path.Clean(dirPrefix + name) - if file := a.files[name]; file != nil { - return file - } - - return nil + return a.files[name] } func (a *zipArchive) findDirectory(name string) *zip.FileHeader { - name = filepath.Join(dirPrefix, name) + name = path.Clean(dirPrefix + name) return a.directories[name+"/"] } |