diff options
| -rw-r--r-- | archive/archive.go | 7 | ||||
| -rw-r--r-- | archive/unarchive.go | 15 |
2 files changed, 15 insertions, 7 deletions
diff --git a/archive/archive.go b/archive/archive.go index 6941b64..08b1c75 100644 --- a/archive/archive.go +++ b/archive/archive.go @@ -74,9 +74,10 @@ func tarWalkfn(writer *tar.Writer) filepath.WalkFunc { // TODO; See if tar.FileInfoheader() could be used instead // without the pathing issues I encountered h := &tar.Header{ - Name: path, - Size: info.Size(), - Mode: int64(info.Mode()), + Name: path, + Size: info.Size(), + // I don't like it... but it helps with platform compatibility + Mode: 0664, ModTime: info.ModTime(), } 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 } |
