]> Cypherpunks repositories - gostls13.git/commitdiff
archive/tar: populate Devmajor and Devminor in FileInfoHeader on Darwin
authorTobias Klauser <tklauser@distanz.ch>
Thu, 31 Aug 2017 11:26:40 +0000 (13:26 +0200)
committerJoe Tsai <thebrokentoaster@gmail.com>
Fri, 1 Sep 2017 10:25:54 +0000 (10:25 +0000)
Extract device major/minor number on Darwin and set Devmajor and
Devminor in FileInfoHeader. Code based on the Major/Minor functions for
Darwin in golang.org/x/sys/unix.

Change-Id: I51b65f607bfa2e6b177b8b66e2b246b771367b84
Reviewed-on: https://go-review.googlesource.com/60850
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/archive/tar/stat_unix.go

index aa6d82b1c6e3e5bb655e1cde49d3a0e67db50153..ba7d83d24fe1684ea4722e57c9dc668d46065223 100644 (file)
@@ -61,6 +61,11 @@ func statUnix(fi os.FileInfo, h *Header) error {
                        minor := uint32((dev & 0x00000000000000ff) >> 0)
                        minor |= uint32((dev & 0x00000ffffff00000) >> 12)
                        h.Devmajor, h.Devminor = int64(major), int64(minor)
+               case "darwin":
+                       // Copied from golang.org/x/sys/unix/dev_darwin.go.
+                       major := uint32((dev >> 24) & 0xff)
+                       minor := uint32(dev & 0xffffff)
+                       h.Devmajor, h.Devminor = int64(major), int64(minor)
                default:
                        // TODO: Implement others (see https://golang.org/issue/8106)
                }