archiver: escape urls

so anything with spaces or áéíóúñ or any unicode will work
This commit is contained in:
Cat /dev/Nulo 2023-05-09 17:57:42 -03:00
parent 2fba84b882
commit fb34336e6b

View file

@ -900,10 +900,22 @@ func prepareKeyString (_context *context, _namespace string, _fingerprint string
} }
func pathEscape (_path string) (final string) {
fragments := strings.Split(_path, "/")
for i, fragment := range fragments {
final = final + url.PathEscape(fragment)
if i != len(fragments) - 1 {
final = final + "/"
}
}
return
}
func walkPath (_context *context, _pathResolved string, _pathInArchive string, _name string, _recursed map[string]uint, _recurse bool, _statusPerhaps uint) (os.FileInfo, error) { func walkPath (_context *context, _pathResolved string, _pathInArchive string, _name string, _recursed map[string]uint, _recurse bool, _statusPerhaps uint) (os.FileInfo, error) {
_pathInArchive = pathEscape(_pathInArchive)
if _recursed == nil { if _recursed == nil {
_recursed = make (map[string]uint, 128) _recursed = make (map[string]uint, 128)
} }