Merge pull request #110 from digineo/time-parsing

Fix time parsing and reduce syscalls
This commit is contained in:
Julien Laffaye
2018-01-05 08:56:08 +01:00
committed by GitHub
3 changed files with 128 additions and 50 deletions

9
ftp.go
View File

@@ -348,14 +348,14 @@ func (c *ServerConn) NameList(path string) (entries []string, err error) {
// List issues a LIST FTP command.
func (c *ServerConn) List(path string) (entries []*Entry, err error) {
var cmd string
var parseFunc func(string) (*Entry, error)
var parser parseFunc
if c.mlstSupported {
cmd = "MLSD"
parseFunc = parseRFC3659ListLine
parser = parseRFC3659ListLine
} else {
cmd = "LIST"
parseFunc = parseListLine
parser = parseListLine
}
conn, err := c.cmdDataConnFrom(0, "%s %s", cmd, path)
@@ -367,8 +367,9 @@ func (c *ServerConn) List(path string) (entries []*Entry, err error) {
defer r.Close()
scanner := bufio.NewScanner(r)
now := time.Now()
for scanner.Scan() {
entry, err := parseFunc(scanner.Text())
entry, err := parser(scanner.Text(), now)
if err == nil {
entries = append(entries, entry)
}