aboutsummaryrefslogtreecommitdiff
path: root/libgo/syscalls/stringbyte.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/syscalls/stringbyte.go')
-rw-r--r--libgo/syscalls/stringbyte.go13
1 files changed, 13 insertions, 0 deletions
diff --git a/libgo/syscalls/stringbyte.go b/libgo/syscalls/stringbyte.go
index b673c9b..1761953 100644
--- a/libgo/syscalls/stringbyte.go
+++ b/libgo/syscalls/stringbyte.go
@@ -6,6 +6,8 @@
package syscall
+import "unsafe"
+
// StringByteSlice returns a NUL-terminated slice of bytes
// containing the text of s.
func StringByteSlice(s string) []byte {
@@ -22,3 +24,14 @@ func StringBytePtr(s string) *byte {
p := StringByteSlice(s);
return &p[0];
}
+
+// BytePtrToString takes a NUL-terminated array of bytes and convert
+// it to a Go string.
+func BytePtrToString(p *byte) string {
+ a := (*[10000]byte)(unsafe.Pointer(p))
+ i := 0
+ for a[i] != 0 {
+ i++
+ }
+ return string(a[:i])
+}