mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05:00
setopt: split out curl_easy_setopt() to its own file
... to make url.c smaller. Closes #1944
This commit is contained in:
parent
2e850dafa5
commit
aa7668b948
@ -5,7 +5,7 @@
|
|||||||
# | (__| |_| | _ <| |___
|
# | (__| |_| | _ <| |___
|
||||||
# \___|\___/|_| \_\_____|
|
# \___|\___/|_| \_\_____|
|
||||||
#
|
#
|
||||||
# Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
# Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
#
|
#
|
||||||
# This software is licensed as described in the file COPYING, which
|
# This software is licensed as described in the file COPYING, which
|
||||||
# you should have received as part of this distribution. The terms
|
# you should have received as part of this distribution. The terms
|
||||||
@ -54,7 +54,7 @@ LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c \
|
|||||||
http_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_sasl.c rand.c \
|
http_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_sasl.c rand.c \
|
||||||
curl_multibyte.c hostcheck.c conncache.c pipeline.c dotdot.c \
|
curl_multibyte.c hostcheck.c conncache.c pipeline.c dotdot.c \
|
||||||
x509asn1.c http2.c smb.c curl_endian.c curl_des.c system_win32.c \
|
x509asn1.c http2.c smb.c curl_endian.c curl_des.c system_win32.c \
|
||||||
mime.c sha256.c
|
mime.c sha256.c setopt.c
|
||||||
|
|
||||||
LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
|
LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
|
||||||
formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h \
|
formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h \
|
||||||
@ -73,7 +73,7 @@ LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
|
|||||||
curl_sasl.h curl_multibyte.h hostcheck.h conncache.h \
|
curl_sasl.h curl_multibyte.h hostcheck.h conncache.h \
|
||||||
curl_setup_once.h multihandle.h setup-vms.h pipeline.h dotdot.h \
|
curl_setup_once.h multihandle.h setup-vms.h pipeline.h dotdot.h \
|
||||||
x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h \
|
x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h \
|
||||||
curl_printf.h system_win32.h rand.h mime.h curl_sha256.h
|
curl_printf.h system_win32.h rand.h mime.h curl_sha256.h setopt.h
|
||||||
|
|
||||||
LIB_RCFILES = libcurl.rc
|
LIB_RCFILES = libcurl.rc
|
||||||
|
|
||||||
|
60
lib/easy.c
60
lib/easy.c
@ -71,6 +71,8 @@
|
|||||||
#include "multiif.h"
|
#include "multiif.h"
|
||||||
#include "sigpipe.h"
|
#include "sigpipe.h"
|
||||||
#include "ssh.h"
|
#include "ssh.h"
|
||||||
|
#include "setopt.h"
|
||||||
|
|
||||||
/* The last 3 #include files should be in this order */
|
/* The last 3 #include files should be in this order */
|
||||||
#include "curl_printf.h"
|
#include "curl_printf.h"
|
||||||
#include "curl_memory.h"
|
#include "curl_memory.h"
|
||||||
@ -364,28 +366,6 @@ struct Curl_easy *curl_easy_init(void)
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* curl_easy_setopt() is the external interface for setting options on an
|
|
||||||
* easy handle.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#undef curl_easy_setopt
|
|
||||||
CURLcode curl_easy_setopt(struct Curl_easy *data, CURLoption tag, ...)
|
|
||||||
{
|
|
||||||
va_list arg;
|
|
||||||
CURLcode result;
|
|
||||||
|
|
||||||
if(!data)
|
|
||||||
return CURLE_BAD_FUNCTION_ARGUMENT;
|
|
||||||
|
|
||||||
va_start(arg, tag);
|
|
||||||
|
|
||||||
result = Curl_setopt(data, tag, arg);
|
|
||||||
|
|
||||||
va_end(arg);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CURLDEBUG
|
#ifdef CURLDEBUG
|
||||||
|
|
||||||
struct socketmonitor {
|
struct socketmonitor {
|
||||||
@ -860,6 +840,40 @@ CURLcode curl_easy_getinfo(struct Curl_easy *data, CURLINFO info, ...)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static CURLcode dupset(struct Curl_easy *dst, struct Curl_easy *src)
|
||||||
|
{
|
||||||
|
CURLcode result = CURLE_OK;
|
||||||
|
enum dupstring i;
|
||||||
|
|
||||||
|
/* Copy src->set into dst->set first, then deal with the strings
|
||||||
|
afterwards */
|
||||||
|
dst->set = src->set;
|
||||||
|
|
||||||
|
/* clear all string pointers first */
|
||||||
|
memset(dst->set.str, 0, STRING_LAST * sizeof(char *));
|
||||||
|
|
||||||
|
/* duplicate all strings */
|
||||||
|
for(i = (enum dupstring)0; i< STRING_LASTZEROTERMINATED; i++) {
|
||||||
|
result = Curl_setstropt(&dst->set.str[i], src->set.str[i]);
|
||||||
|
if(result)
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* duplicate memory areas pointed to */
|
||||||
|
i = STRING_COPYPOSTFIELDS;
|
||||||
|
if(src->set.postfieldsize && src->set.str[i]) {
|
||||||
|
/* postfieldsize is curl_off_t, Curl_memdup() takes a size_t ... */
|
||||||
|
dst->set.str[i] = Curl_memdup(src->set.str[i],
|
||||||
|
curlx_sotouz(src->set.postfieldsize));
|
||||||
|
if(!dst->set.str[i])
|
||||||
|
return CURLE_OUT_OF_MEMORY;
|
||||||
|
/* point to the new copy */
|
||||||
|
dst->set.postfields = dst->set.str[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
return CURLE_OK;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* curl_easy_duphandle() is an external interface to allow duplication of a
|
* curl_easy_duphandle() is an external interface to allow duplication of a
|
||||||
* given input easy handle. The returned handle will be a new working handle
|
* given input easy handle. The returned handle will be a new working handle
|
||||||
@ -887,7 +901,7 @@ struct Curl_easy *curl_easy_duphandle(struct Curl_easy *data)
|
|||||||
outcurl->state.headersize = HEADERSIZE;
|
outcurl->state.headersize = HEADERSIZE;
|
||||||
|
|
||||||
/* copy all userdefined values */
|
/* copy all userdefined values */
|
||||||
if(Curl_dupset(outcurl, data))
|
if(dupset(outcurl, data))
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
/* the connection cache is setup on demand */
|
/* the connection cache is setup on demand */
|
||||||
|
2549
lib/setopt.c
Normal file
2549
lib/setopt.c
Normal file
File diff suppressed because it is too large
Load Diff
27
lib/setopt.h
Normal file
27
lib/setopt.h
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
#ifndef HEADER_CURL_SETOPT_H
|
||||||
|
#define HEADER_CURL_SETOPT_H
|
||||||
|
/***************************************************************************
|
||||||
|
* _ _ ____ _
|
||||||
|
* Project ___| | | | _ \| |
|
||||||
|
* / __| | | | |_) | |
|
||||||
|
* | (__| |_| | _ <| |___
|
||||||
|
* \___|\___/|_| \_\_____|
|
||||||
|
*
|
||||||
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
|
*
|
||||||
|
* This software is licensed as described in the file COPYING, which
|
||||||
|
* you should have received as part of this distribution. The terms
|
||||||
|
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||||
|
*
|
||||||
|
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||||
|
* copies of the Software, and permit persons to whom the Software is
|
||||||
|
* furnished to do so, under the terms of the COPYING file.
|
||||||
|
*
|
||||||
|
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||||
|
* KIND, either express or implied.
|
||||||
|
*
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
CURLcode Curl_setstropt(char **charp, const char *s);
|
||||||
|
|
||||||
|
#endif /* HEADER_CURL_SETOPT_H */
|
@ -23,6 +23,10 @@
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
#include "curl_setup.h"
|
#include "curl_setup.h"
|
||||||
|
|
||||||
|
#define READBUFFER_SIZE CURL_MAX_WRITE_SIZE
|
||||||
|
#define READBUFFER_MAX CURL_MAX_READ_SIZE
|
||||||
|
#define READBUFFER_MIN 1024
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Prototypes for library-wide functions provided by url.c
|
* Prototypes for library-wide functions provided by url.c
|
||||||
*/
|
*/
|
||||||
@ -51,7 +55,9 @@ int Curl_protocol_getsock(struct connectdata *conn,
|
|||||||
int Curl_doing_getsock(struct connectdata *conn,
|
int Curl_doing_getsock(struct connectdata *conn,
|
||||||
curl_socket_t *socks,
|
curl_socket_t *socks,
|
||||||
int numsocks);
|
int numsocks);
|
||||||
|
CURLcode Curl_parse_login_details(const char *login, const size_t len,
|
||||||
|
char **userptr, char **passwdptr,
|
||||||
|
char **optionsptr);
|
||||||
bool Curl_isPipeliningEnabled(const struct Curl_easy *handle);
|
bool Curl_isPipeliningEnabled(const struct Curl_easy *handle);
|
||||||
CURLcode Curl_addHandleToPipeline(struct Curl_easy *handle,
|
CURLcode Curl_addHandleToPipeline(struct Curl_easy *handle,
|
||||||
struct curl_llist *pipeline);
|
struct curl_llist *pipeline);
|
||||||
|
Loading…
Reference in New Issue
Block a user