Skip to content

Commit 0360ef0

Browse files
committed
review adjustments #2
1 parent 931e169 commit 0360ef0

File tree

1 file changed

+18
-14
lines changed

1 file changed

+18
-14
lines changed

server_windows.go

+18-14
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
//go:build go1.18
2-
31
package sftp
42

53
import (
@@ -80,26 +78,33 @@ func (i *driveInfo) Name() string {
8078

8179
type winRoot struct {
8280
dummyFile
83-
doneDirs int
81+
drives []string
8482
}
8583

86-
func (f *winRoot) Readdir(n int) ([]os.FileInfo, error) {
84+
func newWinRoot() (*winRoot, error) {
8785
drives, err := getDrives()
8886
if err != nil {
8987
return nil, err
9088
}
89+
return &winRoot{
90+
drives: drives,
91+
}, nil
92+
}
9193

92-
if f.doneDirs >= len(drives) {
93-
return nil, io.EOF
94+
func (f *winRoot) Readdir(n int) ([]os.FileInfo, error) {
95+
drives := f.drives
96+
if n > 0 {
97+
if len(drives) > n {
98+
drives = drives[:n]
99+
}
100+
f.drives = f.drives[len(drives):]
101+
if len(drives) == 0 {
102+
return nil, io.EOF
103+
}
94104
}
95-
drives = drives[f.doneDirs:]
96105

97106
var infos []os.FileInfo
98-
for i, drive := range drives {
99-
if i >= n {
100-
break
101-
}
102-
107+
for _, drive := range drives {
103108
fi, err := os.Stat(drive)
104109
if err != nil {
105110
return nil, err
@@ -112,13 +117,12 @@ func (f *winRoot) Readdir(n int) ([]os.FileInfo, error) {
112117
infos = append(infos, di)
113118
}
114119

115-
f.doneDirs += len(infos)
116120
return infos, nil
117121
}
118122

119123
func openfile(path string, flag int, mode fs.FileMode) (file, error) {
120124
if path == "/" {
121-
return &winRoot{}, nil
125+
return newWinRoot()
122126
}
123127
return os.OpenFile(path, flag, mode)
124128
}

0 commit comments

Comments
 (0)