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

Wesley Laxton's CURLOPT_PREQUOTE work

This commit is contained in:
Daniel Stenberg 2002-02-28 23:31:23 +00:00
parent ea8476a2dc
commit 80b004a57d
5 changed files with 35 additions and 6 deletions

View File

@ -494,6 +494,9 @@ typedef enum {
/* DNS cache timeout */ /* DNS cache timeout */
CINIT(DNS_CACHE_TIMEOUT, LONG, 92), CINIT(DNS_CACHE_TIMEOUT, LONG, 92),
/* send linked-list of pre-transfer QUOTE commands (Wesley Laxton)*/
CINIT(PREQUOTE, OBJECTPOINT, 93),
CURLOPT_LASTENTRY /* the last unusued */ CURLOPT_LASTENTRY /* the last unusued */
} CURLoption; } CURLoption;

View File

@ -1618,6 +1618,12 @@ CURLcode ftp_perform(struct connectdata *conn)
if(result) if(result)
return result; return result;
/* Send any PREQUOTE strings after transfer type is set? (Wesley Laxton)*/
if(data->set.prequote) {
if ((result = ftp_sendquote(conn, data->set.prequote)) != CURLE_OK)
return result;
}
if(conn->resume_from) { if(conn->resume_from) {
/* we're about to continue the uploading of a file */ /* we're about to continue the uploading of a file */
/* 1. get already existing file's size. We use the SIZE /* 1. get already existing file's size. We use the SIZE
@ -1803,6 +1809,12 @@ CURLcode ftp_perform(struct connectdata *conn)
if(result) if(result)
return result; return result;
/* Send any PREQUOTE strings after transfer type is set? (Wesley Laxton)*/
if(data->set.prequote) {
if ((result = ftp_sendquote(conn, data->set.prequote)) != CURLE_OK)
return result;
}
/* Attempt to get the size, it'll be useful in some cases: for resumed /* Attempt to get the size, it'll be useful in some cases: for resumed
downloads and when talking to servers that don't give away the size downloads and when talking to servers that don't give away the size
in the RETR response line. */ in the RETR response line. */

View File

@ -735,6 +735,12 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option, ...)
*/ */
data->set.postquote = va_arg(param, struct curl_slist *); data->set.postquote = va_arg(param, struct curl_slist *);
break; break;
case CURLOPT_PREQUOTE:
/*
* List of RAW FTP commands to use prior to RETR (Wesley Laxton)
*/
data->set.prequote = va_arg(param, struct curl_slist *);
break;
case CURLOPT_QUOTE: case CURLOPT_QUOTE:
/* /*
* List of RAW FTP commands to use before a transfer * List of RAW FTP commands to use before a transfer
@ -1983,8 +1989,8 @@ static CURLcode CreateConnection(struct SessionHandle *data,
conn = conn_temp; /* use this connection from now on */ conn = conn_temp; /* use this connection from now on */
/* we need these pointers if we speak over a proxy */ /* we need these pointers if we speak over a proxy */
conn->hostname = old_conn->gname; conn->hostname = conn->gname;
conn->name = old_conn->name; conn->name = &conn->gname[old_conn->name - old_conn->gname];
free(conn->path); /* free the previously allocated path pointer */ free(conn->path); /* free the previously allocated path pointer */

View File

@ -604,8 +604,9 @@ struct UserDefined {
char *crypto_engine; /* name of the crypto engine to use */ char *crypto_engine; /* name of the crypto engine to use */
char *cookiejar; /* dump all cookies to this file */ char *cookiejar; /* dump all cookies to this file */
bool crlf; /* convert crlf on ftp upload(?) */ bool crlf; /* convert crlf on ftp upload(?) */
struct curl_slist *quote; /* before the transfer */ struct curl_slist *quote; /* after connection is established */
struct curl_slist *postquote; /* after the transfer */ struct curl_slist *postquote; /* after the transfer */
struct curl_slist *prequote; /* before the transfer, after type (Wesley Laxton)*/
struct curl_slist *telnet_options; /* linked list of telnet options */ struct curl_slist *telnet_options; /* linked list of telnet options */
curl_TimeCond timecondition; /* kind of time/date comparison */ curl_TimeCond timecondition; /* kind of time/date comparison */
time_t timevalue; /* what time to compare with */ time_t timevalue; /* what time to compare with */

View File

@ -448,6 +448,7 @@ struct Configurable {
struct curl_slist *quote; struct curl_slist *quote;
struct curl_slist *postquote; struct curl_slist *postquote;
struct curl_slist *prequote;
long ssl_version; long ssl_version;
curl_TimeCond timecond; curl_TimeCond timecond;
@ -1376,12 +1377,18 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
break; break;
case 'Q': case 'Q':
/* QUOTE command to send to FTP server */ /* QUOTE command to send to FTP server */
if(nextarg[0] == '-') { switch(nextarg[0]) {
case '-':
/* prefixed with a dash makes it a POST TRANSFER one */ /* prefixed with a dash makes it a POST TRANSFER one */
nextarg++; nextarg++;
config->postquote = curl_slist_append(config->postquote, nextarg); config->postquote = curl_slist_append(config->postquote, nextarg);
} break;
else { case '+':
/* prefixed with a plus makes it a just-before-transfer one */
nextarg++;
config->prequote = curl_slist_append(config->prequote, nextarg);
break;
default:
config->quote = curl_slist_append(config->quote, nextarg); config->quote = curl_slist_append(config->quote, nextarg);
} }
break; break;