]> sjero.net Git - wget/commitdiff
[svn] Fix printing of FTP response.
authorhniksic <devnull@localhost>
Thu, 5 May 2005 10:10:51 +0000 (03:10 -0700)
committerhniksic <devnull@localhost>
Thu, 5 May 2005 10:10:51 +0000 (03:10 -0700)
src/ChangeLog
src/ftp-basic.c

index 58143fa89092aacc01ce4c92fdd3fc502d7297fa..908fc1554c54a4caaa10cfad987b23ea0af25142 100644 (file)
@@ -1,3 +1,7 @@
+2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp-basic.c (ftp_response): Fix printing FTP server response.
+
 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
 
        * retr.c (limit_bandwidth_reset): Reset sleep_adjust.
index e6a2345f9de672c07a4d8ae1232c3bcc6c6c13bb..c6df9b88f357798faf0f47600aa9aad5c1c16bee 100644 (file)
@@ -58,26 +58,34 @@ char ftp_last_respline[128];
    it.  <CR> and <LF> characters are stripped from the line, and the
    line is 0-terminated.  All the response lines but the last one are
    skipped.  The last line is determined as described in RFC959.  */
+
 uerr_t
 ftp_response (int fd, char **ret_line)
 {
   while (1)
     {
+      char *p;
       char *line = fd_read_line (fd);
       if (!line)
        return FTPRERR;
+
+      /* Strip trailing CRLF before printing the line, so that
+        escnonprint doesn't include bogus \012 and \015. */
+      p = strchr (line, '\0');
+      if (p > line && p[-1] == '\n')
+       *--p = '\0';
+      if (p > line && p[-1] == '\r')
+       *--p = '\0';
+
       if (opt.server_response)
-        logputs (LOG_NOTQUIET, escnonprint (line));
+       logprintf (LOG_NOTQUIET, "%s\n", escnonprint (line));
       else
-        DEBUGP (("%s", escnonprint (line)));
+        DEBUGP (("%s\n", escnonprint (line)));
+
+      /* The last line of output is the one that begins with "ddd ". */
       if (ISDIGIT (line[0]) && ISDIGIT (line[1]) && ISDIGIT (line[2])
          && line[3] == ' ')
        {
-         char *p = line + strlen (line);
-         if (p > line && p[-1] == '\n')
-           *--p = '\0';
-         if (p > line && p[-1] == '\r')
-           *--p = '\0';
          strncpy (ftp_last_respline, line, sizeof (ftp_last_respline));
          ftp_last_respline[sizeof (ftp_last_respline) - 1] = '\0';
          *ret_line = line;