Commit c1fa2770 by Ian Lance Taylor

archive/tar: support stat and device numbers on AIX

    
    Reviewed-on: https://go-review.googlesource.com/87198

From-SVN: r256810
parent 4436a3ce
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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment