X-Git-Url: http://sjero.net/git/?p=wget;a=blobdiff_plain;f=src%2Fftp-basic.c;h=8d3342c0c73acee808bbd48215871d5978d470dd;hp=38f0069fa394637e58b990b33ea54add4785be74;hb=d763f8bf6d6e13ce006ffab616cc8a77e747a633;hpb=2c772204111e678b7715937052c3e7217a42e1ad diff --git a/src/ftp-basic.c b/src/ftp-basic.c index 38f0069f..8d3342c0 100644 --- a/src/ftp-basic.c +++ b/src/ftp-basic.c @@ -68,7 +68,7 @@ ftp_response (int fd, char **ret_line) return FTPRERR; /* Strip trailing CRLF before printing the line, so that - escnonprint doesn't include bogus \012 and \015. */ + quotting doesn't include bogus \012 and \015. */ p = strchr (line, '\0'); if (p > line && p[-1] == '\n') *--p = '\0'; @@ -76,9 +76,10 @@ ftp_response (int fd, char **ret_line) *--p = '\0'; if (opt.server_response) - logprintf (LOG_NOTQUIET, "%s\n", escnonprint (line)); + logprintf (LOG_NOTQUIET, "%s\n", + quotearg_style (escape_quoting_style, line)); else - DEBUGP (("%s\n", escnonprint (line))); + DEBUGP (("%s\n", quotearg_style (escape_quoting_style, line))); /* The last line of output is the one that begins with "ddd ". */ if (c_isdigit (line[0]) && c_isdigit (line[1]) && c_isdigit (line[2]) @@ -116,7 +117,8 @@ ftp_request (const char *command, const char *value) if (*p == '\r' || *p == '\n') *p = ' '; DEBUGP (("\nDetected newlines in %s \"%s\"; changing to %s \"%s\"\n", - command, escnonprint (value), command, escnonprint (defanged))); + command, quotearg_style (escape_quoting_style, value), + command, quotearg_style (escape_quoting_style, defanged))); /* Make VALUE point to the defanged copy of the string. */ value = defanged; } @@ -187,7 +189,7 @@ ftp_login (int csock, const char *acc, const char *pass) "331 s/key ", "331 opiekey " }; - int i; + size_t i; const char *seed = NULL; for (i = 0; i < countof (skey_head); i++) @@ -956,17 +958,24 @@ ftp_retr (int csock, const char *file) /* Sends the LIST command to the server. If FILE is NULL, send just `LIST' (no space). */ uerr_t -ftp_list (int csock, const char *file) +ftp_list (int csock, const char *file, enum stype rs) { char *request, *respline; int nwritten; uerr_t err; bool ok = false; - int i = 0; + size_t i = 0; /* Try `LIST -a' first and revert to `LIST' in case of failure. */ const char *list_commands[] = { "LIST -a", "LIST" }; + /* 2008-01-29 SMS. For a VMS FTP server, where "LIST -a" may not + fail, but will never do what is desired here, skip directly to the + simple "LIST" command (assumed to be the last one in the list). + */ + if (rs == ST_VMS) + i = countof (list_commands)- 1; + do { /* Send request. */ request = ftp_request (list_commands[i], file);