diff options
author | Giuseppe Scrivano <gscrivan@redhat.com> | 2021-03-17 14:43:10 +0100 |
---|---|---|
committer | Giuseppe Scrivano <gscrivan@redhat.com> | 2021-03-18 20:27:25 +0100 |
commit | ec1651fbf11c4d3d1c792e7f46139ebd96f7ffb2 (patch) | |
tree | 61606abbce5e8efbf0c1f0c0ff6fe1c785c8a203 /vendor/github.com/mrunalp/fileutils/fileutils.go | |
parent | 77b3a2df645f2548f7bd2da85bbdb17e4de98310 (diff) | |
download | podman-ec1651fbf11c4d3d1c792e7f46139ebd96f7ffb2.tar.gz podman-ec1651fbf11c4d3d1c792e7f46139ebd96f7ffb2.tar.bz2 podman-ec1651fbf11c4d3d1c792e7f46139ebd96f7ffb2.zip |
Bump github.com/containers/storage from 1.25.0 to 1.28.0
Bumps [github.com/containers/storage](https://github.com/containers/storage) from 1.25.0 to 1.28.0.
- [Release notes](https://github.com/containers/storage/releases)
- [Changelog](https://github.com/containers/storage/blob/master/docs/containers-storage-changes.md)
- [Commits](https://github.com/containers/storage/compare/v1.25.0...v1.28.0)
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Diffstat (limited to 'vendor/github.com/mrunalp/fileutils/fileutils.go')
-rw-r--r-- | vendor/github.com/mrunalp/fileutils/fileutils.go | 52 |
1 files changed, 31 insertions, 21 deletions
diff --git a/vendor/github.com/mrunalp/fileutils/fileutils.go b/vendor/github.com/mrunalp/fileutils/fileutils.go index 5a9818a24..7421e6207 100644 --- a/vendor/github.com/mrunalp/fileutils/fileutils.go +++ b/vendor/github.com/mrunalp/fileutils/fileutils.go @@ -22,9 +22,10 @@ func CopyFile(source string, dest string) error { uid := int(st.Uid) gid := int(st.Gid) + modeType := si.Mode() & os.ModeType // Handle symlinks - if si.Mode()&os.ModeSymlink != 0 { + if modeType == os.ModeSymlink { target, err := os.Readlink(source) if err != nil { return err @@ -35,15 +36,14 @@ func CopyFile(source string, dest string) error { } // Handle device files - if st.Mode&syscall.S_IFMT == syscall.S_IFBLK || st.Mode&syscall.S_IFMT == syscall.S_IFCHR { + if modeType == os.ModeDevice { devMajor := int64(major(uint64(st.Rdev))) devMinor := int64(minor(uint64(st.Rdev))) - mode := uint32(si.Mode() & 07777) - if st.Mode&syscall.S_IFMT == syscall.S_IFBLK { - mode |= syscall.S_IFBLK - } - if st.Mode&syscall.S_IFMT == syscall.S_IFCHR { + mode := uint32(si.Mode() & os.ModePerm) + if si.Mode()&os.ModeCharDevice != 0 { mode |= syscall.S_IFCHR + } else { + mode |= syscall.S_IFBLK } if err := syscall.Mknod(dest, mode, int(mkdev(devMajor, devMinor))); err != nil { return err @@ -52,19 +52,7 @@ func CopyFile(source string, dest string) error { // Handle regular files if si.Mode().IsRegular() { - sf, err := os.Open(source) - if err != nil { - return err - } - defer sf.Close() - - df, err := os.Create(dest) - if err != nil { - return err - } - defer df.Close() - - _, err = io.Copy(df, sf) + err = copyInternal(source, dest) if err != nil { return err } @@ -76,7 +64,7 @@ func CopyFile(source string, dest string) error { } // Chmod the file - if !(si.Mode()&os.ModeSymlink == os.ModeSymlink) { + if !(modeType == os.ModeSymlink) { if err := os.Chmod(dest, si.Mode()); err != nil { return err } @@ -85,6 +73,28 @@ func CopyFile(source string, dest string) error { return nil } +func copyInternal(source, dest string) (retErr error) { + sf, err := os.Open(source) + if err != nil { + return err + } + defer sf.Close() + + df, err := os.Create(dest) + if err != nil { + return err + } + defer func() { + err := df.Close() + if retErr == nil { + retErr = err + } + }() + + _, err = io.Copy(df, sf) + return err +} + // CopyDirectory copies the files under the source directory // to dest directory. The dest directory is created if it // does not exist. |