From 85ac8177ad6f4248f720e10f994ea445d4be422e Mon Sep 17 00:00:00 2001 From: Matthias Radestock Date: Thu, 6 Oct 2016 08:57:12 +0100 Subject: [PATCH] inline (u)int8 array to string conversion so that the code compiles regardless of the uts.Release array type, which varies across platforms. Fixes #2506 --- prog/weaver/checkpoint.go | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/prog/weaver/checkpoint.go b/prog/weaver/checkpoint.go index fac1b089..4f442212 100644 --- a/prog/weaver/checkpoint.go +++ b/prog/weaver/checkpoint.go @@ -32,9 +32,21 @@ func checkForUpdates(dockerVersion string, network string) { var uts syscall.Utsname syscall.Uname(&uts) + + release := uts.Release[:] + releaseBytes := make([]byte, len(release)) + i := 0 + for ; i < len(release); i++ { + if release[i] == 0 { + break + } + releaseBytes[i] = uint8(release[i]) + } + kernelVersion := string(releaseBytes[:i]) + flags := map[string]string{ "docker-version": dockerVersion, - "kernel-version": charsToString(uts.Release[:]), + "kernel-version": kernelVersion, } if network != "" { flags["network"] = network @@ -49,15 +61,3 @@ func checkForUpdates(dockerVersion string, network string) { } checker = checkpoint.CheckInterval(¶ms, updateCheckPeriod, handleResponse) } - -func charsToString(ca []int8) string { - s := make([]byte, len(ca)) - i := 0 - for ; i < len(ca); i++ { - if ca[i] == 0 { - break - } - s[i] = uint8(ca[i]) - } - return string(s[:i]) -}