1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-21 23:58:49 -05:00

David McCreedy brought line end conversions when doing FTP ASCII

transfers. They are done on non-windows systems and translate CRLF to LF.
This commit is contained in:
Daniel Stenberg 2006-04-26 07:40:37 +00:00
parent 8ed6762363
commit 95152aec68
23 changed files with 380 additions and 214 deletions

11
CHANGES
View File

@ -6,6 +6,17 @@
Changelog Changelog
Daniel (26 April 2006)
- David McCreedy brought initial line end conversions when doing FTP ASCII
transfers. They are done on non-windows systems and translate CRLF to LF.
I modified the 15 LIST-using test cases accordingly. The downside is that now
we'll have even more trouble to get the tests to run on Windows since they
should get CRLF newlines left intact which the *nix versions don't. I figure
the only sane thing to do is to add some kind of [newline] macro for the test
case files and have them expanded to the proper native line ending when the
test cases are run. This is however left to implement.
Daniel (25 April 2006) Daniel (25 April 2006)
- Paul Querna fixed libcurl to better deal with deflate content encoding - Paul Querna fixed libcurl to better deal with deflate content encoding
when the stream (wrongly) lacks a proper zlib header. This seems to be the when the stream (wrongly) lacks a proper zlib header. This seems to be the

View File

@ -11,6 +11,7 @@ Curl and libcurl 7.15.4
This release includes the following changes: This release includes the following changes:
o line end conversions for FTP ASCII transfers
o curl_multi_socket() API added (still mostly untested) o curl_multi_socket() API added (still mostly untested)
o conversion callback options for EBCDIC <=> ASCII conversions o conversion callback options for EBCDIC <=> ASCII conversions
o added CURLINFO_FTP_ENTRY_PATH o added CURLINFO_FTP_ENTRY_PATH
@ -37,6 +38,7 @@ Other curl-related news since the previous public release:
o tclcurl 0.15.3 was released: o tclcurl 0.15.3 was released:
http://personal1.iddeo.es/andresgarci/tclcurl/english/ http://personal1.iddeo.es/andresgarci/tclcurl/english/
o http://curl.usphp.com/ is a new mirror in Florida, US
This release would not have looked like this without help, code, reports and This release would not have looked like this without help, code, reports and
advice from friends like these: advice from friends like these:

View File

@ -1,6 +1,5 @@
To get fixed in 7.15.4 (planned release: June 2006) To get fixed in 7.15.4 (planned release: June 2006)
====================== ======================
65 - curl_multi_socket() added but not extensively tested nor particularly 66 -
documented or pushed for.

View File

@ -66,6 +66,8 @@ may have been fixed since this was written!
specification). The receiver will convert the data from the standard specification). The receiver will convert the data from the standard
form to his own internal form. form to his own internal form.
Since 7.15.4 at least line endings are converted.
19. FTP 3rd party transfers with the multi interface doesn't work. Test: 19. FTP 3rd party transfers with the multi interface doesn't work. Test:
define CURL_MULTIEASY, rebuild curl, run test case 230 - 232. define CURL_MULTIEASY, rebuild curl, run test case 230 - 232.

View File

@ -2994,6 +2994,13 @@ CURLcode Curl_ftp_done(struct connectdata *conn, CURLcode status)
} }
else { else {
if((-1 != conn->size) && (conn->size != *ftp->bytecountp) && if((-1 != conn->size) && (conn->size != *ftp->bytecountp) &&
#ifdef CURL_DO_LINEEND_CONV
/* Most FTP servers don't adjust their file SIZE response for CRLFs, so
* we'll check to see if the discrepancy can be explained by the number
* of CRLFs we've changed to LFs.
*/
((conn->size + data->state.crlf_conversions) != *ftp->bytecountp) &&
#endif /* CURL_DO_LINEEND_CONV */
(conn->maxdownload != *ftp->bytecountp)) { (conn->maxdownload != *ftp->bytecountp)) {
failf(data, "Received only partial file: %" FORMAT_OFF_T " bytes", failf(data, "Received only partial file: %" FORMAT_OFF_T " bytes",
*ftp->bytecountp); *ftp->bytecountp);

View File

@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___ * | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____| * \___|\___/|_| \_\_____|
* *
* Copyright (C) 1998 - 2005, Daniel Stenberg, <daniel@haxx.se>, et al. * Copyright (C) 1998 - 2006, Daniel Stenberg, <daniel@haxx.se>, et al.
* *
* This software is licensed as described in the file COPYING, which * This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms * you should have received as part of this distribution. The terms
@ -139,6 +139,89 @@ void curl_slist_free_all(struct curl_slist *list)
} while (next); } while (next);
} }
#ifdef CURL_DO_LINEEND_CONV
/*
* convert_lineends() changes CRLF (\r\n) end-of-line markers to a single LF
* (\n), with special processing for CRLF sequences that are split between two
* blocks of data. Remaining, bare CRs are changed to LFs. The possibly new
* size of the data is returned.
*/
static size_t convert_lineends(struct SessionHandle *data,
char *startPtr, size_t size)
{
char *inPtr, *outPtr;
/* sanity check */
if ((startPtr == NULL) || (size < 1)) {
return(size);
}
if (data->state.prev_block_had_trailing_cr == TRUE) {
/* The previous block of incoming data
had a trailing CR, which was turned into a LF. */
if (*startPtr == '\n') {
/* This block of incoming data starts with the
previous block's LF so get rid of it */
memcpy(startPtr, startPtr+1, size-1);
size--;
/* and it wasn't a bare CR but a CRLF conversion instead */
data->state.crlf_conversions++;
}
data->state.prev_block_had_trailing_cr = FALSE; /* reset the flag */
}
/* find 1st CR, if any */
inPtr = outPtr = memchr(startPtr, '\r', size);
if (inPtr) {
/* at least one CR, now look for CRLF */
while (inPtr < (startPtr+size-1)) {
/* note that it's size-1, so we'll never look past the last byte */
if (memcmp(inPtr, "\r\n", 2) == 0) {
/* CRLF found, bump past the CR and copy the NL */
inPtr++;
*outPtr = *inPtr;
/* keep track of how many CRLFs we converted */
data->state.crlf_conversions++;
}
else {
if (*inPtr == '\r') {
/* lone CR, move LF instead */
*outPtr = '\n';
}
else {
/* not a CRLF nor a CR, just copy whatever it is */
*outPtr = *inPtr;
}
}
outPtr++;
inPtr++;
} /* end of while loop */
if (inPtr < startPtr+size) {
/* handle last byte */
if (*inPtr == '\r') {
/* deal with a CR at the end of the buffer */
*outPtr = '\n'; /* copy a NL instead */
/* note that a CRLF might be split across two blocks */
data->state.prev_block_had_trailing_cr = TRUE;
}
else {
/* copy last byte */
*outPtr = *inPtr;
}
outPtr++;
inPtr++;
}
if (outPtr < startPtr+size) {
/* tidy up by null terminating the now shorter data */
*outPtr = '\0';
}
return(outPtr - startPtr);
}
return(size);
}
#endif /* CURL_DO_LINEEND_CONV */
/* Curl_infof() is for info message along the way */ /* Curl_infof() is for info message along the way */
void Curl_infof(struct SessionHandle *data, const char *fmt, ...) void Curl_infof(struct SessionHandle *data, const char *fmt, ...)
@ -294,36 +377,36 @@ CURLcode Curl_client_write(struct SessionHandle *data,
if(0 == len) if(0 == len)
len = strlen(ptr); len = strlen(ptr);
#ifdef CURL_DOES_CONVERSIONS
if(type & CLIENTWRITE_BODY) { if(type & CLIENTWRITE_BODY) {
if(data->ftp_in_ascii_mode) { if(data->ftp_in_ascii_mode) {
#ifdef CURL_DOES_CONVERSIONS
/* convert from the network encoding */ /* convert from the network encoding */
size_t rc; size_t rc;
rc = Curl_convert_from_network(data, ptr, len); rc = Curl_convert_from_network(data, ptr, len);
/* Curl_convert_from_network calls failf if unsuccessful */ /* Curl_convert_from_network calls failf if unsuccessful */
if(rc != CURLE_OK) { if(rc != CURLE_OK)
return(rc); return rc;
} #endif /* CURL_DOES_CONVERSIONS */
#ifdef CURL_DO_LINEEND_CONV
/* convert end-of-line markers */
len = convert_lineends(data, ptr, len);
#endif /* CURL_DO_LINEEND_CONV */
} }
/* If the previous block of data ended with CR and this block of data is
just a NL, then the length might be zero */
if (len) { if (len) {
wrote = data->set.fwrite(ptr, 1, len, data->set.out); wrote = data->set.fwrite(ptr, 1, len, data->set.out);
} else { }
else {
wrote = len; wrote = len;
} }
if(wrote != len) { if(wrote != len) {
failf (data, "Failed writing body"); failf (data, "Failed writing body");
return CURLE_WRITE_ERROR; return CURLE_WRITE_ERROR;
} }
} }
#else
if(type & CLIENTWRITE_BODY) {
wrote = data->set.fwrite(ptr, 1, len, data->set.out);
if(wrote != len) {
failf (data, "Failed writing body");
return CURLE_WRITE_ERROR;
}
}
#endif /* CURL_DOES_CONVERSIONS */
if((type & CLIENTWRITE_HEADER) && if((type & CLIENTWRITE_HEADER) &&
(data->set.fwrite_header || data->set.writeheader) ) { (data->set.fwrite_header || data->set.writeheader) ) {

View File

@ -1281,17 +1281,33 @@ CURLcode Curl_readwrite(struct connectdata *conn,
conn->upload_present = nread; conn->upload_present = nread;
/* convert LF to CRLF if so asked */ /* convert LF to CRLF if so asked */
#ifdef CURL_DO_LINEEND_CONV
/* always convert if we're FTPing in ASCII mode */
if ((data->set.crlf) || (data->ftp_in_ascii_mode)) {
#else
if (data->set.crlf) { if (data->set.crlf) {
#endif /* CURL_DO_LINEEND_CONV */
if(data->state.scratch == NULL) if(data->state.scratch == NULL)
data->state.scratch = malloc(2*BUFSIZE); data->state.scratch = malloc(2*BUFSIZE);
if(data->state.scratch == NULL) { if(data->state.scratch == NULL) {
failf (data, "Failed to alloc scratch buffer!"); failf (data, "Failed to alloc scratch buffer!");
return CURLE_OUT_OF_MEMORY; return CURLE_OUT_OF_MEMORY;
} }
/*
* ASCII/EBCDIC Note: This is presumably a text (not binary)
* transfer so the data should already be in ASCII.
* That means the hex values for ASCII CR (0x0d) & LF (0x0a)
* must be used instead of the escape sequences \r & \n.
*/
for(i = 0, si = 0; i < nread; i++, si++) { for(i = 0, si = 0; i < nread; i++, si++) {
if (conn->upload_fromhere[i] == 0x0a) { if (conn->upload_fromhere[i] == 0x0a) {
data->state.scratch[si++] = 0x0d; data->state.scratch[si++] = 0x0d;
data->state.scratch[si] = 0x0a; data->state.scratch[si] = 0x0a;
if (!data->set.crlf) {
/* we're here only because FTP is in ASCII mode...
bump infilesize for the LF we just added */
data->set.infilesize++;
}
} }
else else
data->state.scratch[si] = conn->upload_fromhere[i]; data->state.scratch[si] = conn->upload_fromhere[i];
@ -1417,6 +1433,13 @@ CURLcode Curl_readwrite(struct connectdata *conn,
if(!(conn->bits.no_body) && (conn->size != -1) && if(!(conn->bits.no_body) && (conn->size != -1) &&
(k->bytecount != conn->size) && (k->bytecount != conn->size) &&
#ifdef CURL_DO_LINEEND_CONV
/* Most FTP servers don't adjust their file SIZE response for CRLFs,
so we'll check to see if the discrepancy can be explained
by the number of CRLFs we've changed to LFs.
*/
(k->bytecount != (conn->size + data->state.crlf_conversions)) &&
#endif /* CURL_DO_LINEEND_CONV */
!conn->newurl) { !conn->newurl) {
failf(data, "transfer closed with %" FORMAT_OFF_T failf(data, "transfer closed with %" FORMAT_OFF_T
" bytes remaining to read", " bytes remaining to read",

View File

@ -936,6 +936,15 @@ struct UrlState {
/* a place to store the most recenlty set FTP entrypath */ /* a place to store the most recenlty set FTP entrypath */
char *most_recent_ftp_entrypath; char *most_recent_ftp_entrypath;
#ifndef WIN32
/* do FTP line-end conversions on most platforms */
#define CURL_DO_LINEEND_CONV
/* for FTP downloads: track CRLF sequences that span blocks */
bool prev_block_had_trailing_cr;
/* for FTP downloads: how many CRLFs did we converted to LFs? */
size_t crlf_conversions;
#endif
}; };

View File

@ -8,19 +8,21 @@ LIST
# #
# Server-side # Server-side
<reply> <reply>
<data> # When doing LIST, we get the default list output hard-coded in the test
total 20 # FTP server
drwxr-xr-x 8 98 98 512 Oct 22 13:06 . <datacheck>
drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. total 20
drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
-r--r--r-- 1 0 1 35 Jul 16 1996 README drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev -r--r--r-- 1 0 1 35 Jul 16 1996 README
drwxrwxrwx 2 98 98 512 May 29 16:04 download.html lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
</data> drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
</datacheck>
</reply> </reply>
# #

View File

@ -7,19 +7,21 @@ LIST
</info> </info>
# Server-side # Server-side
<reply> <reply>
<data> # When doing LIST, we get the default list output hard-coded in the test
total 20 # FTP server
drwxr-xr-x 8 98 98 512 Oct 22 13:06 . <datacheck>
drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. total 20
drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
-r--r--r-- 1 0 1 35 Jul 16 1996 README drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev -r--r--r-- 1 0 1 35 Jul 16 1996 README
drwxrwxrwx 2 98 98 512 May 29 16:04 download.html lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
</data> drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
</datacheck>
</reply> </reply>
# Client-side # Client-side

View File

@ -9,19 +9,21 @@ netrc
# #
# Server-side # Server-side
<reply> <reply>
<data> # When doing LIST, we get the default list output hard-coded in the test
total 20 # FTP server
drwxr-xr-x 8 98 98 512 Oct 22 13:06 . <datacheck>
drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. total 20
drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
-r--r--r-- 1 0 1 35 Jul 16 1996 README drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev -r--r--r-- 1 0 1 35 Jul 16 1996 README
drwxrwxrwx 2 98 98 512 May 29 16:04 download.html lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
</data> drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
</datacheck>
</reply> </reply>
# #

View File

@ -8,20 +8,23 @@ netrca
</info> </info>
# #
# Server-side # Server-side
<reply name="1"> <reply>
<data> #
total 20 # When doing LIST, we get the default list output hard-coded in the test
drwxr-xr-x 8 98 98 512 Oct 22 13:06 . # FTP server
drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. <datacheck>
drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT total 20
-r--r--r-- 1 0 1 35 Jul 16 1996 README drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
drwxrwxrwx 2 98 98 512 May 29 16:04 download.html -r--r--r-- 1 0 1 35 Jul 16 1996 README
dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
</data> dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
</datacheck>
</reply> </reply>
# #

View File

@ -9,19 +9,21 @@ netrc
# #
# Server-side # Server-side
<reply> <reply>
<data> # When doing LIST, we get the default list output hard-coded in the test
total 20 # FTP server
drwxr-xr-x 8 98 98 512 Oct 22 13:06 . <datacheck>
drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. total 20
drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
-r--r--r-- 1 0 1 35 Jul 16 1996 README drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev -r--r--r-- 1 0 1 35 Jul 16 1996 README
drwxrwxrwx 2 98 98 512 May 29 16:04 download.html lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
</data> drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
</datacheck>
</reply> </reply>
# #

View File

@ -8,21 +8,22 @@ netrc
</info> </info>
# #
# Server-side # Server-side
<reply name="1"> <reply>
<data> # When doing LIST, we get the default list output hard-coded in the test
total 20 # FTP server
drwxr-xr-x 8 98 98 512 Oct 22 13:06 . <datacheck>
drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. total 20
drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
-r--r--r-- 1 0 1 35 Jul 16 1996 README drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev -r--r--r-- 1 0 1 35 Jul 16 1996 README
drwxrwxrwx 2 98 98 512 May 29 16:04 download.html lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
</data> drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
</reply> dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
</datacheck>
# #
# Client-side # Client-side

View File

@ -8,20 +8,22 @@ netrc
</info> </info>
# #
# Server-side # Server-side
<reply name="1"> <reply>
<data> # When doing LIST, we get the default list output hard-coded in the test
total 20 # FTP server
drwxr-xr-x 8 98 98 512 Oct 22 13:06 . <datacheck>
drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. total 20
drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
-r--r--r-- 1 0 1 35 Jul 16 1996 README drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev -r--r--r-- 1 0 1 35 Jul 16 1996 README
drwxrwxrwx 2 98 98 512 May 29 16:04 download.html lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
</data> drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
</datacheck>
</reply> </reply>
# #

View File

@ -1,17 +1,19 @@
# Server-side # Server-side
<reply> <reply>
# When doing LIST, we get the default list output hard-coded in the test
# FTP server
<datacheck> <datacheck>
total 20 total 20
drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
-r--r--r-- 1 0 1 35 Jul 16 1996 README -r--r--r-- 1 0 1 35 Jul 16 1996 README
lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
drwxrwxrwx 2 98 98 512 May 29 16:04 download.html drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
</datacheck> </datacheck>
</reply> </reply>

View File

@ -1,19 +1,21 @@
# #
# Server-side # Server-side
<reply> <reply>
<data> # When doing LIST, we get the default list output hard-coded in the test
total 20 # FTP server
drwxr-xr-x 8 98 98 512 Oct 22 13:06 . <datacheck>
drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. total 20
drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
-r--r--r-- 1 0 1 35 Jul 16 1996 README drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev -r--r--r-- 1 0 1 35 Jul 16 1996 README
drwxrwxrwx 2 98 98 512 May 29 16:04 download.html lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
</data> drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
</datacheck>
<servercmd> <servercmd>
SLOWDOWN SLOWDOWN
</servercmd> </servercmd>

View File

@ -1,18 +1,20 @@
# Server-side # Server-side
<reply> <reply>
<data> # When doing LIST, we get the default list output hard-coded in the test
total 20 # FTP server
drwxr-xr-x 8 98 98 512 Oct 22 13:06 . <datacheck>
drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. total 20
drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
-r--r--r-- 1 0 1 35 Jul 16 1996 README drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev -r--r--r-- 1 0 1 35 Jul 16 1996 README
drwxrwxrwx 2 98 98 512 May 29 16:04 download.html lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
</data> drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
</datacheck>
<servercmd> <servercmd>
SLOWDOWN SLOWDOWN
</servercmd> </servercmd>

View File

@ -7,19 +7,21 @@ EPSV
# #
# Server-side # Server-side
<reply> <reply>
<data> # When doing LIST, we get the default list output hard-coded in the test
total 20 # FTP server
drwxr-xr-x 8 98 98 512 Oct 22 13:06 . <datacheck>
drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. total 20
drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
-r--r--r-- 1 0 1 35 Jul 16 1996 README drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev -r--r--r-- 1 0 1 35 Jul 16 1996 README
drwxrwxrwx 2 98 98 512 May 29 16:04 download.html lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
</data> drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
</datacheck>
</reply> </reply>
# #

View File

@ -7,19 +7,21 @@ EPRT
# #
# Server-side # Server-side
<reply> <reply>
<data> # When doing LIST, we get the default list output hard-coded in the test
total 20 # FTP server
drwxr-xr-x 8 98 98 512 Oct 22 13:06 . <datacheck>
drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. total 20
drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
-r--r--r-- 1 0 1 35 Jul 16 1996 README drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev -r--r--r-- 1 0 1 35 Jul 16 1996 README
drwxrwxrwx 2 98 98 512 May 29 16:04 download.html lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
</data> drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
</datacheck>
</reply> </reply>
# #

View File

@ -8,19 +8,21 @@ EPSV
# #
# Server-side # Server-side
<reply> <reply>
<data> # When doing LIST, we get the default list output hard-coded in the test
total 20 # FTP server
drwxr-xr-x 8 98 98 512 Oct 22 13:06 . <datacheck>
drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. total 20
drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
-r--r--r-- 1 0 1 35 Jul 16 1996 README drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev -r--r--r-- 1 0 1 35 Jul 16 1996 README
drwxrwxrwx 2 98 98 512 May 29 16:04 download.html lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
</data> drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
</datacheck>
</reply> </reply>
# #

View File

@ -8,19 +8,21 @@ EPRT
# #
# Server-side # Server-side
<reply> <reply>
<data> # When doing LIST, we get the default list output hard-coded in the test
total 20 # FTP server
drwxr-xr-x 8 98 98 512 Oct 22 13:06 . <datacheck>
drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. total 20
drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
-r--r--r-- 1 0 1 35 Jul 16 1996 README drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev -r--r--r-- 1 0 1 35 Jul 16 1996 README
drwxrwxrwx 2 98 98 512 May 29 16:04 download.html lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
</data> drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
</datacheck>
</reply> </reply>
# #

View File

@ -8,19 +8,21 @@ CURLOPT_PORT
# #
# Server-side # Server-side
<reply> <reply>
<data> # When doing LIST, we get the default list output hard-coded in the test
total 20 # FTP server
drwxr-xr-x 8 98 98 512 Oct 22 13:06 . <datacheck>
drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. total 20
drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
-r--r--r-- 1 0 1 35 Jul 16 1996 README drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev -r--r--r-- 1 0 1 35 Jul 16 1996 README
drwxrwxrwx 2 98 98 512 May 29 16:04 download.html lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
</data> drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
</datacheck>
</reply> </reply>
# #