mirror of
https://github.com/kovidgoyal/kitty
synced 2026-06-08 22:28:24 +02:00
DRYer
This commit is contained in:
@@ -29,13 +29,13 @@ func ExtractAllFromTar(tr *tar.Reader, dest_path string, optss ...TarExtractOpti
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
mode := func(hdr *tar.Header) fs.FileMode {
|
mode := func(hdr int64) fs.FileMode {
|
||||||
return fs.FileMode(hdr.Mode) & (fs.ModePerm | fs.ModeSetgid | fs.ModeSetuid | fs.ModeSticky)
|
return fs.FileMode(hdr) & (fs.ModePerm | fs.ModeSetgid | fs.ModeSetuid | fs.ModeSticky)
|
||||||
}
|
}
|
||||||
|
|
||||||
set_metadata := func(chmod func(mode fs.FileMode) error, hdr *tar.Header) (err error) {
|
set_metadata := func(chmod func(mode fs.FileMode) error, hdr_mode int64) (err error) {
|
||||||
if !opts.DontPreservePermissions && chmod != nil {
|
if !opts.DontPreservePermissions && chmod != nil {
|
||||||
perms := mode(hdr)
|
perms := mode(hdr_mode)
|
||||||
if err = chmod(perms); err != nil {
|
if err = chmod(perms); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -76,7 +76,7 @@ func ExtractAllFromTar(tr *tar.Reader, dest_path string, optss ...TarExtractOpti
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if err = set_metadata(func(m fs.FileMode) error { return os.Chmod(dest, m) }, hdr); err != nil {
|
if err = set_metadata(func(m fs.FileMode) error { return os.Chmod(dest, m) }, hdr.Mode); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
case tar.TypeReg:
|
case tar.TypeReg:
|
||||||
@@ -87,7 +87,7 @@ func ExtractAllFromTar(tr *tar.Reader, dest_path string, optss ...TarExtractOpti
|
|||||||
if d, err = os.Create(dest); err != nil {
|
if d, err = os.Create(dest); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
err = set_metadata(d.Chmod, hdr)
|
err = set_metadata(d.Chmod, hdr.Mode)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
_, err = io.Copy(d, tr)
|
_, err = io.Copy(d, tr)
|
||||||
}
|
}
|
||||||
@@ -110,7 +110,7 @@ func ExtractAllFromTar(tr *tar.Reader, dest_path string, optss ...TarExtractOpti
|
|||||||
if err = os.Link(link_target, dest); err != nil {
|
if err = os.Link(link_target, dest); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if err = set_metadata(func(m fs.FileMode) error { return os.Chmod(dest, m) }, hdr); err != nil {
|
if err = set_metadata(func(m fs.FileMode) error { return os.Chmod(dest, m) }, hdr.Mode); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
case tar.TypeSymlink:
|
case tar.TypeSymlink:
|
||||||
@@ -128,7 +128,7 @@ func ExtractAllFromTar(tr *tar.Reader, dest_path string, optss ...TarExtractOpti
|
|||||||
if err = os.Symlink(link_target, dest); err != nil {
|
if err = os.Symlink(link_target, dest); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if err = set_metadata(nil, hdr); err != nil {
|
if err = set_metadata(nil, hdr.Mode); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user