mirror of
https://github.com/kovidgoyal/kitty
synced 2026-06-06 01:05:48 +02:00
DRYer
This commit is contained in:
@@ -29,13 +29,13 @@ func ExtractAllFromTar(tr *tar.Reader, dest_path string, optss ...TarExtractOpti
|
||||
return
|
||||
}
|
||||
|
||||
mode := func(hdr *tar.Header) fs.FileMode {
|
||||
return fs.FileMode(hdr.Mode) & (fs.ModePerm | fs.ModeSetgid | fs.ModeSetuid | fs.ModeSticky)
|
||||
mode := func(hdr int64) fs.FileMode {
|
||||
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 {
|
||||
perms := mode(hdr)
|
||||
perms := mode(hdr_mode)
|
||||
if err = chmod(perms); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -76,7 +76,7 @@ func ExtractAllFromTar(tr *tar.Reader, dest_path string, optss ...TarExtractOpti
|
||||
if err != nil {
|
||||
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
|
||||
}
|
||||
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 {
|
||||
return
|
||||
}
|
||||
err = set_metadata(d.Chmod, hdr)
|
||||
err = set_metadata(d.Chmod, hdr.Mode)
|
||||
if err == nil {
|
||||
_, 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 {
|
||||
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
|
||||
}
|
||||
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 {
|
||||
return
|
||||
}
|
||||
if err = set_metadata(nil, hdr); err != nil {
|
||||
if err = set_metadata(nil, hdr.Mode); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user