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++;
--
⑨