mirror of
https://github.com/rwinkhart/sys.git
synced 2026-09-01 22:57:29 -04:00
unix: convert Utsname members from {u,}int8 array to byte array
In order to make conversion to string easier, change the Utsname members from int8 array to byte array. Also add a test on Linux for Uname and the string conversion of the Utsname members. Fixes golang/go#20753 Change-Id: Iec793dfb4a6dd8f3523cf0b6284a6162074f2e9e Reviewed-on: https://go-review.googlesource.com/74331 Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
committed by
Tobias Klauser
parent
661970f62f
commit
4da7545edf
@@ -56,6 +56,11 @@ func main() {
|
|||||||
removeFieldsRegex := regexp.MustCompile(`X__glibc\S*`)
|
removeFieldsRegex := regexp.MustCompile(`X__glibc\S*`)
|
||||||
b = removeFieldsRegex.ReplaceAll(b, []byte("_"))
|
b = removeFieldsRegex.ReplaceAll(b, []byte("_"))
|
||||||
|
|
||||||
|
// Convert [65]int8 to [65]byte in Utsname members to simplify
|
||||||
|
// conversion to string; see golang.org/issue/20753
|
||||||
|
convertUtsnameRegex := regexp.MustCompile(`((Sys|Node|Domain)name|Release|Version|Machine)(\s+)\[(\d+)\]u?int8`)
|
||||||
|
b = convertUtsnameRegex.ReplaceAll(b, []byte("$1$3[$4]byte"))
|
||||||
|
|
||||||
// We refuse to export private fields on s390x
|
// We refuse to export private fields on s390x
|
||||||
if goarch == "s390x" && goos == "linux" {
|
if goarch == "s390x" && goos == "linux" {
|
||||||
// Remove cgo padding fields
|
// Remove cgo padding fields
|
||||||
|
|||||||
@@ -231,6 +231,17 @@ func TestSelect(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestUname(t *testing.T) {
|
||||||
|
var utsname unix.Utsname
|
||||||
|
err := unix.Uname(&utsname)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Uname: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// conversion from []byte to string, golang.org/issue/20753
|
||||||
|
t.Logf("OS: %s/%s %s", string(utsname.Sysname[:]), string(utsname.Machine[:]), string(utsname.Release[:]))
|
||||||
|
}
|
||||||
|
|
||||||
// utilities taken from os/os_test.go
|
// utilities taken from os/os_test.go
|
||||||
|
|
||||||
func touch(t *testing.T, name string) {
|
func touch(t *testing.T, name string) {
|
||||||
|
|||||||
@@ -621,12 +621,12 @@ type Sysinfo_t struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Utsname struct {
|
type Utsname struct {
|
||||||
Sysname [65]int8
|
Sysname [65]byte
|
||||||
Nodename [65]int8
|
Nodename [65]byte
|
||||||
Release [65]int8
|
Release [65]byte
|
||||||
Version [65]int8
|
Version [65]byte
|
||||||
Machine [65]int8
|
Machine [65]byte
|
||||||
Domainname [65]int8
|
Domainname [65]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
type Ustat_t struct {
|
type Ustat_t struct {
|
||||||
|
|||||||
@@ -637,12 +637,12 @@ type Sysinfo_t struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Utsname struct {
|
type Utsname struct {
|
||||||
Sysname [65]int8
|
Sysname [65]byte
|
||||||
Nodename [65]int8
|
Nodename [65]byte
|
||||||
Release [65]int8
|
Release [65]byte
|
||||||
Version [65]int8
|
Version [65]byte
|
||||||
Machine [65]int8
|
Machine [65]byte
|
||||||
Domainname [65]int8
|
Domainname [65]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
type Ustat_t struct {
|
type Ustat_t struct {
|
||||||
|
|||||||
@@ -609,12 +609,12 @@ type Sysinfo_t struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Utsname struct {
|
type Utsname struct {
|
||||||
Sysname [65]uint8
|
Sysname [65]byte
|
||||||
Nodename [65]uint8
|
Nodename [65]byte
|
||||||
Release [65]uint8
|
Release [65]byte
|
||||||
Version [65]uint8
|
Version [65]byte
|
||||||
Machine [65]uint8
|
Machine [65]byte
|
||||||
Domainname [65]uint8
|
Domainname [65]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
type Ustat_t struct {
|
type Ustat_t struct {
|
||||||
|
|||||||
@@ -615,12 +615,12 @@ type Sysinfo_t struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Utsname struct {
|
type Utsname struct {
|
||||||
Sysname [65]int8
|
Sysname [65]byte
|
||||||
Nodename [65]int8
|
Nodename [65]byte
|
||||||
Release [65]int8
|
Release [65]byte
|
||||||
Version [65]int8
|
Version [65]byte
|
||||||
Machine [65]int8
|
Machine [65]byte
|
||||||
Domainname [65]int8
|
Domainname [65]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
type Ustat_t struct {
|
type Ustat_t struct {
|
||||||
|
|||||||
@@ -614,12 +614,12 @@ type Sysinfo_t struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Utsname struct {
|
type Utsname struct {
|
||||||
Sysname [65]int8
|
Sysname [65]byte
|
||||||
Nodename [65]int8
|
Nodename [65]byte
|
||||||
Release [65]int8
|
Release [65]byte
|
||||||
Version [65]int8
|
Version [65]byte
|
||||||
Machine [65]int8
|
Machine [65]byte
|
||||||
Domainname [65]int8
|
Domainname [65]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
type Ustat_t struct {
|
type Ustat_t struct {
|
||||||
|
|||||||
@@ -618,12 +618,12 @@ type Sysinfo_t struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Utsname struct {
|
type Utsname struct {
|
||||||
Sysname [65]int8
|
Sysname [65]byte
|
||||||
Nodename [65]int8
|
Nodename [65]byte
|
||||||
Release [65]int8
|
Release [65]byte
|
||||||
Version [65]int8
|
Version [65]byte
|
||||||
Machine [65]int8
|
Machine [65]byte
|
||||||
Domainname [65]int8
|
Domainname [65]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
type Ustat_t struct {
|
type Ustat_t struct {
|
||||||
|
|||||||
@@ -618,12 +618,12 @@ type Sysinfo_t struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Utsname struct {
|
type Utsname struct {
|
||||||
Sysname [65]int8
|
Sysname [65]byte
|
||||||
Nodename [65]int8
|
Nodename [65]byte
|
||||||
Release [65]int8
|
Release [65]byte
|
||||||
Version [65]int8
|
Version [65]byte
|
||||||
Machine [65]int8
|
Machine [65]byte
|
||||||
Domainname [65]int8
|
Domainname [65]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
type Ustat_t struct {
|
type Ustat_t struct {
|
||||||
|
|||||||
@@ -614,12 +614,12 @@ type Sysinfo_t struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Utsname struct {
|
type Utsname struct {
|
||||||
Sysname [65]int8
|
Sysname [65]byte
|
||||||
Nodename [65]int8
|
Nodename [65]byte
|
||||||
Release [65]int8
|
Release [65]byte
|
||||||
Version [65]int8
|
Version [65]byte
|
||||||
Machine [65]int8
|
Machine [65]byte
|
||||||
Domainname [65]int8
|
Domainname [65]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
type Ustat_t struct {
|
type Ustat_t struct {
|
||||||
|
|||||||
@@ -625,12 +625,12 @@ type Sysinfo_t struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Utsname struct {
|
type Utsname struct {
|
||||||
Sysname [65]uint8
|
Sysname [65]byte
|
||||||
Nodename [65]uint8
|
Nodename [65]byte
|
||||||
Release [65]uint8
|
Release [65]byte
|
||||||
Version [65]uint8
|
Version [65]byte
|
||||||
Machine [65]uint8
|
Machine [65]byte
|
||||||
Domainname [65]uint8
|
Domainname [65]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
type Ustat_t struct {
|
type Ustat_t struct {
|
||||||
|
|||||||
@@ -625,12 +625,12 @@ type Sysinfo_t struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Utsname struct {
|
type Utsname struct {
|
||||||
Sysname [65]uint8
|
Sysname [65]byte
|
||||||
Nodename [65]uint8
|
Nodename [65]byte
|
||||||
Release [65]uint8
|
Release [65]byte
|
||||||
Version [65]uint8
|
Version [65]byte
|
||||||
Machine [65]uint8
|
Machine [65]byte
|
||||||
Domainname [65]uint8
|
Domainname [65]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
type Ustat_t struct {
|
type Ustat_t struct {
|
||||||
|
|||||||
@@ -642,12 +642,12 @@ type Sysinfo_t struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Utsname struct {
|
type Utsname struct {
|
||||||
Sysname [65]int8
|
Sysname [65]byte
|
||||||
Nodename [65]int8
|
Nodename [65]byte
|
||||||
Release [65]int8
|
Release [65]byte
|
||||||
Version [65]int8
|
Version [65]byte
|
||||||
Machine [65]int8
|
Machine [65]byte
|
||||||
Domainname [65]int8
|
Domainname [65]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
type Ustat_t struct {
|
type Ustat_t struct {
|
||||||
|
|||||||
@@ -601,12 +601,12 @@ type Sysinfo_t struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Utsname struct {
|
type Utsname struct {
|
||||||
Sysname [65]int8
|
Sysname [65]byte
|
||||||
Nodename [65]int8
|
Nodename [65]byte
|
||||||
Release [65]int8
|
Release [65]byte
|
||||||
Version [65]int8
|
Version [65]byte
|
||||||
Machine [65]int8
|
Machine [65]byte
|
||||||
Domainname [65]int8
|
Domainname [65]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
type Ustat_t struct {
|
type Ustat_t struct {
|
||||||
|
|||||||
@@ -263,11 +263,11 @@ type FdSet struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Utsname struct {
|
type Utsname struct {
|
||||||
Sysname [257]int8
|
Sysname [257]byte
|
||||||
Nodename [257]int8
|
Nodename [257]byte
|
||||||
Release [257]int8
|
Release [257]byte
|
||||||
Version [257]int8
|
Version [257]byte
|
||||||
Machine [257]int8
|
Machine [257]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
type Ustat_t struct {
|
type Ustat_t struct {
|
||||||
|
|||||||
Reference in New Issue
Block a user