diff options
Diffstat (limited to 'libgo/syscalls/stringbyte.go')
-rw-r--r-- | libgo/syscalls/stringbyte.go | 13 |
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]) +} |