From 2a615f46816f9ac7973a9658be067afed657dc10 Mon Sep 17 00:00:00 2001 From: URenko <18209292+URenko@users.noreply.github.com> Date: Mon, 22 Apr 2024 13:36:38 +0000 Subject: [PATCH] vfs: fix cache encoding with special characters - #7760 The vfs use the hardcoded OS encoding when creating temp file, but decode it with encoding for the local filesystem (--local-encoding) when copying it to remote. This caused failures when the filenames contained special characters. The hardcoded OS encoding is now used uniformly. --- lib/encoder/internal/gen/main.go | 4 ++-- vfs/vfscache/cache.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/encoder/internal/gen/main.go b/lib/encoder/internal/gen/main.go index 23e3777e2..6159fd909 100644 --- a/lib/encoder/internal/gen/main.go +++ b/lib/encoder/internal/gen/main.go @@ -229,8 +229,8 @@ func main() { fatalW(fd.WriteString(" "))("Write:") } in, out := buildTestString( - []mapping{getMapping(m.mask)}, // pick - []mapping{getMapping(encoder.EncodeZero)}, // quote + []mapping{getMapping(m.mask)}, // pick + []mapping{getMapping(encoder.EncodeZero)}, // quote printables, fullwidthPrintables, encodables, encoded, greek) // fill fatalW(fmt.Fprintf(fd, `{ // %d mask: %s, diff --git a/vfs/vfscache/cache.go b/vfs/vfscache/cache.go index 0856587d4..3d34dd82a 100644 --- a/vfs/vfscache/cache.go +++ b/vfs/vfscache/cache.go @@ -212,7 +212,7 @@ func (c *Cache) createItemDir(name string) (string, error) { // getBackend gets a backend for a cache root dir func getBackend(ctx context.Context, parentPath string, name string, relativeDirPath string) (fs.Fs, error) { - path := fmt.Sprintf("%s/%s/%s", parentPath, name, relativeDirPath) + path := fmt.Sprintf(":local,encoding='%v':%s/%s/%s", encoder.OS, parentPath, name, relativeDirPath) return fscache.Get(ctx, path) }