From 02430f88da591ccded11c3a912968b987901425f Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Wed, 21 Aug 2019 11:27:21 +0200 Subject: [PATCH] pkg/runtime: simplify Utsname string conversion (#5625) Use Utsname from golang.org/x/sys/unix which contains byte array instead of int8/uint8 array members. This allows to simplify the string conversions of these members. Signed-off-by: Tobias Klauser --- pkg/runtime/uname_linux.go | 22 ++++++++++++---------- pkg/runtime/uname_linux_int8.go | 28 ---------------------------- pkg/runtime/uname_linux_uint8.go | 28 ---------------------------- 3 files changed, 12 insertions(+), 66 deletions(-) delete mode 100644 pkg/runtime/uname_linux_int8.go delete mode 100644 pkg/runtime/uname_linux_uint8.go diff --git a/pkg/runtime/uname_linux.go b/pkg/runtime/uname_linux.go index 96cf8e98b..cf81b13ec 100644 --- a/pkg/runtime/uname_linux.go +++ b/pkg/runtime/uname_linux.go @@ -14,22 +14,24 @@ package runtime import ( - "syscall" + "bytes" + + "golang.org/x/sys/unix" ) // Uname returns the uname of the host machine. func Uname() string { - buf := syscall.Utsname{} - err := syscall.Uname(&buf) + buf := unix.Utsname{} + err := unix.Uname(&buf) if err != nil { - panic("syscall.Uname failed: " + err.Error()) + panic("unix.Uname failed: " + err.Error()) } - str := "(" + charsToString(buf.Sysname[:]) - str += " " + charsToString(buf.Release[:]) - str += " " + charsToString(buf.Version[:]) - str += " " + charsToString(buf.Machine[:]) - str += " " + charsToString(buf.Nodename[:]) - str += " " + charsToString(buf.Domainname[:]) + ")" + str := "(" + string(buf.Sysname[:bytes.IndexByte(buf.Sysname[:], 0)]) + str += " " + string(buf.Release[:bytes.IndexByte(buf.Release[:], 0)]) + str += " " + string(buf.Version[:bytes.IndexByte(buf.Version[:], 0)]) + str += " " + string(buf.Machine[:bytes.IndexByte(buf.Machine[:], 0)]) + str += " " + string(buf.Nodename[:bytes.IndexByte(buf.Nodename[:], 0)]) + str += " " + string(buf.Domainname[:bytes.IndexByte(buf.Domainname[:], 0)]) + ")" return str } diff --git a/pkg/runtime/uname_linux_int8.go b/pkg/runtime/uname_linux_int8.go deleted file mode 100644 index aa6680a59..000000000 --- a/pkg/runtime/uname_linux_int8.go +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2017 The Prometheus Authors -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// +build 386 amd64 arm64 mips64 mips64le mips mipsle -// +build linux - -package runtime - -func charsToString(ca []int8) string { - s := make([]byte, 0, len(ca)) - for _, c := range ca { - if byte(c) == 0 { - break - } - s = append(s, byte(c)) - } - return string(s) -} diff --git a/pkg/runtime/uname_linux_uint8.go b/pkg/runtime/uname_linux_uint8.go deleted file mode 100644 index d52d521f7..000000000 --- a/pkg/runtime/uname_linux_uint8.go +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2017 The Prometheus Authors -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// +build arm ppc64 ppc64le s390x -// +build linux - -package runtime - -func charsToString(ca []uint8) string { - s := make([]byte, 0, len(ca)) - for _, c := range ca { - if byte(c) == 0 { - break - } - s = append(s, byte(c)) - } - return string(s) -}