From: Russ Cox Date: Sun, 5 Jul 2020 20:34:27 +0000 (-0400) Subject: syscall: remove dependency on io X-Git-Tag: go1.16beta1~764 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=84f3b33f10d8f12818975cb188da46145ac2036a;p=gostls13.git syscall: remove dependency on io Keep syscall and io separated; neither should depend on the other. Change-Id: Icdd61bd0c05d874cabd7b5ae6631dd09dec90112 Reviewed-on: https://go-review.googlesource.com/c/go/+/243902 Trust: Russ Cox Run-TryBot: Russ Cox TryBot-Result: Go Bot Reviewed-by: Ian Lance Taylor Reviewed-by: Rob Pike --- diff --git a/src/go/build/deps_test.go b/src/go/build/deps_test.go index ec2a2f9328..1edd96c5e3 100644 --- a/src/go/build/deps_test.go +++ b/src/go/build/deps_test.go @@ -102,7 +102,7 @@ var depsRules = ` reflect !< sort; # SYSCALL is RUNTIME plus the packages necessary for basic system calls. - RUNTIME, unicode/utf8, unicode/utf16, io + RUNTIME, unicode/utf8, unicode/utf16 < internal/syscall/windows/sysdll, syscall/js < syscall < internal/syscall/unix, internal/syscall/windows, internal/syscall/windows/registry diff --git a/src/internal/syscall/windows/registry/key.go b/src/internal/syscall/windows/registry/key.go index cc3d0c774b..612c48f084 100644 --- a/src/internal/syscall/windows/registry/key.go +++ b/src/internal/syscall/windows/registry/key.go @@ -25,10 +25,7 @@ // package registry -import ( - "io" - "syscall" -) +import "syscall" const ( // Registry key security and access rights. @@ -90,20 +87,13 @@ func OpenKey(k Key, path string, access uint32) (Key, error) { } // ReadSubKeyNames returns the names of subkeys of key k. -// The parameter n controls the number of returned names, -// analogous to the way os.File.Readdirnames works. -func (k Key) ReadSubKeyNames(n int) ([]string, error) { +func (k Key) ReadSubKeyNames() ([]string, error) { names := make([]string, 0) // Registry key size limit is 255 bytes and described there: // https://msdn.microsoft.com/library/windows/desktop/ms724872.aspx buf := make([]uint16, 256) //plus extra room for terminating zero byte loopItems: for i := uint32(0); ; i++ { - if n > 0 { - if len(names) == n { - return names, nil - } - } l := uint32(len(buf)) for { err := syscall.RegEnumKeyEx(syscall.Handle(k), i, &buf[0], &l, nil, nil, nil, nil) @@ -123,9 +113,6 @@ loopItems: } names = append(names, syscall.UTF16ToString(buf[:l])) } - if n > len(names) { - return names, io.EOF - } return names, nil } diff --git a/src/internal/syscall/windows/registry/registry_test.go b/src/internal/syscall/windows/registry/registry_test.go index 8227232c70..5797162900 100644 --- a/src/internal/syscall/windows/registry/registry_test.go +++ b/src/internal/syscall/windows/registry/registry_test.go @@ -34,7 +34,7 @@ func TestReadSubKeyNames(t *testing.T) { } defer k.Close() - names, err := k.ReadSubKeyNames(-1) + names, err := k.ReadSubKeyNames() if err != nil { t.Fatal(err) } @@ -190,7 +190,7 @@ func setValues(t *testing.T, k registry.Key) { } func enumerateValues(t *testing.T, k registry.Key) { - names, err := k.ReadValueNames(-1) + names, err := k.ReadValueNames() if err != nil { t.Error(err) return @@ -480,7 +480,7 @@ func deleteValues(t *testing.T, k registry.Key) { continue } } - names, err := k.ReadValueNames(-1) + names, err := k.ReadValueNames() if err != nil { t.Error(err) return diff --git a/src/internal/syscall/windows/registry/value.go b/src/internal/syscall/windows/registry/value.go index bf8ab00759..dc3930a6bc 100644 --- a/src/internal/syscall/windows/registry/value.go +++ b/src/internal/syscall/windows/registry/value.go @@ -8,7 +8,6 @@ package registry import ( "errors" - "io" "syscall" "unicode/utf16" "unsafe" @@ -341,9 +340,7 @@ func (k Key) DeleteValue(name string) error { } // ReadValueNames returns the value names of key k. -// The parameter n controls the number of returned names, -// analogous to the way os.File.Readdirnames works. -func (k Key) ReadValueNames(n int) ([]string, error) { +func (k Key) ReadValueNames() ([]string, error) { ki, err := k.Stat() if err != nil { return nil, err @@ -352,11 +349,6 @@ func (k Key) ReadValueNames(n int) ([]string, error) { buf := make([]uint16, ki.MaxValueNameLen+1) // extra room for terminating null character loopItems: for i := uint32(0); ; i++ { - if n > 0 { - if len(names) == n { - return names, nil - } - } l := uint32(len(buf)) for { err := regEnumValue(syscall.Handle(k), i, &buf[0], &l, nil, nil, nil, nil) @@ -376,8 +368,5 @@ loopItems: } names = append(names, syscall.UTF16ToString(buf[:l])) } - if n > len(names) { - return names, io.EOF - } return names, nil } diff --git a/src/mime/type_windows.go b/src/mime/type_windows.go index 97b9aeba7a..cee9c9db04 100644 --- a/src/mime/type_windows.go +++ b/src/mime/type_windows.go @@ -13,7 +13,7 @@ func init() { } func initMimeWindows() { - names, err := registry.CLASSES_ROOT.ReadSubKeyNames(-1) + names, err := registry.CLASSES_ROOT.ReadSubKeyNames() if err != nil { return } diff --git a/src/syscall/fs_js.go b/src/syscall/fs_js.go index 262ec28afd..673feea77f 100644 --- a/src/syscall/fs_js.go +++ b/src/syscall/fs_js.go @@ -8,7 +8,6 @@ package syscall import ( "errors" - "io" "sync" "syscall/js" ) @@ -456,11 +455,11 @@ func Seek(fd int, offset int64, whence int) (int64, error) { var newPos int64 switch whence { - case io.SeekStart: + case 0: newPos = offset - case io.SeekCurrent: + case 1: newPos = f.pos + offset - case io.SeekEnd: + case 2: var st Stat_t if err := Fstat(fd, &st); err != nil { return 0, err diff --git a/src/time/zoneinfo_windows.go b/src/time/zoneinfo_windows.go index 2b69d06a1d..ba66f90ffe 100644 --- a/src/time/zoneinfo_windows.go +++ b/src/time/zoneinfo_windows.go @@ -67,7 +67,7 @@ func toEnglishName(stdname, dstname string) (string, error) { } defer k.Close() - names, err := k.ReadSubKeyNames(-1) + names, err := k.ReadSubKeyNames() if err != nil { return "", err }