24 #ifndef CURL_DISABLE_LIBCURL_OPTION 26 #define ENABLE_CURLX_PRINTF 44 #define NV1(e, v) {#e, (v)} 45 #define NVEND {NULL, 0} 168 NV1(CURLOPT_SSL_VERIFYPEER, 1),
169 NV1(CURLOPT_SSL_VERIFYHOST, 1),
170 NV1(CURLOPT_SSL_ENABLE_NPN, 1),
171 NV1(CURLOPT_SSL_ENABLE_ALPN, 1),
172 NV1(CURLOPT_TCP_NODELAY, 1),
173 NV1(CURLOPT_PROXY_SSL_VERIFYPEER, 1),
174 NV1(CURLOPT_PROXY_SSL_VERIFYHOST, 1),
175 NV1(CURLOPT_SOCKS5_AUTH, 1),
180 #define ADD(args) do { \ 181 ret = easysrc_add args; \ 185 #define ADDF(args) do { \ 186 ret = easysrc_addf args; \ 191 #define DECL0(s) ADD((&easysrc_decl, s)) 192 #define DECL1(f,a) ADDF((&easysrc_decl, f,a)) 194 #define DATA0(s) ADD((&easysrc_data, s)) 195 #define DATA1(f,a) ADDF((&easysrc_data, f,a)) 196 #define DATA2(f,a,b) ADDF((&easysrc_data, f,a,b)) 197 #define DATA3(f,a,b,c) ADDF((&easysrc_data, f,a,b,c)) 199 #define CODE0(s) ADD((&easysrc_code, s)) 200 #define CODE1(f,a) ADDF((&easysrc_code, f,a)) 201 #define CODE2(f,a,b) ADDF((&easysrc_code, f,a,b)) 202 #define CODE3(f,a,b,c) ADDF((&easysrc_code, f,a,b,c)) 204 #define CLEAN0(s) ADD((&easysrc_clean, s)) 205 #define CLEAN1(f,a) ADDF((&easysrc_clean, f,a)) 207 #define REM0(s) ADD((&easysrc_toohard, s)) 208 #define REM1(f,a) ADDF((&easysrc_toohard, f,a)) 209 #define REM2(f,a,b) ADDF((&easysrc_toohard, f,a,b)) 223 if(len > (~(
size_t) 0) / 4)
227 escaped =
malloc(4 * len + 1);
232 for(s = str; (c = *s) !=
'\0'; s++) {
253 else if(! isprint(c)) {
254 snprintf(e, 5,
"\\%03o", (
unsigned)c);
276 if(config->
libcurl && !skip && !ret) {
279 for(nv = nvlist; nv->
name; nv++) {
280 if(nv->
value == lval)
break;
286 CODE2(
"curl_easy_setopt(hnd, %s, %ldL);", name, lval);
289 CODE2(
"curl_easy_setopt(hnd, %s, (long)%s);", name, nv->
name);
309 if(config->
libcurl && !skip && !ret) {
314 snprintf(preamble,
sizeof(preamble),
315 "curl_easy_setopt(hnd, %s, ", name);
316 for(nv = nvlist; nv->
name; nv++) {
317 if((nv->
value & ~ rest) == 0) {
320 CODE3(
"%s(long)%s%s",
321 preamble, nv->
name, rest ?
" |" :
");");
325 snprintf(preamble,
sizeof(preamble),
"%*s", strlen(preamble),
"");
332 CODE2(
"%s%ldL);", preamble, rest);
352 if(config->
libcurl && !skip && !ret) {
355 unsigned long rest = (
unsigned long)lval;
357 snprintf(preamble,
sizeof(preamble),
358 "curl_easy_setopt(hnd, %s, ", name);
359 for(nv = nvlist; nv->
name; nv++) {
360 if((nv->
value & ~ rest) == 0) {
363 CODE3(
"%s(long)%s%s",
364 preamble, nv->
name, rest ?
" |" :
");");
368 snprintf(preamble,
sizeof(preamble),
"%*s", strlen(preamble),
"");
375 CODE2(
"%s%luUL);", preamble, rest);
386 char *escaped = NULL;
391 DECL1(
"struct curl_slist *slist%d;", *slistno);
392 DATA1(
"slist%d = NULL;", *slistno);
393 CLEAN1(
"curl_slist_free_all(slist%d);", *slistno);
394 CLEAN1(
"slist%d = NULL;", *slistno);
395 for(; slist; slist = slist->
next) {
400 DATA3(
"slist%d = curl_slist_append(slist%d, \"%s\");",
401 *slistno, *slistno, escaped);
417 char *escaped = NULL;
424 DECL1(
"curl_mime *mime%d;", *mimeno);
425 DATA1(
"mime%d = NULL;", *mimeno);
426 CODE1(
"mime%d = curl_mime_init(hnd);", *mimeno);
427 CLEAN1(
"curl_mime_free(mime%d);", *mimeno);
428 CLEAN1(
"mime%d = NULL;", *mimeno);
430 DECL1(
"curl_mimepart *part%d;", *mimeno);
432 CODE2(
"part%d = curl_mime_addpart(mime%d);", *mimeno, *mimeno);
440 CODE2(
"curl_mime_filedata(part%d, \"%s\");", *mimeno, escaped);
442 CODE1(
"curl_mime_filename(part%d, NULL);", *mimeno);
445 filename = part->
data;
446 for(cp = filename; *cp; cp++)
447 if(*cp ==
'/' || *cp ==
'\\')
457 CODE1(
"curl_mime_data_cb(part%d, -1, (curl_read_callback) fread, \\",
459 CODE0(
" (curl_seek_callback) fseek, NULL, stdin);");
462 #ifdef CURL_DOES_CONVERSIONS 471 ret = convert_from_network(data, strlen(data));
481 for(cp = data; *cp; cp++)
486 #ifdef CURL_DOES_CONVERSIONS 493 *mimeno, escaped, size);
495 CODE2(
"curl_mime_data(part%d, \"%s\", CURL_ZERO_TERMINATED);",
502 CODE2(
"curl_mime_subparts(part%d, mime%d);", *mimeno, i);
503 CODE1(
"mime%d = NULL;", i);
515 CODE2(
"curl_mime_encoder(part%d, \"%s\");", *mimeno, escaped);
523 CODE2(
"curl_mime_filename(part%d, \"%s\");", *mimeno, escaped);
531 CODE2(
"curl_mime_name(part%d, \"%s\");", *mimeno, escaped);
539 CODE2(
"curl_mime_type(part%d, \"%s\");", *mimeno, escaped);
548 CODE3(
"curl_mime_headers(part%d, slist%d, %d);",
549 *mimeno, i, ownership);
551 CODE1(
"slist%d = NULL;", i);
570 if(config->
libcurl && mimepost && !ret) {
576 CODE2(
"curl_easy_setopt(hnd, %s, mime%d);", name, i);
592 if(config->
libcurl && list && !ret) {
597 CODE2(
"curl_easy_setopt(hnd, %s, slist%d);", name, i);
611 const char *
value = NULL;
615 char *escaped = NULL;
622 long lval = va_arg(arg,
long);
625 for(nv = setopt_nv_CURLNONZERODEFAULTS; nv->
name; nv++) {
626 if(!strcmp(name, nv->
name)) {
632 snprintf(buf,
sizeof(buf),
"%ldL", lval);
640 void *pval = va_arg(arg,
void *);
645 value =
"functionpointer";
652 else if(pval && str) {
653 value = (
char *)pval;
657 value =
"objectpointer";
680 if(config->
libcurl && !skip && !ret) {
684 REM2(
"%s set to a %s", name, value);
692 CODE2(
"curl_easy_setopt(hnd, %s, \"%s\");", name, escaped);
695 CODE2(
"curl_easy_setopt(hnd, %s, %s);", name, value);
#define CURLAUTH_DIGEST_IE
#define CURLSSLOPT_NO_REVOKE
#define CURLAUTH_GSSNEGOTIATE
#define curl_easy_setopt(handle, option, value)
#define CURLOPTTYPE_FUNCTIONPOINT
memcpy(filename, filename1, strlen(filename1))
#define MIME_USERHEADERS_OWNER
#define CURLOPTTYPE_OBJECTPOINT
UNITTEST_START struct Curl_easy data
#define CURLOPTTYPE_OFF_T
CURL_TYPEOF_CURL_OFF_T curl_off_t
curl_mimepart * firstpart
#define Curl_safefree(ptr)
UNITTEST_START int * value
#define CURL_ZERO_TERMINATED
struct curl_slist * userheaders
static void skip(const char **date)
const mime_encoder * encoder
#define CURLSSLOPT_ALLOW_BEAST
#define CURL_FORMAT_CURL_OFF_T