[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
patch for wput
Hi,
Please note that wput 0.4 doesn't like multiline response messages
returned in one chunk. Try ftp://boxter.barnet.com.au/.
This patch overcomes the problem.
[~/cvs/ports/ftp/wput] edwin@k7>less files/patch-src\:\:ftp.c
--- src/ftp.c.orig Mon Jul 5 21:26:46 2004
+++ src/ftp.c Mon Jul 5 21:39:05 2004
@@ -798,15 +798,30 @@
int get_msg(int csock, char * msg, int buflen){
int res = 0;
+ char *s;
do {
memset(msg, 0, buflen);
res = recv(csock, msg, buflen-1, 0);
printout(vDEBUG, "%s", msg);
+ /*
+ * Multiline responses should of course only check on the last line.
+ * If there are two \n's from the end of the string in the string,
+ * the check at the start of second last one.
+ */
+ if ((s=strrchr(msg,'\n'))!=NULL) {
+ if ((s=strrchr(s-1,'\n'))!=NULL) {
+ s++;
+ if (*s=='\r') s++;
+ } else
+ s=msg;
+ } else {
+ s=msg;
+ }
/* multiline messages are required by rfc to have a hiphen
* after the command-code (e.g. 250-).
* this counts for all but the last one, so look out for it. */
- } while(msg[3] == '-');
+ } while(s[3] == '-');
return res;
}
Edwin
--
Edwin Groothuis | Personal website: http://www.mavetju.org
edwin@mavetju.org | Weblog: http://weblog.barnet.com.au/edwin/