shithub: riscv

Download patch

ref: b8990cfbb4f5aede73e01dc1838c1c5c19dc072a
parent: 012273f39d239fa3b65ff17e699db5f91eb701c6
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++;
--