1*6236dae4SAndroid Build Coastguard Worker #ifndef HEADER_CURL_TOOL_SETOPT_H 2*6236dae4SAndroid Build Coastguard Worker #define HEADER_CURL_TOOL_SETOPT_H 3*6236dae4SAndroid Build Coastguard Worker /*************************************************************************** 4*6236dae4SAndroid Build Coastguard Worker * _ _ ____ _ 5*6236dae4SAndroid Build Coastguard Worker * Project ___| | | | _ \| | 6*6236dae4SAndroid Build Coastguard Worker * / __| | | | |_) | | 7*6236dae4SAndroid Build Coastguard Worker * | (__| |_| | _ <| |___ 8*6236dae4SAndroid Build Coastguard Worker * \___|\___/|_| \_\_____| 9*6236dae4SAndroid Build Coastguard Worker * 10*6236dae4SAndroid Build Coastguard Worker * Copyright (C) Daniel Stenberg, <[email protected]>, et al. 11*6236dae4SAndroid Build Coastguard Worker * 12*6236dae4SAndroid Build Coastguard Worker * This software is licensed as described in the file COPYING, which 13*6236dae4SAndroid Build Coastguard Worker * you should have received as part of this distribution. The terms 14*6236dae4SAndroid Build Coastguard Worker * are also available at https://curl.se/docs/copyright.html. 15*6236dae4SAndroid Build Coastguard Worker * 16*6236dae4SAndroid Build Coastguard Worker * You may opt to use, copy, modify, merge, publish, distribute and/or sell 17*6236dae4SAndroid Build Coastguard Worker * copies of the Software, and permit persons to whom the Software is 18*6236dae4SAndroid Build Coastguard Worker * furnished to do so, under the terms of the COPYING file. 19*6236dae4SAndroid Build Coastguard Worker * 20*6236dae4SAndroid Build Coastguard Worker * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 21*6236dae4SAndroid Build Coastguard Worker * KIND, either express or implied. 22*6236dae4SAndroid Build Coastguard Worker * 23*6236dae4SAndroid Build Coastguard Worker * SPDX-License-Identifier: curl 24*6236dae4SAndroid Build Coastguard Worker * 25*6236dae4SAndroid Build Coastguard Worker ***************************************************************************/ 26*6236dae4SAndroid Build Coastguard Worker #include "tool_setup.h" 27*6236dae4SAndroid Build Coastguard Worker 28*6236dae4SAndroid Build Coastguard Worker #include "tool_formparse.h" 29*6236dae4SAndroid Build Coastguard Worker 30*6236dae4SAndroid Build Coastguard Worker /* 31*6236dae4SAndroid Build Coastguard Worker * Macros used in operate() 32*6236dae4SAndroid Build Coastguard Worker */ 33*6236dae4SAndroid Build Coastguard Worker 34*6236dae4SAndroid Build Coastguard Worker #define SETOPT_CHECK(v,opt) do { \ 35*6236dae4SAndroid Build Coastguard Worker result = (v); \ 36*6236dae4SAndroid Build Coastguard Worker } while(0) 37*6236dae4SAndroid Build Coastguard Worker 38*6236dae4SAndroid Build Coastguard Worker #ifndef CURL_DISABLE_LIBCURL_OPTION 39*6236dae4SAndroid Build Coastguard Worker 40*6236dae4SAndroid Build Coastguard Worker /* Associate symbolic names with option values */ 41*6236dae4SAndroid Build Coastguard Worker struct NameValue { 42*6236dae4SAndroid Build Coastguard Worker const char *name; 43*6236dae4SAndroid Build Coastguard Worker long value; 44*6236dae4SAndroid Build Coastguard Worker }; 45*6236dae4SAndroid Build Coastguard Worker 46*6236dae4SAndroid Build Coastguard Worker struct NameValueUnsigned { 47*6236dae4SAndroid Build Coastguard Worker const char *name; 48*6236dae4SAndroid Build Coastguard Worker unsigned long value; 49*6236dae4SAndroid Build Coastguard Worker }; 50*6236dae4SAndroid Build Coastguard Worker 51*6236dae4SAndroid Build Coastguard Worker extern const struct NameValue setopt_nv_CURLPROXY[]; 52*6236dae4SAndroid Build Coastguard Worker extern const struct NameValue setopt_nv_CURL_SOCKS_PROXY[]; 53*6236dae4SAndroid Build Coastguard Worker extern const struct NameValue setopt_nv_CURL_HTTP_VERSION[]; 54*6236dae4SAndroid Build Coastguard Worker extern const struct NameValue setopt_nv_CURL_SSLVERSION[]; 55*6236dae4SAndroid Build Coastguard Worker extern const struct NameValue setopt_nv_CURL_SSLVERSION_MAX[]; 56*6236dae4SAndroid Build Coastguard Worker extern const struct NameValue setopt_nv_CURL_TIMECOND[]; 57*6236dae4SAndroid Build Coastguard Worker extern const struct NameValue setopt_nv_CURLFTPSSL_CCC[]; 58*6236dae4SAndroid Build Coastguard Worker extern const struct NameValue setopt_nv_CURLUSESSL[]; 59*6236dae4SAndroid Build Coastguard Worker extern const struct NameValueUnsigned setopt_nv_CURLSSLOPT[]; 60*6236dae4SAndroid Build Coastguard Worker extern const struct NameValue setopt_nv_CURL_NETRC[]; 61*6236dae4SAndroid Build Coastguard Worker extern const struct NameValueUnsigned setopt_nv_CURLAUTH[]; 62*6236dae4SAndroid Build Coastguard Worker extern const struct NameValueUnsigned setopt_nv_CURLHSTS[]; 63*6236dae4SAndroid Build Coastguard Worker 64*6236dae4SAndroid Build Coastguard Worker /* Map options to NameValue sets */ 65*6236dae4SAndroid Build Coastguard Worker #define setopt_nv_CURLOPT_HSTS_CTRL setopt_nv_CURLHSTS 66*6236dae4SAndroid Build Coastguard Worker #define setopt_nv_CURLOPT_HTTP_VERSION setopt_nv_CURL_HTTP_VERSION 67*6236dae4SAndroid Build Coastguard Worker #define setopt_nv_CURLOPT_HTTPAUTH setopt_nv_CURLAUTH 68*6236dae4SAndroid Build Coastguard Worker #define setopt_nv_CURLOPT_SSLVERSION setopt_nv_CURL_SSLVERSION 69*6236dae4SAndroid Build Coastguard Worker #define setopt_nv_CURLOPT_PROXY_SSLVERSION setopt_nv_CURL_SSLVERSION 70*6236dae4SAndroid Build Coastguard Worker #define setopt_nv_CURLOPT_TIMECONDITION setopt_nv_CURL_TIMECOND 71*6236dae4SAndroid Build Coastguard Worker #define setopt_nv_CURLOPT_FTP_SSL_CCC setopt_nv_CURLFTPSSL_CCC 72*6236dae4SAndroid Build Coastguard Worker #define setopt_nv_CURLOPT_USE_SSL setopt_nv_CURLUSESSL 73*6236dae4SAndroid Build Coastguard Worker #define setopt_nv_CURLOPT_SSL_OPTIONS setopt_nv_CURLSSLOPT 74*6236dae4SAndroid Build Coastguard Worker #define setopt_nv_CURLOPT_PROXY_SSL_OPTIONS setopt_nv_CURLSSLOPT 75*6236dae4SAndroid Build Coastguard Worker #define setopt_nv_CURLOPT_NETRC setopt_nv_CURL_NETRC 76*6236dae4SAndroid Build Coastguard Worker #define setopt_nv_CURLOPT_PROXYTYPE setopt_nv_CURLPROXY 77*6236dae4SAndroid Build Coastguard Worker #define setopt_nv_CURLOPT_PROXYAUTH setopt_nv_CURLAUTH 78*6236dae4SAndroid Build Coastguard Worker #define setopt_nv_CURLOPT_SOCKS5_AUTH setopt_nv_CURLAUTH 79*6236dae4SAndroid Build Coastguard Worker 80*6236dae4SAndroid Build Coastguard Worker /* Intercept setopt calls for --libcurl */ 81*6236dae4SAndroid Build Coastguard Worker 82*6236dae4SAndroid Build Coastguard Worker CURLcode tool_setopt_enum(CURL *curl, struct GlobalConfig *config, 83*6236dae4SAndroid Build Coastguard Worker const char *name, CURLoption tag, 84*6236dae4SAndroid Build Coastguard Worker const struct NameValue *nv, long lval); 85*6236dae4SAndroid Build Coastguard Worker CURLcode tool_setopt_SSLVERSION(CURL *curl, struct GlobalConfig *config, 86*6236dae4SAndroid Build Coastguard Worker const char *name, CURLoption tag, 87*6236dae4SAndroid Build Coastguard Worker long lval); 88*6236dae4SAndroid Build Coastguard Worker CURLcode tool_setopt_flags(CURL *curl, struct GlobalConfig *config, 89*6236dae4SAndroid Build Coastguard Worker const char *name, CURLoption tag, 90*6236dae4SAndroid Build Coastguard Worker const struct NameValue *nv, long lval); 91*6236dae4SAndroid Build Coastguard Worker CURLcode tool_setopt_bitmask(CURL *curl, struct GlobalConfig *config, 92*6236dae4SAndroid Build Coastguard Worker const char *name, CURLoption tag, 93*6236dae4SAndroid Build Coastguard Worker const struct NameValueUnsigned *nv, long lval); 94*6236dae4SAndroid Build Coastguard Worker CURLcode tool_setopt_mimepost(CURL *curl, struct GlobalConfig *config, 95*6236dae4SAndroid Build Coastguard Worker const char *name, CURLoption tag, 96*6236dae4SAndroid Build Coastguard Worker curl_mime *mimepost); 97*6236dae4SAndroid Build Coastguard Worker CURLcode tool_setopt_slist(CURL *curl, struct GlobalConfig *config, 98*6236dae4SAndroid Build Coastguard Worker const char *name, CURLoption tag, 99*6236dae4SAndroid Build Coastguard Worker struct curl_slist *list); 100*6236dae4SAndroid Build Coastguard Worker CURLcode tool_setopt(CURL *curl, bool str, struct GlobalConfig *global, 101*6236dae4SAndroid Build Coastguard Worker struct OperationConfig *config, 102*6236dae4SAndroid Build Coastguard Worker const char *name, CURLoption tag, ...); 103*6236dae4SAndroid Build Coastguard Worker 104*6236dae4SAndroid Build Coastguard Worker #define my_setopt(x,y,z) \ 105*6236dae4SAndroid Build Coastguard Worker SETOPT_CHECK(tool_setopt(x, FALSE, global, config, #y, y, z), y) 106*6236dae4SAndroid Build Coastguard Worker 107*6236dae4SAndroid Build Coastguard Worker #define my_setopt_str(x,y,z) \ 108*6236dae4SAndroid Build Coastguard Worker SETOPT_CHECK(tool_setopt(x, TRUE, global, config, #y, y, z), y) 109*6236dae4SAndroid Build Coastguard Worker 110*6236dae4SAndroid Build Coastguard Worker #define my_setopt_enum(x,y,z) \ 111*6236dae4SAndroid Build Coastguard Worker SETOPT_CHECK(tool_setopt_enum(x, global, #y, y, setopt_nv_ ## y, z), y) 112*6236dae4SAndroid Build Coastguard Worker 113*6236dae4SAndroid Build Coastguard Worker #define my_setopt_SSLVERSION(x,y,z) \ 114*6236dae4SAndroid Build Coastguard Worker SETOPT_CHECK(tool_setopt_SSLVERSION(x, global, #y, y, z), y) 115*6236dae4SAndroid Build Coastguard Worker 116*6236dae4SAndroid Build Coastguard Worker #define my_setopt_bitmask(x,y,z) \ 117*6236dae4SAndroid Build Coastguard Worker SETOPT_CHECK(tool_setopt_bitmask(x, global, #y, y, setopt_nv_ ## y, z), y) 118*6236dae4SAndroid Build Coastguard Worker 119*6236dae4SAndroid Build Coastguard Worker #define my_setopt_mimepost(x,y,z) \ 120*6236dae4SAndroid Build Coastguard Worker SETOPT_CHECK(tool_setopt_mimepost(x, global, #y, y, z), y) 121*6236dae4SAndroid Build Coastguard Worker 122*6236dae4SAndroid Build Coastguard Worker #define my_setopt_slist(x,y,z) \ 123*6236dae4SAndroid Build Coastguard Worker SETOPT_CHECK(tool_setopt_slist(x, global, #y, y, z), y) 124*6236dae4SAndroid Build Coastguard Worker 125*6236dae4SAndroid Build Coastguard Worker #define res_setopt(x,y,z) tool_setopt(x, FALSE, global, config, #y, y, z) 126*6236dae4SAndroid Build Coastguard Worker 127*6236dae4SAndroid Build Coastguard Worker #define res_setopt_str(x,y,z) tool_setopt(x, TRUE, global, config, #y, y, z) 128*6236dae4SAndroid Build Coastguard Worker 129*6236dae4SAndroid Build Coastguard Worker #else /* CURL_DISABLE_LIBCURL_OPTION */ 130*6236dae4SAndroid Build Coastguard Worker 131*6236dae4SAndroid Build Coastguard Worker /* No --libcurl, so pass options directly to library */ 132*6236dae4SAndroid Build Coastguard Worker 133*6236dae4SAndroid Build Coastguard Worker #define my_setopt(x,y,z) \ 134*6236dae4SAndroid Build Coastguard Worker SETOPT_CHECK(curl_easy_setopt(x, y, z), y) 135*6236dae4SAndroid Build Coastguard Worker 136*6236dae4SAndroid Build Coastguard Worker #define my_setopt_str(x,y,z) \ 137*6236dae4SAndroid Build Coastguard Worker SETOPT_CHECK(curl_easy_setopt(x, y, z), y) 138*6236dae4SAndroid Build Coastguard Worker 139*6236dae4SAndroid Build Coastguard Worker #define my_setopt_enum(x,y,z) \ 140*6236dae4SAndroid Build Coastguard Worker SETOPT_CHECK(curl_easy_setopt(x, y, z), y) 141*6236dae4SAndroid Build Coastguard Worker 142*6236dae4SAndroid Build Coastguard Worker #define my_setopt_SSLVERSION(x,y,z) \ 143*6236dae4SAndroid Build Coastguard Worker SETOPT_CHECK(curl_easy_setopt(x, y, z), y) 144*6236dae4SAndroid Build Coastguard Worker 145*6236dae4SAndroid Build Coastguard Worker #define my_setopt_bitmask(x,y,z) \ 146*6236dae4SAndroid Build Coastguard Worker SETOPT_CHECK(curl_easy_setopt(x, y, z), y) 147*6236dae4SAndroid Build Coastguard Worker 148*6236dae4SAndroid Build Coastguard Worker #define my_setopt_mimepost(x,y,z) \ 149*6236dae4SAndroid Build Coastguard Worker SETOPT_CHECK(curl_easy_setopt(x, y, z), y) 150*6236dae4SAndroid Build Coastguard Worker 151*6236dae4SAndroid Build Coastguard Worker #define my_setopt_slist(x,y,z) \ 152*6236dae4SAndroid Build Coastguard Worker SETOPT_CHECK(curl_easy_setopt(x, y, z), y) 153*6236dae4SAndroid Build Coastguard Worker 154*6236dae4SAndroid Build Coastguard Worker #define res_setopt(x,y,z) curl_easy_setopt(x,y,z) 155*6236dae4SAndroid Build Coastguard Worker 156*6236dae4SAndroid Build Coastguard Worker #define res_setopt_str(x,y,z) curl_easy_setopt(x,y,z) 157*6236dae4SAndroid Build Coastguard Worker 158*6236dae4SAndroid Build Coastguard Worker #endif /* CURL_DISABLE_LIBCURL_OPTION */ 159*6236dae4SAndroid Build Coastguard Worker 160*6236dae4SAndroid Build Coastguard Worker #endif /* HEADER_CURL_TOOL_SETOPT_H */ 161