aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c282
1 files changed, 1 insertions, 281 deletions
diff --git a/src/main.c b/src/main.c
index 532ccd301..5ef8998c3 100644
--- a/src/main.c
+++ b/src/main.c
@@ -113,6 +113,7 @@
#include "xattr.h"
#include "tool_convert.h"
#include "tool_mfiles.h"
+#include "tool_cfgable.h"
#ifdef USE_MANUAL
# include "hugehelp.h"
#endif
@@ -218,16 +219,6 @@ char **__crt0_glob_function (char *arg)
#define CURL_PROGRESS_STATS 0 /* default progress display */
#define CURL_PROGRESS_BAR 1
-typedef enum {
- HTTPREQ_UNSPEC,
- HTTPREQ_GET,
- HTTPREQ_HEAD,
- HTTPREQ_POST,
- HTTPREQ_SIMPLEPOST,
- HTTPREQ_CUSTOM,
- HTTPREQ_LAST
-} HttpReq;
-
/*
* Large file support (>2Gb) using WIN32 functions.
*/
@@ -352,192 +343,6 @@ static int ftruncate64(int fd, curl_off_t where)
#endif /* WIN32 */
-typedef enum {
- TRACE_NONE, /* no trace/verbose output at all! */
- TRACE_BIN, /* tcpdump inspired look */
- TRACE_ASCII, /* like *BIN but without the hex output */
- TRACE_PLAIN /* -v/--verbose type */
-} trace;
-
-struct OutStruct {
- char *filename;
- bool alloc_filename;
- FILE *stream;
- struct Configurable *config;
- curl_off_t bytes; /* amount written so far */
- curl_off_t init; /* original size (non-zero when appending) */
-};
-
-struct Configurable {
- CURL *easy; /* once we have one, we keep it here */
- bool remote_time;
- char *random_file;
- char *egd_file;
- char *useragent;
- char *cookie; /* single line with specified cookies */
- char *cookiejar; /* write to this file */
- char *cookiefile; /* read from this file */
- bool cookiesession; /* new session? */
- bool encoding; /* Accept-Encoding please */
- bool tr_encoding; /* Transfer-Encoding please */
- long authtype; /* auth bitmask */
- bool use_resume;
- bool resume_from_current;
- bool disable_epsv;
- bool disable_eprt;
- bool ftp_pret;
- long proto;
- bool proto_present;
- long proto_redir;
- bool proto_redir_present;
- curl_off_t resume_from;
- char *postfields;
- curl_off_t postfieldsize;
- char *referer;
- long timeout;
- long connecttimeout;
- long maxredirs;
- curl_off_t max_filesize;
- char *headerfile;
- char *ftpport;
- char *iface;
- int localport;
- int localportrange;
- unsigned short porttouse;
- char *range;
- long low_speed_limit;
- long low_speed_time;
- bool showerror;
- char *userpwd;
- char *tls_username;
- char *tls_password;
- char *tls_authtype;
- char *proxyuserpwd;
- char *proxy;
- int proxyver; /* set to CURLPROXY_HTTP* define */
- char *noproxy;
- char *mail_from;
- struct curl_slist *mail_rcpt;
- bool proxytunnel;
- bool ftp_append; /* APPE on ftp */
- bool mute; /* shutup */
- bool use_ascii; /* select ascii or text transfer */
- bool autoreferer; /* automatically set referer */
- bool failonerror; /* fail on (HTTP) errors */
- bool include_headers; /* send headers to data output */
- bool no_body; /* don't get the body */
- bool dirlistonly; /* only get the FTP dir list */
- bool followlocation; /* follow http redirects */
- bool unrestricted_auth; /* Continue to send authentication (user+password)
- when following ocations, even when hostname
- changed */
- bool netrc_opt;
- bool netrc;
- char *netrc_file;
- bool noprogress;
- bool isatty; /* updated internally only if the output is a tty */
- struct getout *url_list; /* point to the first node */
- struct getout *url_last; /* point to the last/current node */
- struct getout *url_get; /* point to the node to fill in URL */
- struct getout *url_out; /* point to the node to fill in outfile */
- char *cipher_list;
- char *cert;
- char *cert_type;
- char *cacert;
- char *capath;
- char *crlfile;
- char *key;
- char *key_type;
- char *key_passwd;
- char *pubkey;
- char *hostpubmd5;
- char *engine;
- bool list_engines;
- bool crlf;
- char *customrequest;
- char *krblevel;
- char *trace_dump; /* file to dump the network trace to, or NULL */
- FILE *trace_stream;
- bool trace_fopened;
- trace tracetype;
- bool tracetime; /* include timestamp? */
- long httpversion;
- int progressmode;
- bool nobuffer;
- bool readbusy; /* set when reading input returns EAGAIN */
- bool globoff;
- bool use_httpget;
- bool insecure_ok; /* set TRUE to allow insecure SSL connects */
- bool create_dirs;
- bool ftp_create_dirs;
- bool ftp_skip_ip;
- bool proxynegotiate;
- bool proxyntlm;
- bool proxydigest;
- bool proxybasic;
- bool proxyanyauth;
- char *writeout; /* %-styled format string to output */
- bool writeenv; /* write results to environment, if available */
- FILE *errors; /* if stderr redirect is requested */
- bool errors_fopened;
- struct curl_slist *quote;
- struct curl_slist *postquote;
- struct curl_slist *prequote;
- long ssl_version;
- long ip_version;
- curl_TimeCond timecond;
- time_t condtime;
- struct curl_slist *headers;
- struct curl_httppost *httppost;
- struct curl_httppost *last_post;
- struct curl_slist *telnet_options;
- struct curl_slist *resolve;
- HttpReq httpreq;
-
- /* for bandwidth limiting features: */
- curl_off_t sendpersecond; /* send to peer */
- curl_off_t recvpersecond; /* receive from peer */
-
- bool ftp_ssl;
- bool ftp_ssl_reqd;
- bool ftp_ssl_control;
- bool ftp_ssl_ccc;
- int ftp_ssl_ccc_mode;
-
- char *socksproxy; /* set to server string */
- int socksver; /* set to CURLPROXY_SOCKS* define */
- char *socks5_gssapi_service; /* set service name for gssapi principal
- * default rcmd */
- int socks5_gssapi_nec ; /* The NEC reference server does not protect
- * the encryption type exchange */
-
- bool tcp_nodelay;
- long req_retry; /* number of retries */
- long retry_delay; /* delay between retries (in seconds) */
- long retry_maxtime; /* maximum time to keep retrying */
-
- char *ftp_account; /* for ACCT */
- char *ftp_alternative_to_user; /* send command if USER/PASS fails */
- int ftp_filemethod;
- long tftp_blksize; /* TFTP BLKSIZE option */
- bool ignorecl; /* --ignore-content-length */
- bool disable_sessionid;
-
- char *libcurl; /* output libcurl code to this file name */
- bool raw;
- bool post301;
- bool post302;
- bool nokeepalive; /* for keepalive needs */
- long alivetime;
- bool content_disposition; /* use Content-disposition filename */
-
- int default_node_flags; /* default flags to search for each 'node', which is
- basically each given URL to transfer */
- struct OutStruct *outs;
- bool xattr; /* store metadata in extended attributes */
- long gssapi_delegation;
-};
-
#define WARN_PREFIX "Warning: "
#define WARN_TEXTWIDTH (79 - (int)strlen(WARN_PREFIX))
/* produce this text message to the user unless mute was selected */
@@ -634,23 +439,6 @@ static void helpf(FILE *errors, const char *fmt, ...)
"for more information\n");
}
-/*
- * A chain of these nodes contain URL to get and where to put the URL's
- * contents.
- */
-struct getout {
- struct getout *next; /* next one */
- char *url; /* the URL we deal with */
- char *outfile; /* where to store the output */
- char *infile; /* file to upload, if GETOUT_UPLOAD is set */
- int flags; /* options */
-};
-#define GETOUT_OUTFILE (1<<0) /* set when outfile is deemed done */
-#define GETOUT_URL (1<<1) /* set when URL is deemed done */
-#define GETOUT_USEREMOTE (1<<2) /* use remote file name locally */
-#define GETOUT_UPLOAD (1<<3) /* if set, -T has been used */
-#define GETOUT_NOUPLOAD (1<<4) /* if set, -T "" has been used */
-
static void help(void)
{
int i;
@@ -3878,74 +3666,6 @@ int my_trace(CURL *handle, curl_infotype type,
return 0;
}
-static void free_config_fields(struct Configurable *config)
-{
- Curl_safefree(config->random_file);
- Curl_safefree(config->egd_file);
- Curl_safefree(config->trace_dump);
- Curl_safefree(config->cipher_list);
- Curl_safefree(config->userpwd);
- Curl_safefree(config->postfields);
- Curl_safefree(config->proxy);
- Curl_safefree(config->proxyuserpwd);
- Curl_safefree(config->noproxy);
- Curl_safefree(config->cookie);
- Curl_safefree(config->cookiefile);
- Curl_safefree(config->krblevel);
- Curl_safefree(config->headerfile);
- Curl_safefree(config->ftpport);
- Curl_safefree(config->range);
- Curl_safefree(config->customrequest);
- Curl_safefree(config->writeout);
-
- if(config->httppost) {
- curl_formfree(config->httppost);
- config->httppost = NULL;
- }
-
- Curl_safefree(config->netrc_file);
- Curl_safefree(config->cert);
- Curl_safefree(config->cacert);
- Curl_safefree(config->cert_type);
- Curl_safefree(config->capath);
- Curl_safefree(config->crlfile);
- Curl_safefree(config->cookiejar);
- Curl_safefree(config->ftp_account);
- Curl_safefree(config->ftp_alternative_to_user);
- Curl_safefree(config->iface);
- Curl_safefree(config->socksproxy);
- Curl_safefree(config->libcurl);
- Curl_safefree(config->key_passwd);
- Curl_safefree(config->key);
- Curl_safefree(config->key_type);
- Curl_safefree(config->pubkey);
- Curl_safefree(config->referer);
- Curl_safefree(config->hostpubmd5);
- Curl_safefree(config->mail_from);
-
-#ifdef USE_TLS_SRP
- Curl_safefree(config->tls_authtype);
- Curl_safefree(config->tls_username);
- Curl_safefree(config->tls_password);
-#endif
-#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
- Curl_safefree(config->socks5_gssapi_service);
-#endif
-
- curl_slist_free_all(config->quote); /* checks for config->quote == NULL */
- curl_slist_free_all(config->prequote);
- curl_slist_free_all(config->postquote);
- curl_slist_free_all(config->headers);
- curl_slist_free_all(config->telnet_options);
- curl_slist_free_all(config->mail_rcpt);
- curl_slist_free_all(config->resolve);
-
- if(config->easy) {
- curl_easy_cleanup(config->easy);
- config->easy = NULL;
- }
-}
-
#ifdef WIN32
/* Function to find CACert bundle on a Win32 platform using SearchPath.