[Toybox] [PATCH] ftpget: fix serverl bugs in ftpget

luolongjuna at gmail.com luolongjuna at gmail.com
Sat Feb 13 09:11:07 PST 2021


From: anatasluo <luolongjuna at gmail.com>

1) One error between P and p configure options.
2) When I run ftpget with option "-g", it transfers a file successfully but exits with code 1. After check the rfc document, I find ftp server will return 150 and then 226.

Signed-off-by: anatasluo <luolongjuna at gmail.com>
---
 toys/net/ftpget.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/toys/net/ftpget.c b/toys/net/ftpget.c
index 27ea6db6..1be65cb9 100644
--- a/toys/net/ftpget.c
+++ b/toys/net/ftpget.c
@@ -20,8 +20,8 @@ config FTPGET
     transfer, optionally saving under a LOCAL name. Can also send, list, etc.
 
     -c	Continue partial transfer
-    -p	Use PORT instead of "21"
-    -P	Use PASSWORD instead of "ftpget@"
+    -P	Use PORT instead of "21"
+    -p	Use PASSWORD instead of "ftpget@"
     -u	Use USER instead of "anonymous"
     -v	Verbose
 
@@ -65,7 +65,7 @@ static int xread2line(int fd, char *buf, int len)
   while (total--)
     if (buf[total]=='\r' || buf[total]=='\n') buf[total] = 0;
     else break;
-  if (toys.optflags & FLAG_v) fprintf(stderr, "%s\n", toybuf);
+  if (toys.optflags & FLAG_v) fprintf(stderr, "%s\n", buf);
 
   return total+1;
 }
@@ -100,19 +100,19 @@ void ftpget_main(void)
     toys.optflags |= (toys.which->name[3]=='g') ? FLAG_g : FLAG_s;
 
   if (!TT.u) TT.u = "anonymous";
-  if (!TT.P) TT.P = "ftpget@";
-  if (!TT.p) TT.p = "21";
+  if (!TT.p) TT.p = "ftpget@";
+  if (!TT.P) TT.P = "21";
   if (!remote) remote = toys.optargs[1];
 
   // connect
-  TT.fd = xconnectany(xgetaddrinfo(*toys.optargs, TT.p, 0, SOCK_STREAM, 0,
+  TT.fd = xconnectany(xgetaddrinfo(*toys.optargs, TT.P, 0, SOCK_STREAM, 0,
     AI_ADDRCONFIG));
   if (getpeername(TT.fd, (void *)&si6, &sl)) perror_exit("getpeername");
 
   // Login
   ftp_line(0, 0, 220);
   rc = ftp_line("USER", TT.u, 0);
-  if (rc == 331) rc = ftp_line("PASS", TT.P, 0);
+  if (rc == 331) rc = ftp_line("PASS", TT.p, 0);
   if (rc != 230) error_exit_raw(toybuf);
 
   if (toys.optflags & FLAG_m) {
@@ -177,9 +177,9 @@ void ftpget_main(void)
         ftp_line("REST", buf, 350);
       } else lenl = 0;
 
-      ftp_line(cmd, remote, -1);
+      ftp_line(cmd, remote, 150);
       lenl += xsendfile(port, ii);
-      ftp_line(0, 0, (toys.optflags&FLAG_g) ? 226 : 150);
+      ftp_line(0, 0, 226);
     } else if (toys.optflags & FLAG_s) {
       cmd = "STOR";
       if (cnt && lenr) {
-- 
2.25.1



More information about the Toybox mailing list