Merge pull request #51 from davidovich/restore-symlinks

restore symlinks from tar archive
This commit is contained in:
Frederic Branczyk 2019-10-25 09:50:15 +02:00 committed by GitHub
commit 766a0c7fd8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -118,10 +118,8 @@ func gzipUntar(dst string, r io.Reader, subDir string) error {
// create directories as needed
case tar.TypeDir:
if _, err := os.Stat(target); err != nil {
if err := os.MkdirAll(target, os.FileMode(header.Mode)); err != nil {
return err
}
if err := os.MkdirAll(target, os.FileMode(header.Mode)); err != nil {
return err
}
case tar.TypeReg:
@ -139,6 +137,15 @@ func gzipUntar(dst string, r io.Reader, subDir string) error {
// Using defer would accumulate an unbounded quantity of
// handles and release them all at once at function end.
f.Close()
case tar.TypeSymlink:
if err := os.MkdirAll(filepath.Dir(target), os.FileMode(header.Mode)); err != nil {
return err
}
if err := os.Symlink(header.Linkname, target); err != nil {
return err
}
}
}
}