mirror of
https://github.com/rwinkhart/sys.git
synced 2026-09-02 15:17:31 -04:00
windows: use UTF16FromString and UTF16ToString from syscall
This CL updates the windows.UTF16FromString and windows.UTF16ToString implementation so they forward to their syscall counterparts. The standard library uses these particular syscall functions across the board as it can't depend on x/sys. This means that even if the syscall API is frozen, the implementation still receives improvements and bug fixes, such as CL 425054. Porting CL 425054 to x/sys is possible, but for this particular case I think it's better to just call the syscall package. This way both repos will benefit from future improvements (which I plan to do soon). Change-Id: I305c4409142d79a57008d7e6d0717fb8986fe906 Reviewed-on: https://go-review.googlesource.com/c/sys/+/462875 Run-TryBot: Ian Lance Taylor <iant@google.com> Auto-Submit: Ian Lance Taylor <iant@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@google.com> Run-TryBot: Quim Muntal <quimmuntal@gmail.com> Reviewed-by: Bryan Mills <bcmills@google.com>
This commit is contained in:
@@ -10,7 +10,6 @@ import (
|
|||||||
errorspkg "errors"
|
errorspkg "errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
|
||||||
"sync"
|
"sync"
|
||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
@@ -87,22 +86,13 @@ func StringToUTF16(s string) []uint16 {
|
|||||||
// s, with a terminating NUL added. If s contains a NUL byte at any
|
// s, with a terminating NUL added. If s contains a NUL byte at any
|
||||||
// location, it returns (nil, syscall.EINVAL).
|
// location, it returns (nil, syscall.EINVAL).
|
||||||
func UTF16FromString(s string) ([]uint16, error) {
|
func UTF16FromString(s string) ([]uint16, error) {
|
||||||
if strings.IndexByte(s, 0) != -1 {
|
return syscall.UTF16FromString(s)
|
||||||
return nil, syscall.EINVAL
|
|
||||||
}
|
|
||||||
return utf16.Encode([]rune(s + "\x00")), nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// UTF16ToString returns the UTF-8 encoding of the UTF-16 sequence s,
|
// UTF16ToString returns the UTF-8 encoding of the UTF-16 sequence s,
|
||||||
// with a terminating NUL and any bytes after the NUL removed.
|
// with a terminating NUL and any bytes after the NUL removed.
|
||||||
func UTF16ToString(s []uint16) string {
|
func UTF16ToString(s []uint16) string {
|
||||||
for i, v := range s {
|
return syscall.UTF16ToString(s)
|
||||||
if v == 0 {
|
|
||||||
s = s[:i]
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return string(utf16.Decode(s))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// StringToUTF16Ptr is deprecated. Use UTF16PtrFromString instead.
|
// StringToUTF16Ptr is deprecated. Use UTF16PtrFromString instead.
|
||||||
|
|||||||
Reference in New Issue
Block a user