aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archive/archive.go7
-rw-r--r--archive/unarchive.go15
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
}