Browse Source

Avoid strings.Split

This results in less function calls.
Julian Kornberger 10 years ago
parent
commit
b9430bdb4a
1 changed files with 9 additions and 5 deletions
  1. 9 5
      ftp.go

+ 9 - 5
ftp.go

@@ -290,14 +290,18 @@ var errUnsupportedListLine = errors.New("Unsupported LIST line")
 
 // parseRFC3659ListLine parses the style of directory line defined in RFC 3659.
 func parseRFC3659ListLine(line string) (*Entry, error) {
-	if i := strings.Index(line, ";"); i < 0 || i > strings.Index(line, " ") {
+	iSemicolon := strings.Index(line, ";")
+	iWhitespace := strings.Index(line, " ")
+
+	if iSemicolon < 0 || iSemicolon > iWhitespace {
 		return nil, errUnsupportedListLine
 	}
-	e := &Entry{}
-	arr := strings.Split(line, "; ")
-	e.Name = arr[1]
 
-	for _, field := range strings.Split(arr[0], ";") {
+	e := &Entry{
+		Name: line[iWhitespace+1 : len(line)],
+	}
+
+	for _, field := range strings.Split(line[:iWhitespace-1], ";") {
 		i := strings.Index(field, "=")
 		if i < 1 {
 			return nil, errUnsupportedListLine