From 9c1a057756c8f1ef486642699e45a9fa6df0b071 Mon Sep 17 00:00:00 2001 From: Mitch Riedstra Date: Tue, 17 Jan 2017 00:17:27 -0500 Subject: Changes to archive handling to improve cross-platform compatibility --- archive/unarchive.go | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'archive/unarchive.go') diff --git a/archive/unarchive.go b/archive/unarchive.go index d283d4e..8a5617e 100644 --- a/archive/unarchive.go +++ b/archive/unarchive.go @@ -8,6 +8,8 @@ import ( "io" "os" + + "strings" ) type Unarchive struct { @@ -49,21 +51,26 @@ func (u *Unarchive) UnTar(compressionType string) error { return err } + // Fix windows slashes... + fileName := strings.Replace(hdr.Name, "\\", "/", -1) + info := hdr.FileInfo() if info.IsDir() { - if err = os.MkdirAll(hdr.Name, info.Mode()); err != nil { + // I don't like hard-coded permissions but it + // it helps with overall platform compatibility + if err = os.MkdirAll(fileName, 0775); err != nil { return err } continue } - if err = os.MkdirAll(fp.Dir(hdr.Name), info.Mode()); err != nil { + if err = os.MkdirAll(fp.Dir(fileName), 0775); err != nil { return err } // Create a file handle to work with - // f, err := os.Create(hdr.Name) - f, err := os.OpenFile(hdr.Name, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, info.Mode()) + // f, err := os.Create(fileName) + f, err := os.OpenFile(fileName, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0664) if err != nil { return err } -- cgit v1.2.3