aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/ftp.c113
1 files changed, 95 insertions, 18 deletions
diff --git a/lib/ftp.c b/lib/ftp.c
index be2cfdb3d..5b0748fff 100644
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2000, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2001, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* In order to be useful for every potential user, curl and libcurl are
* dual-licensed under the MPL and the MIT/X-derivate licenses.
@@ -99,6 +99,15 @@ static CURLcode ftp_cwd(struct connectdata *conn, char *path);
/* easy-to-use macro: */
#define FTPSENDF(x,y,z) if((result = Curl_ftpsendf(x,y,z))) return result
+/***********************************************************************
+ *
+ * AllowServerConnect()
+ *
+ * When we've issue the PORT command, we have told the server to connect
+ * to us. This function will sit and wait here until the server has
+ * connected.
+ *
+ */
static CURLcode AllowServerConnect(struct SessionHandle *data,
struct connectdata *conn,
int sock)
@@ -533,8 +542,15 @@ CURLcode Curl_ftp_connect(struct connectdata *conn)
return CURLE_OK;
}
-
-/* argument is already checked for validity */
+/***********************************************************************
+ *
+ * Curl_ftp_done()
+ *
+ * The DONE function. This does what needs to be done after a single DO has
+ * performed.
+ *
+ * Input argument is already checked for validity.
+ */
CURLcode Curl_ftp_done(struct connectdata *conn)
{
struct SessionHandle *data = conn->data;
@@ -596,6 +612,13 @@ CURLcode Curl_ftp_done(struct connectdata *conn)
return CURLE_OK;
}
+/***********************************************************************
+ *
+ * ftp_sendquote()
+ *
+ * Where a 'quote' means a list of custom commands to send to the server.
+ * The quote list is passed as an argument.
+ */
static
CURLcode ftp_sendquote(struct connectdata *conn, struct curl_slist *quote)
@@ -627,6 +650,13 @@ CURLcode ftp_sendquote(struct connectdata *conn, struct curl_slist *quote)
return CURLE_OK;
}
+/***********************************************************************
+ *
+ * ftp_cwd()
+ *
+ * Send 'CWD' to the remote server to Change Working Directory.
+ * It is the ftp version of the unix 'cd' command.
+ */
static
CURLcode ftp_cwd(struct connectdata *conn, char *path)
{
@@ -648,6 +678,12 @@ CURLcode ftp_cwd(struct connectdata *conn, char *path)
return CURLE_OK;
}
+/***********************************************************************
+ *
+ * ftp_getfiletime()
+ *
+ * Get the timestamp of the given file.
+ */
static
CURLcode ftp_getfiletime(struct connectdata *conn, char *file)
{
@@ -684,6 +720,13 @@ CURLcode ftp_getfiletime(struct connectdata *conn, char *file)
return result;
}
+/***********************************************************************
+ *
+ * ftp_transfertype()
+ *
+ * Set transfer type. We only deal with ASCII or BINARY so this function
+ * sets one of them.
+ */
static CURLcode ftp_transfertype(struct connectdata *conn,
bool ascii)
{
@@ -708,6 +751,13 @@ static CURLcode ftp_transfertype(struct connectdata *conn,
return CURLE_OK;
}
+/***********************************************************************
+ *
+ * ftp_getsize()
+ *
+ * Returns the file size (in bytes) of the given remote file.
+ */
+
static
CURLcode ftp_getsize(struct connectdata *conn, char *file,
ssize_t *size)
@@ -850,10 +900,13 @@ ftp_pasv_verbose(struct connectdata *conn,
#endif
}
-/**********
- * PORT is the ftp client's way of telling the server that *WE* open a port
- * that we listen on an awaits the server to connect to. This is the opposite
- * of PASV.
+/***********************************************************************
+ *
+ * ftp_use_port()
+ *
+ * Send the proper PORT command. PORT is the ftp client's way of telling the
+ * server that *WE* open a port that we listen on an awaits the server to
+ * connect to. This is the opposite of PASV.
*/
static
@@ -1186,10 +1239,13 @@ CURLcode ftp_use_port(struct connectdata *conn)
return CURLE_OK;
}
-/**********
- * PASV is the ftp client's way of asking the server to open a second port
- * that we can connect to (for the data transfer). This is the opposite of
- * PORT.
+/***********************************************************************
+ *
+ * ftp_use_pasv()
+ *
+ * Send the PASV command. PASV is the ftp client's way of asking the server to
+ * open a second port that we can connect to (for the data transfer). This is
+ * the opposite of PORT.
*/
static
@@ -1314,6 +1370,13 @@ CURLcode ftp_use_pasv(struct connectdata *conn)
return CURLE_OK;
}
+/***********************************************************************
+ *
+ * ftp_perform()
+ *
+ * This is the actual DO function for FTP. Get a file/directory according to
+ * the options previously setup.
+ */
static
CURLcode ftp_perform(struct connectdata *conn)
@@ -1772,9 +1835,15 @@ CURLcode ftp_perform(struct connectdata *conn)
return CURLE_OK;
}
-/* -- deal with the ftp server! -- */
-
-/* argument is already checked for validity */
+/***********************************************************************
+ *
+ * Curl_ftp()
+ *
+ * This function is registered as 'curl_do' function. It decodes the path
+ * parts etc as a wrapper to the actual DO function (ftp_perform).
+ *
+ * The input argument is already checked for validity.
+ */
CURLcode Curl_ftp(struct connectdata *conn)
{
CURLcode retcode;
@@ -1837,12 +1906,14 @@ CURLcode Curl_ftp(struct connectdata *conn)
return retcode;
}
-/*
- * Curl_ftpsendf() sends the formated string as a ftp command to a ftp server
+/***********************************************************************
+ *
+ * Curl_ftpsendf()
+ *
+ * Sends the formated string as a ftp command to a ftp server
*
* NOTE: we build the command in a fixed-length buffer, which sets length
* restrictions on the command!
- *
*/
CURLcode Curl_ftpsendf(struct connectdata *conn,
const char *fmt, ...)
@@ -1868,7 +1939,13 @@ CURLcode Curl_ftpsendf(struct connectdata *conn,
return (bytes_written==write_len)?CURLE_OK:CURLE_WRITE_ERROR;
}
-
+/***********************************************************************
+ *
+ * Curl_ftp_disconnect()
+ *
+ * Disconnect from an FTP server. Cleanup protocol-specific per-connection
+ * resources
+ */
CURLcode Curl_ftp_disconnect(struct connectdata *conn)
{
struct FTP *ftp= conn->proto.ftp;