mirror of
https://github.com/golang/go
synced 2024-11-18 17:54:57 -07:00
time: unconditionally use RegLoadMUIString on Windows
RegLoadMUIString is supported on Windows Vista and later, so this should be safe to do unconditionally. While here, also unconditionally use GetDynamicTimeZoneInformation in syscall/windows/registry tests, since it's also supported on Windows Vista and later. Change-Id: Ifa32a81f4727d4810f2b9ccc814aa77a43513e59 Reviewed-on: https://go-review.googlesource.com/c/go/+/527595 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Bryan Mills <bcmills@google.com> Reviewed-by: Heschi Kreinick <heschi@google.com> Run-TryBot: Quim Muntal <quimmuntal@gmail.com>
This commit is contained in:
parent
856cf23a8a
commit
de4ead8102
@ -599,12 +599,6 @@ func TestInvalidValues(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestGetMUIStringValue(t *testing.T) {
|
func TestGetMUIStringValue(t *testing.T) {
|
||||||
if err := registry.LoadRegLoadMUIString(); err != nil {
|
|
||||||
t.Skip("regLoadMUIString not supported; skipping")
|
|
||||||
}
|
|
||||||
if err := procGetDynamicTimeZoneInformation.Find(); err != nil {
|
|
||||||
t.Skipf("%s not supported; skipping", procGetDynamicTimeZoneInformation.Name)
|
|
||||||
}
|
|
||||||
var dtzi DynamicTimezoneinformation
|
var dtzi DynamicTimezoneinformation
|
||||||
if _, err := GetDynamicTimeZoneInformation(&dtzi); err != nil {
|
if _, err := GetDynamicTimeZoneInformation(&dtzi); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
|
@ -17,10 +17,6 @@ const (
|
|||||||
_ERROR_NO_MORE_ITEMS syscall.Errno = 259
|
_ERROR_NO_MORE_ITEMS syscall.Errno = 259
|
||||||
)
|
)
|
||||||
|
|
||||||
func LoadRegLoadMUIString() error {
|
|
||||||
return procRegLoadMUIStringW.Find()
|
|
||||||
}
|
|
||||||
|
|
||||||
//sys regCreateKeyEx(key syscall.Handle, subkey *uint16, reserved uint32, class *uint16, options uint32, desired uint32, sa *syscall.SecurityAttributes, result *syscall.Handle, disposition *uint32) (regerrno error) = advapi32.RegCreateKeyExW
|
//sys regCreateKeyEx(key syscall.Handle, subkey *uint16, reserved uint32, class *uint16, options uint32, desired uint32, sa *syscall.SecurityAttributes, result *syscall.Handle, disposition *uint32) (regerrno error) = advapi32.RegCreateKeyExW
|
||||||
//sys regDeleteKey(key syscall.Handle, subkey *uint16) (regerrno error) = advapi32.RegDeleteKeyW
|
//sys regDeleteKey(key syscall.Handle, subkey *uint16) (regerrno error) = advapi32.RegDeleteKeyW
|
||||||
//sys regSetValueEx(key syscall.Handle, valueName *uint16, reserved uint32, vtype uint32, buf *byte, bufsize uint32) (regerrno error) = advapi32.RegSetValueExW
|
//sys regSetValueEx(key syscall.Handle, valueName *uint16, reserved uint32, vtype uint32, buf *byte, bufsize uint32) (regerrno error) = advapi32.RegSetValueExW
|
||||||
|
@ -115,9 +115,6 @@ func (k Key) GetStringValue(name string) (val string, valtype uint32, err error)
|
|||||||
// the specified value name associated with an open key k.
|
// the specified value name associated with an open key k.
|
||||||
// If the value name doesn't exist or the localized string value
|
// If the value name doesn't exist or the localized string value
|
||||||
// can't be resolved, GetMUIStringValue returns ErrNotExist.
|
// can't be resolved, GetMUIStringValue returns ErrNotExist.
|
||||||
// GetMUIStringValue panics if the system doesn't support
|
|
||||||
// regLoadMUIString; use LoadRegLoadMUIString to check if
|
|
||||||
// regLoadMUIString is supported before calling this function.
|
|
||||||
func (k Key) GetMUIStringValue(name string) (string, error) {
|
func (k Key) GetMUIStringValue(name string) (string, error) {
|
||||||
pname, err := syscall.UTF16PtrFromString(name)
|
pname, err := syscall.UTF16PtrFromString(name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -20,8 +20,8 @@ var platformZoneSources []string // none: Windows uses system calls instead
|
|||||||
// time apply to all previous and future years as well.
|
// time apply to all previous and future years as well.
|
||||||
|
|
||||||
// matchZoneKey checks if stdname and dstname match the corresponding key
|
// matchZoneKey checks if stdname and dstname match the corresponding key
|
||||||
// values "MUI_Std" and MUI_Dlt" or "Std" and "Dlt" (the latter down-level
|
// values "MUI_Std" and MUI_Dlt" or "Std" and "Dlt" in the kname key stored
|
||||||
// from Vista) in the kname key stored under the open registry key zones.
|
// under the open registry key zones.
|
||||||
func matchZoneKey(zones registry.Key, kname string, stdname, dstname string) (matched bool, err2 error) {
|
func matchZoneKey(zones registry.Key, kname string, stdname, dstname string) (matched bool, err2 error) {
|
||||||
k, err := registry.OpenKey(zones, kname, registry.READ)
|
k, err := registry.OpenKey(zones, kname, registry.READ)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -30,13 +30,11 @@ func matchZoneKey(zones registry.Key, kname string, stdname, dstname string) (ma
|
|||||||
defer k.Close()
|
defer k.Close()
|
||||||
|
|
||||||
var std, dlt string
|
var std, dlt string
|
||||||
if err = registry.LoadRegLoadMUIString(); err == nil {
|
|
||||||
// Try MUI_Std and MUI_Dlt first, fallback to Std and Dlt if *any* error occurs
|
// Try MUI_Std and MUI_Dlt first, fallback to Std and Dlt if *any* error occurs
|
||||||
std, err = k.GetMUIStringValue("MUI_Std")
|
std, err = k.GetMUIStringValue("MUI_Std")
|
||||||
if err == nil {
|
if err == nil {
|
||||||
dlt, err = k.GetMUIStringValue("MUI_Dlt")
|
dlt, err = k.GetMUIStringValue("MUI_Dlt")
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if err != nil { // Fallback to Std and Dlt
|
if err != nil { // Fallback to Std and Dlt
|
||||||
if std, _, err = k.GetStringValue("Std"); err != nil {
|
if std, _, err = k.GetStringValue("Std"); err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
|
@ -45,13 +45,11 @@ func TestToEnglishName(t *testing.T) {
|
|||||||
defer k.Close()
|
defer k.Close()
|
||||||
|
|
||||||
var std, dlt string
|
var std, dlt string
|
||||||
if err = registry.LoadRegLoadMUIString(); err == nil {
|
|
||||||
// Try MUI_Std and MUI_Dlt first, fallback to Std and Dlt if *any* error occurs
|
// Try MUI_Std and MUI_Dlt first, fallback to Std and Dlt if *any* error occurs
|
||||||
std, err = k.GetMUIStringValue("MUI_Std")
|
std, err = k.GetMUIStringValue("MUI_Std")
|
||||||
if err == nil {
|
if err == nil {
|
||||||
dlt, err = k.GetMUIStringValue("MUI_Dlt")
|
dlt, err = k.GetMUIStringValue("MUI_Dlt")
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if err != nil { // Fallback to Std and Dlt
|
if err != nil { // Fallback to Std and Dlt
|
||||||
if std, _, err = k.GetStringValue("Std"); err != nil {
|
if std, _, err = k.GetStringValue("Std"); err != nil {
|
||||||
t.Fatalf("cannot read CEST Std registry key: %s", err)
|
t.Fatalf("cannot read CEST Std registry key: %s", err)
|
||||||
|
Loading…
Reference in New Issue
Block a user