mirror of
https://github.com/curl/curl.git
synced 2026-08-04 14:56:19 +03:00
parent
1753de9d7a
commit
0417d323c9
52 changed files with 490 additions and 543 deletions
|
|
@ -49,12 +49,12 @@ struct httpmap {
|
|||
};
|
||||
|
||||
static const struct httpmap http_version[] = {
|
||||
{ "0", CURL_HTTP_VERSION_NONE},
|
||||
{ "1", CURL_HTTP_VERSION_1_0},
|
||||
{ "1.1", CURL_HTTP_VERSION_1_1},
|
||||
{ "2", CURL_HTTP_VERSION_2},
|
||||
{ "3", CURL_HTTP_VERSION_3},
|
||||
{ NULL, 0} /* end of list */
|
||||
{ "0", CURL_HTTP_VERSION_NONE },
|
||||
{ "1", CURL_HTTP_VERSION_1_0 },
|
||||
{ "1.1", CURL_HTTP_VERSION_1_1 },
|
||||
{ "2", CURL_HTTP_VERSION_2 },
|
||||
{ "3", CURL_HTTP_VERSION_3 },
|
||||
{ NULL, 0 } /* end of list */
|
||||
};
|
||||
|
||||
/* The designated write function should be the same as the CURLINFO return type
|
||||
|
|
@ -68,87 +68,90 @@ static const struct httpmap http_version[] = {
|
|||
Variable names MUST be in alphabetical order.
|
||||
*/
|
||||
static const struct writeoutvar variables[] = {
|
||||
{"certs", VAR_CERT, CURLINFO_NONE, writeString},
|
||||
{"conn_id", VAR_CONN_ID, CURLINFO_CONN_ID, writeOffset},
|
||||
{"content_type", VAR_CONTENT_TYPE, CURLINFO_CONTENT_TYPE, writeString},
|
||||
{"errormsg", VAR_ERRORMSG, CURLINFO_NONE, writeString},
|
||||
{"exitcode", VAR_EXITCODE, CURLINFO_NONE, writeLong},
|
||||
{"filename_effective", VAR_EFFECTIVE_FILENAME, CURLINFO_NONE, writeString},
|
||||
{"ftp_entry_path", VAR_FTP_ENTRY_PATH, CURLINFO_FTP_ENTRY_PATH, writeString},
|
||||
{"header_json", VAR_HEADER_JSON, CURLINFO_NONE, NULL},
|
||||
{"http_code", VAR_HTTP_CODE, CURLINFO_RESPONSE_CODE, writeLong},
|
||||
{"http_connect", VAR_HTTP_CODE_PROXY, CURLINFO_HTTP_CONNECTCODE, writeLong},
|
||||
{"http_version", VAR_HTTP_VERSION, CURLINFO_HTTP_VERSION, writeString},
|
||||
{"json", VAR_JSON, CURLINFO_NONE, NULL},
|
||||
{"local_ip", VAR_LOCAL_IP, CURLINFO_LOCAL_IP, writeString},
|
||||
{"local_port", VAR_LOCAL_PORT, CURLINFO_LOCAL_PORT, writeLong},
|
||||
{"method", VAR_EFFECTIVE_METHOD, CURLINFO_EFFECTIVE_METHOD, writeString},
|
||||
{"num_certs", VAR_NUM_CERTS, CURLINFO_NONE, writeLong},
|
||||
{"num_connects", VAR_NUM_CONNECTS, CURLINFO_NUM_CONNECTS, writeLong},
|
||||
{"num_headers", VAR_NUM_HEADERS, CURLINFO_NONE, writeLong},
|
||||
{"num_redirects", VAR_REDIRECT_COUNT, CURLINFO_REDIRECT_COUNT, writeLong},
|
||||
{"num_retries", VAR_NUM_RETRY, CURLINFO_NONE, writeLong},
|
||||
{"onerror", VAR_ONERROR, CURLINFO_NONE, NULL},
|
||||
{"proxy_ssl_verify_result", VAR_PROXY_SSL_VERIFY_RESULT,
|
||||
CURLINFO_PROXY_SSL_VERIFYRESULT, writeLong},
|
||||
{"proxy_used", VAR_PROXY_USED, CURLINFO_USED_PROXY, writeLong},
|
||||
{"redirect_url", VAR_REDIRECT_URL, CURLINFO_REDIRECT_URL, writeString},
|
||||
{"referer", VAR_REFERER, CURLINFO_REFERER, writeString},
|
||||
{"remote_ip", VAR_PRIMARY_IP, CURLINFO_PRIMARY_IP, writeString},
|
||||
{"remote_port", VAR_PRIMARY_PORT, CURLINFO_PRIMARY_PORT, writeLong},
|
||||
{"response_code", VAR_HTTP_CODE, CURLINFO_RESPONSE_CODE, writeLong},
|
||||
{"scheme", VAR_SCHEME, CURLINFO_SCHEME, writeString},
|
||||
{"size_download", VAR_SIZE_DOWNLOAD, CURLINFO_SIZE_DOWNLOAD_T, writeOffset},
|
||||
{"size_header", VAR_HEADER_SIZE, CURLINFO_HEADER_SIZE, writeLong},
|
||||
{"size_request", VAR_REQUEST_SIZE, CURLINFO_REQUEST_SIZE, writeLong},
|
||||
{"size_upload", VAR_SIZE_UPLOAD, CURLINFO_SIZE_UPLOAD_T, writeOffset},
|
||||
{"speed_download", VAR_SPEED_DOWNLOAD, CURLINFO_SPEED_DOWNLOAD_T,
|
||||
writeOffset},
|
||||
{"speed_upload", VAR_SPEED_UPLOAD, CURLINFO_SPEED_UPLOAD_T, writeOffset},
|
||||
{"ssl_verify_result", VAR_SSL_VERIFY_RESULT, CURLINFO_SSL_VERIFYRESULT,
|
||||
writeLong},
|
||||
{"stderr", VAR_STDERR, CURLINFO_NONE, NULL},
|
||||
{"stdout", VAR_STDOUT, CURLINFO_NONE, NULL},
|
||||
{"time_appconnect", VAR_APPCONNECT_TIME, CURLINFO_APPCONNECT_TIME_T,
|
||||
writeTime},
|
||||
{"time_connect", VAR_CONNECT_TIME, CURLINFO_CONNECT_TIME_T, writeTime},
|
||||
{"time_namelookup", VAR_NAMELOOKUP_TIME, CURLINFO_NAMELOOKUP_TIME_T,
|
||||
writeTime},
|
||||
{"time_posttransfer", VAR_POSTTRANSFER_TIME, CURLINFO_POSTTRANSFER_TIME_T,
|
||||
writeTime},
|
||||
{"time_pretransfer", VAR_PRETRANSFER_TIME, CURLINFO_PRETRANSFER_TIME_T,
|
||||
writeTime},
|
||||
{"time_queue", VAR_QUEUE_TIME, CURLINFO_QUEUE_TIME_T, writeTime},
|
||||
{"time_redirect", VAR_REDIRECT_TIME, CURLINFO_REDIRECT_TIME_T, writeTime},
|
||||
{"time_starttransfer", VAR_STARTTRANSFER_TIME, CURLINFO_STARTTRANSFER_TIME_T,
|
||||
writeTime},
|
||||
{"time_total", VAR_TOTAL_TIME, CURLINFO_TOTAL_TIME_T, writeTime},
|
||||
{"tls_earlydata", VAR_TLS_EARLYDATA_SENT, CURLINFO_EARLYDATA_SENT_T,
|
||||
writeOffset},
|
||||
{"url", VAR_INPUT_URL, CURLINFO_NONE, writeString},
|
||||
{"url.fragment", VAR_INPUT_URLFRAGMENT, CURLINFO_NONE, writeString},
|
||||
{"url.host", VAR_INPUT_URLHOST, CURLINFO_NONE, writeString},
|
||||
{"url.options", VAR_INPUT_URLOPTIONS, CURLINFO_NONE, writeString},
|
||||
{"url.password", VAR_INPUT_URLPASSWORD, CURLINFO_NONE, writeString},
|
||||
{"url.path", VAR_INPUT_URLPATH, CURLINFO_NONE, writeString},
|
||||
{"url.port", VAR_INPUT_URLPORT, CURLINFO_NONE, writeString},
|
||||
{"url.query", VAR_INPUT_URLQUERY, CURLINFO_NONE, writeString},
|
||||
{"url.scheme", VAR_INPUT_URLSCHEME, CURLINFO_NONE, writeString},
|
||||
{"url.user", VAR_INPUT_URLUSER, CURLINFO_NONE, writeString},
|
||||
{"url.zoneid", VAR_INPUT_URLZONEID, CURLINFO_NONE, writeString},
|
||||
{"url_effective", VAR_EFFECTIVE_URL, CURLINFO_EFFECTIVE_URL, writeString},
|
||||
{"urle.fragment", VAR_INPUT_URLEFRAGMENT, CURLINFO_NONE, writeString},
|
||||
{"urle.host", VAR_INPUT_URLEHOST, CURLINFO_NONE, writeString},
|
||||
{"urle.options", VAR_INPUT_URLEOPTIONS, CURLINFO_NONE, writeString},
|
||||
{"urle.password", VAR_INPUT_URLEPASSWORD, CURLINFO_NONE, writeString},
|
||||
{"urle.path", VAR_INPUT_URLEPATH, CURLINFO_NONE, writeString},
|
||||
{"urle.port", VAR_INPUT_URLEPORT, CURLINFO_NONE, writeString},
|
||||
{"urle.query", VAR_INPUT_URLEQUERY, CURLINFO_NONE, writeString},
|
||||
{"urle.scheme", VAR_INPUT_URLESCHEME, CURLINFO_NONE, writeString},
|
||||
{"urle.user", VAR_INPUT_URLEUSER, CURLINFO_NONE, writeString},
|
||||
{"urle.zoneid", VAR_INPUT_URLEZONEID, CURLINFO_NONE, writeString},
|
||||
{"urlnum", VAR_URLNUM, CURLINFO_NONE, writeOffset},
|
||||
{"xfer_id", VAR_EASY_ID, CURLINFO_XFER_ID, writeOffset}
|
||||
{ "certs", VAR_CERT, CURLINFO_NONE, writeString },
|
||||
{ "conn_id", VAR_CONN_ID, CURLINFO_CONN_ID, writeOffset },
|
||||
{ "content_type", VAR_CONTENT_TYPE, CURLINFO_CONTENT_TYPE, writeString },
|
||||
{ "errormsg", VAR_ERRORMSG, CURLINFO_NONE, writeString },
|
||||
{ "exitcode", VAR_EXITCODE, CURLINFO_NONE, writeLong },
|
||||
{ "filename_effective", VAR_EFFECTIVE_FILENAME, CURLINFO_NONE, writeString },
|
||||
{ "ftp_entry_path", VAR_FTP_ENTRY_PATH, CURLINFO_FTP_ENTRY_PATH,
|
||||
writeString },
|
||||
{ "header_json", VAR_HEADER_JSON, CURLINFO_NONE, NULL },
|
||||
{ "http_code", VAR_HTTP_CODE, CURLINFO_RESPONSE_CODE, writeLong },
|
||||
{ "http_connect", VAR_HTTP_CODE_PROXY, CURLINFO_HTTP_CONNECTCODE,
|
||||
writeLong },
|
||||
{ "http_version", VAR_HTTP_VERSION, CURLINFO_HTTP_VERSION, writeString },
|
||||
{ "json", VAR_JSON, CURLINFO_NONE, NULL },
|
||||
{ "local_ip", VAR_LOCAL_IP, CURLINFO_LOCAL_IP, writeString },
|
||||
{ "local_port", VAR_LOCAL_PORT, CURLINFO_LOCAL_PORT, writeLong },
|
||||
{ "method", VAR_EFFECTIVE_METHOD, CURLINFO_EFFECTIVE_METHOD, writeString },
|
||||
{ "num_certs", VAR_NUM_CERTS, CURLINFO_NONE, writeLong },
|
||||
{ "num_connects", VAR_NUM_CONNECTS, CURLINFO_NUM_CONNECTS, writeLong },
|
||||
{ "num_headers", VAR_NUM_HEADERS, CURLINFO_NONE, writeLong },
|
||||
{ "num_redirects", VAR_REDIRECT_COUNT, CURLINFO_REDIRECT_COUNT, writeLong },
|
||||
{ "num_retries", VAR_NUM_RETRY, CURLINFO_NONE, writeLong },
|
||||
{ "onerror", VAR_ONERROR, CURLINFO_NONE, NULL },
|
||||
{ "proxy_ssl_verify_result", VAR_PROXY_SSL_VERIFY_RESULT,
|
||||
CURLINFO_PROXY_SSL_VERIFYRESULT, writeLong },
|
||||
{ "proxy_used", VAR_PROXY_USED, CURLINFO_USED_PROXY, writeLong },
|
||||
{ "redirect_url", VAR_REDIRECT_URL, CURLINFO_REDIRECT_URL, writeString },
|
||||
{ "referer", VAR_REFERER, CURLINFO_REFERER, writeString },
|
||||
{ "remote_ip", VAR_PRIMARY_IP, CURLINFO_PRIMARY_IP, writeString },
|
||||
{ "remote_port", VAR_PRIMARY_PORT, CURLINFO_PRIMARY_PORT, writeLong },
|
||||
{ "response_code", VAR_HTTP_CODE, CURLINFO_RESPONSE_CODE, writeLong },
|
||||
{ "scheme", VAR_SCHEME, CURLINFO_SCHEME, writeString },
|
||||
{ "size_download", VAR_SIZE_DOWNLOAD, CURLINFO_SIZE_DOWNLOAD_T,
|
||||
writeOffset },
|
||||
{ "size_header", VAR_HEADER_SIZE, CURLINFO_HEADER_SIZE, writeLong },
|
||||
{ "size_request", VAR_REQUEST_SIZE, CURLINFO_REQUEST_SIZE, writeLong },
|
||||
{ "size_upload", VAR_SIZE_UPLOAD, CURLINFO_SIZE_UPLOAD_T, writeOffset },
|
||||
{ "speed_download", VAR_SPEED_DOWNLOAD, CURLINFO_SPEED_DOWNLOAD_T,
|
||||
writeOffset },
|
||||
{ "speed_upload", VAR_SPEED_UPLOAD, CURLINFO_SPEED_UPLOAD_T, writeOffset },
|
||||
{ "ssl_verify_result", VAR_SSL_VERIFY_RESULT, CURLINFO_SSL_VERIFYRESULT,
|
||||
writeLong },
|
||||
{ "stderr", VAR_STDERR, CURLINFO_NONE, NULL },
|
||||
{ "stdout", VAR_STDOUT, CURLINFO_NONE, NULL },
|
||||
{ "time_appconnect", VAR_APPCONNECT_TIME, CURLINFO_APPCONNECT_TIME_T,
|
||||
writeTime },
|
||||
{ "time_connect", VAR_CONNECT_TIME, CURLINFO_CONNECT_TIME_T, writeTime },
|
||||
{ "time_namelookup", VAR_NAMELOOKUP_TIME, CURLINFO_NAMELOOKUP_TIME_T,
|
||||
writeTime },
|
||||
{ "time_posttransfer", VAR_POSTTRANSFER_TIME, CURLINFO_POSTTRANSFER_TIME_T,
|
||||
writeTime },
|
||||
{ "time_pretransfer", VAR_PRETRANSFER_TIME, CURLINFO_PRETRANSFER_TIME_T,
|
||||
writeTime },
|
||||
{ "time_queue", VAR_QUEUE_TIME, CURLINFO_QUEUE_TIME_T, writeTime },
|
||||
{ "time_redirect", VAR_REDIRECT_TIME, CURLINFO_REDIRECT_TIME_T, writeTime },
|
||||
{ "time_starttransfer", VAR_STARTTRANSFER_TIME,
|
||||
CURLINFO_STARTTRANSFER_TIME_T, writeTime },
|
||||
{ "time_total", VAR_TOTAL_TIME, CURLINFO_TOTAL_TIME_T, writeTime },
|
||||
{ "tls_earlydata", VAR_TLS_EARLYDATA_SENT, CURLINFO_EARLYDATA_SENT_T,
|
||||
writeOffset },
|
||||
{ "url", VAR_INPUT_URL, CURLINFO_NONE, writeString },
|
||||
{ "url.fragment", VAR_INPUT_URLFRAGMENT, CURLINFO_NONE, writeString },
|
||||
{ "url.host", VAR_INPUT_URLHOST, CURLINFO_NONE, writeString },
|
||||
{ "url.options", VAR_INPUT_URLOPTIONS, CURLINFO_NONE, writeString },
|
||||
{ "url.password", VAR_INPUT_URLPASSWORD, CURLINFO_NONE, writeString },
|
||||
{ "url.path", VAR_INPUT_URLPATH, CURLINFO_NONE, writeString },
|
||||
{ "url.port", VAR_INPUT_URLPORT, CURLINFO_NONE, writeString },
|
||||
{ "url.query", VAR_INPUT_URLQUERY, CURLINFO_NONE, writeString },
|
||||
{ "url.scheme", VAR_INPUT_URLSCHEME, CURLINFO_NONE, writeString },
|
||||
{ "url.user", VAR_INPUT_URLUSER, CURLINFO_NONE, writeString },
|
||||
{ "url.zoneid", VAR_INPUT_URLZONEID, CURLINFO_NONE, writeString },
|
||||
{ "url_effective", VAR_EFFECTIVE_URL, CURLINFO_EFFECTIVE_URL, writeString },
|
||||
{ "urle.fragment", VAR_INPUT_URLEFRAGMENT, CURLINFO_NONE, writeString },
|
||||
{ "urle.host", VAR_INPUT_URLEHOST, CURLINFO_NONE, writeString },
|
||||
{ "urle.options", VAR_INPUT_URLEOPTIONS, CURLINFO_NONE, writeString },
|
||||
{ "urle.password", VAR_INPUT_URLEPASSWORD, CURLINFO_NONE, writeString },
|
||||
{ "urle.path", VAR_INPUT_URLEPATH, CURLINFO_NONE, writeString },
|
||||
{ "urle.port", VAR_INPUT_URLEPORT, CURLINFO_NONE, writeString },
|
||||
{ "urle.query", VAR_INPUT_URLEQUERY, CURLINFO_NONE, writeString },
|
||||
{ "urle.scheme", VAR_INPUT_URLESCHEME, CURLINFO_NONE, writeString },
|
||||
{ "urle.user", VAR_INPUT_URLEUSER, CURLINFO_NONE, writeString },
|
||||
{ "urle.zoneid", VAR_INPUT_URLEZONEID, CURLINFO_NONE, writeString },
|
||||
{ "urlnum", VAR_URLNUM, CURLINFO_NONE, writeOffset },
|
||||
{ "xfer_id", VAR_EASY_ID, CURLINFO_XFER_ID, writeOffset }
|
||||
};
|
||||
|
||||
static int writeTime(FILE *stream, const struct writeoutvar *wovar,
|
||||
|
|
@ -254,7 +257,7 @@ static int urlpart(struct per_transfer *per, writeoutid vid,
|
|||
}
|
||||
}
|
||||
if(!rc && curl_url_set(uh, CURLUPART_URL, url,
|
||||
CURLU_GUESS_SCHEME|CURLU_NON_SUPPORT_SCHEME))
|
||||
CURLU_GUESS_SCHEME | CURLU_NON_SUPPORT_SCHEME))
|
||||
rc = 2;
|
||||
|
||||
if(!rc && curl_url_get(uh, cpart, &part, CURLU_DEFAULT_PORT))
|
||||
|
|
@ -286,7 +289,7 @@ static int writeString(FILE *stream, const struct writeoutvar *wovar,
|
|||
const char *strinfo = NULL;
|
||||
const char *freestr = NULL;
|
||||
struct dynbuf buf;
|
||||
curlx_dyn_init(&buf, 256*1024);
|
||||
curlx_dyn_init(&buf, 256 * 1024);
|
||||
|
||||
DEBUGASSERT(wovar->writefunc == writeString);
|
||||
|
||||
|
|
@ -337,7 +340,7 @@ static int writeString(FILE *stream, const struct writeoutvar *wovar,
|
|||
len = curlx_dyn_len(&buf);
|
||||
if(len) {
|
||||
char *ptr = curlx_dyn_ptr(&buf);
|
||||
if(ptr[len -1] != '\n') {
|
||||
if(ptr[len - 1] != '\n') {
|
||||
/* add a newline to make things look better */
|
||||
if(curlx_dyn_addn(&buf, "\n", 1)) {
|
||||
error = TRUE;
|
||||
|
|
@ -527,8 +530,7 @@ static int writeOffset(FILE *stream, const struct writeoutvar *wovar,
|
|||
return 1; /* return 1 if anything was written */
|
||||
}
|
||||
|
||||
static int
|
||||
matchvar(const void *m1, const void *m2)
|
||||
static int matchvar(const void *m1, const void *m2)
|
||||
{
|
||||
const struct writeoutvar *v1 = m1;
|
||||
const struct writeoutvar *v2 = m2;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue