archive/tar: support stat and device numbers on AIX
Reviewed-on: https://go-review.googlesource.com/87198 From-SVN: r256810
This commit is contained in:
parent
4436a3ce49
commit
c1fa27707a
|
@ -1,4 +1,4 @@
|
|||
ca805b704fc141d7ad61f8fcd3badbaa04b7e363
|
||||
3ea7fc3b918210e7248dbc51d90af20639dc4167
|
||||
|
||||
The first line of this file holds the git revision number of the last
|
||||
merge done from the gofrontend repository.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build linux dragonfly openbsd solaris
|
||||
// +build aix linux dragonfly openbsd solaris
|
||||
|
||||
package tar
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build linux darwin dragonfly freebsd openbsd netbsd solaris
|
||||
// +build aix linux darwin dragonfly freebsd openbsd netbsd solaris
|
||||
|
||||
package tar
|
||||
|
||||
|
@ -54,6 +54,16 @@ func statUnix(fi os.FileInfo, h *Header) error {
|
|||
if h.Typeflag == TypeChar || h.Typeflag == TypeBlock {
|
||||
dev := uint64(sys.Rdev) // May be int32 or uint32
|
||||
switch runtime.GOOS {
|
||||
case "aix":
|
||||
var major, minor uint32
|
||||
if runtime.GOARCH == "ppc64" {
|
||||
major = uint32((dev & 0x3fffffff00000000) >> 32)
|
||||
minor = uint32((dev & 0x00000000ffffffff) >> 0)
|
||||
} else {
|
||||
major = uint32((dev >> 16) & 0xffff)
|
||||
minor = uint32(dev & 0xffff)
|
||||
}
|
||||
h.Devmajor, h.Devminor = int64(major), int64(minor)
|
||||
case "linux":
|
||||
// Copied from golang.org/x/sys/unix/dev_linux.go.
|
||||
major := uint32((dev & 0x00000000000fff00) >> 8)
|
||||
|
|
Loading…
Reference in New Issue