2
2
mirror of https://github.com/octoleo/restic.git synced 2024-05-30 23:50:48 +00:00

Make check for non-existing paths OS independent.

This commit is contained in:
klauspost 2015-08-17 11:01:24 +02:00
parent 35bd8f80c0
commit 73de59a615

View File

@ -4,7 +4,6 @@ import (
"fmt" "fmt"
"os" "os"
"path/filepath" "path/filepath"
"syscall"
"github.com/restic/restic/backend" "github.com/restic/restic/backend"
"github.com/restic/restic/debug" "github.com/restic/restic/debug"
@ -96,16 +95,13 @@ func (res *Restorer) restoreNodeTo(node *Node, dir string, dst string) error {
} }
// Did it fail because of ENOENT? // Did it fail because of ENOENT?
if pe, ok := errors.Cause(err).(*os.PathError); ok { if err != nil && os.IsNotExist(errors.Cause(err)) {
errn, ok := pe.Err.(syscall.Errno) debug.Log("Restorer.restoreNodeTo", "create intermediate paths")
if ok && errn == syscall.ENOENT {
debug.Log("Restorer.restoreNodeTo", "create intermediate paths")
// Create parent directories and retry // Create parent directories and retry
err = os.MkdirAll(filepath.Dir(dstPath), 0700) err = os.MkdirAll(filepath.Dir(dstPath), 0700)
if err == nil || err == os.ErrExist { if err == nil || err == os.ErrExist {
err = node.CreateAt(dstPath, res.repo) err = node.CreateAt(dstPath, res.repo)
}
} }
} }