diff --git a/sources/cmd/archiver/archiver.go b/sources/cmd/archiver/archiver.go index ac6e451..456bd4c 100644 --- a/sources/cmd/archiver/archiver.go +++ b/sources/cmd/archiver/archiver.go @@ -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) { + _pathInArchive = pathEscape(_pathInArchive) + if _recursed == nil { _recursed = make (map[string]uint, 128) }