Browse code

Move charsToString to architecture dependent source to fix casting problem

Signed-off-by: Stefan Scherer <scherer_stefan@icloud.com>

Stefan Scherer authored on 2015/11/18 19:13:04
Showing 3 changed files
... ...
@@ -14,15 +14,3 @@ func GetRuntimeArchitecture() (string, error) {
14 14
 	}
15 15
 	return charsToString(utsname.Machine), nil
16 16
 }
17
-
18
-func charsToString(ca [65]int8) string {
19
-	s := make([]byte, len(ca))
20
-	var lens int
21
-	for ; lens < len(ca); lens++ {
22
-		if ca[lens] == 0 {
23
-			break
24
-		}
25
-		s[lens] = uint8(ca[lens])
26
-	}
27
-	return string(s[0:lens])
28
-}
29 17
new file mode 100644
... ...
@@ -0,0 +1,18 @@
0
+// +build linux,386 linux,amd64 linux,arm64
1
+// see golang's sources src/syscall/ztypes_linux_*.go that use int8
2
+
3
+package platform
4
+
5
+// Convert the OS/ARCH-specific utsname.Machine to string
6
+// given as an array of signed int8
7
+func charsToString(ca [65]int8) string {
8
+	s := make([]byte, len(ca))
9
+	var lens int
10
+	for ; lens < len(ca); lens++ {
11
+		if ca[lens] == 0 {
12
+			break
13
+		}
14
+		s[lens] = uint8(ca[lens])
15
+	}
16
+	return string(s[0:lens])
17
+}
0 18
new file mode 100644
... ...
@@ -0,0 +1,18 @@
0
+// +build linux,arm linux,ppc64 linux,ppc64le s390x
1
+// see golang's sources src/syscall/ztypes_linux_*.go that use uint8
2
+
3
+package platform
4
+
5
+// Convert the OS/ARCH-specific utsname.Machine to string
6
+// given as an array of unsigned uint8
7
+func charsToString(ca [65]uint8) string {
8
+	s := make([]byte, len(ca))
9
+	var lens int
10
+	for ; lens < len(ca); lens++ {
11
+		if ca[lens] == 0 {
12
+			break
13
+		}
14
+		s[lens] = ca[lens]
15
+	}
16
+	return string(s[0:lens])
17
+}