From dcf9ded97723ef00eb0a2ee871ccaae3607b08b4 Mon Sep 17 00:00:00 2001 From: Michael Eischer Date: Sun, 30 Aug 2020 18:15:51 +0200 Subject: [PATCH] dump: Use slashes as path separators in tar on windows This conversion is necessary as paths returned by filepath.Rel use the operating-system native path separator --- internal/dump/tar.go | 2 +- internal/dump/tar_test.go | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/internal/dump/tar.go b/internal/dump/tar.go index 5d3a10f53..86786654a 100644 --- a/internal/dump/tar.go +++ b/internal/dump/tar.go @@ -72,7 +72,7 @@ func tarNode(ctx context.Context, tw *tar.Writer, node *restic.Node, repo restic } header := &tar.Header{ - Name: relPath, + Name: filepath.ToSlash(relPath), Size: int64(node.Size), Mode: int64(node.Mode), Uid: int(node.UID), diff --git a/internal/dump/tar_test.go b/internal/dump/tar_test.go index 3c5ae7b43..fddbef7f0 100644 --- a/internal/dump/tar_test.go +++ b/internal/dump/tar_test.go @@ -147,8 +147,9 @@ func checkTar(t *testing.T, testDir string, srcTar *bytes.Buffer) error { continue } - if filepath.Base(hdr.Name) != match.Name() { - return fmt.Errorf("foldernames don't match got %v want %v", filepath.Base(hdr.Name), match.Name()) + filebase := filepath.ToSlash(match.Name()) + if filepath.Base(hdr.Name) != filebase { + return fmt.Errorf("foldernames don't match got %v want %v", filepath.Base(hdr.Name), filebase) } } else {