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:
parent
ea8476a2dc
commit
80b004a57d
@ -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;
|
||||||
|
|
||||||
|
12
lib/ftp.c
12
lib/ftp.c
@ -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. */
|
||||||
|
10
lib/url.c
10
lib/url.c
@ -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 */
|
||||||
|
|
||||||
|
@ -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 */
|
||||||
|
13
src/main.c
13
src/main.c
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user