git: 9front

Download patch

ref: 7e8de4e2f03ec1fd241d0d513bdb2717fadb5ef5
parent: eb4eb69f45742c87d5251c79016afba13e50a81f
author: ftrvxmtrx <ftrvxmtrx@gmail.com>
date: Sat Feb 16 17:06:26 EST 2013

ftpfs: do not call getfields after NLST

--- a/sys/src/cmd/ip/ftpfs/proto.c
+++ b/sys/src/cmd/ip/ftpfs/proto.c
@@ -502,7 +502,7 @@
  *  decode a Unix or Plan 9 directory listing
  */
 static Dir*
-crackdir(char *p, String **remname)
+crackdir(char *p, String **remname, int nlst)
 {
 	char *field[15];
 	char *dfield[4];
@@ -513,9 +513,15 @@
 
 	memset(&d, 0, sizeof(d));
 
-	n = getfields(p, field, 15, 1, " \t");
-	if(n > 2 && strcmp(field[n-2], "->") == 0)
-		n -= 2;
+	if(nlst != 0){
+		field[0] = p;
+		n = 1;
+	} else {
+		n = getfields(p, field, 15, 1, " \t");
+		if(n > 2 && strcmp(field[n-2], "->") == 0)
+			n -= 2;
+	}
+
 	switch(os){
 	case TSO:
 		cp = strchr(field[0], '.');
@@ -786,7 +792,7 @@
 				n--;
 			line[n - 1] = 0;
 
-			d = crackdir(line, &remname);
+			d = crackdir(line, &remname, (usenlist || usenlst));
 			if(d == nil)
 				continue;
 			files++;
--