]> Cypherpunks repositories - gostls13.git/commitdiff
archive/tar, syscall: add statUnix for aix/ppc64
authorClément Chigot <clement.chigot@atos.net>
Thu, 21 Feb 2019 10:27:41 +0000 (11:27 +0100)
committerIan Lance Taylor <iant@golang.org>
Wed, 27 Feb 2019 23:40:20 +0000 (23:40 +0000)
This commit add statUnix function for aix/ppc64. It also adds Unix
and Nano methods for AIX time structure.

Change-Id: I9fd62d34a47e87cd46f2f936cb736da0bdff7959
Reviewed-on: https://go-review.googlesource.com/c/163957
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/archive/tar/stat_actime1.go
src/archive/tar/stat_unix.go
src/syscall/syscall_aix.go

index cf9cc79c5915bace0af0e81fa4df961f3a68553c..1bdd1c9dcb24cfbf5cf33c9ffef36ff9a0b25da1 100644 (file)
@@ -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
 
index 868105f338efdc109b77cda051c06247da28d56a..d1576db41d5edb5b79aa00b007a826089e17194f 100644 (file)
@@ -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,11 @@ 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
+                       major = uint32((dev & 0x3fffffff00000000) >> 32)
+                       minor = uint32((dev & 0x00000000ffffffff) >> 0)
+                       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)
index 186522bdde75fcc37ed815be91bd938d09c378ad..4947248e38dc2570b33929d5f10cd0225bdf1b5f 100644 (file)
@@ -28,6 +28,14 @@ const (
        SYS_FCNTL
 )
 
+func (ts *StTimespec_t) Unix() (sec int64, nsec int64) {
+       return int64(ts.Sec), int64(ts.Nsec)
+}
+
+func (ts *StTimespec_t) Nano() int64 {
+       return int64(ts.Sec)*1e9 + int64(ts.Nsec)
+}
+
 /*
  * Wrapped
  */