]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
curl tool: move 'Configurable' and free_config_fields() to tool_cfgable.[ch]
authorYang Tse <yangsita@gmail.com>
Fri, 16 Sep 2011 19:44:45 +0000 (21:44 +0200)
committerYang Tse <yangsita@gmail.com>
Fri, 16 Sep 2011 19:44:45 +0000 (21:44 +0200)
Reviewing fields being free'd in free_config_fields() still pending

src/Makefile.inc
src/Makefile.vc6
src/main.c
src/tool_cfgable.c [new file with mode: 0644]
src/tool_cfgable.h [new file with mode: 0644]
src/vc6curlsrc.dsp

index f534075dfa08ca59bc052d454bb560f264b1b1d5..5d14ba52c7a4f47699f4611a0c663c9a996170cc 100644 (file)
@@ -16,12 +16,12 @@ CURLX_ONES = $(top_srcdir)/lib/strtoofft.c \
 
 CURL_CFILES = main.c hugehelp.c urlglob.c writeout.c writeenv.c \
        getpass.c homedir.c curlutil.c os-specific.c xattr.c \
-       tool_convert.c tool_mfiles.c
+       tool_cfgable.c tool_convert.c tool_mfiles.c
 
 CURL_HFILES = hugehelp.h setup.h config-win32.h config-mac.h \
        config-riscos.h urlglob.h version.h os-specific.h \
        writeout.h writeenv.h getpass.h homedir.h curlutil.h \
-       xattr.h tool_convert.h tool_mfiles.h
+       xattr.h tool_cfgable.h tool_convert.h tool_mfiles.h
 
 curl_SOURCES = $(CURL_CFILES) $(CURLX_ONES) $(CURL_HFILES)
 
index 950d0761edbf366bd81ca429deddf8f127357664..ca6c4f927ed82e8a5e4d77539d32358b3df2a7f5 100644 (file)
@@ -142,6 +142,7 @@ RELEASE_OBJS= \
        os-specificr.obj \\r
        rawstrr.obj \\r
        strtoofftr.obj \\r
+       tool_cfgabler.obj \\r
        tool_convertr.obj \\r
        tool_mfilesr.obj \\r
        urlglobr.obj \\r
@@ -159,6 +160,7 @@ DEBUG_OBJS= \
        os-specificd.obj \\r
        rawstrd.obj \\r
        strtoofftd.obj \\r
+       tool_cfgabled.obj \\r
        tool_convertd.obj \\r
        tool_mfilesd.obj \\r
        urlglobd.obj \\r
@@ -306,6 +308,8 @@ rawstrr.obj: ../lib/rawstr.c
        $(CCR) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
 strtoofftr.obj: ../lib/strtoofft.c\r
        $(CCR) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
+tool_cfgabler.obj: tool_cfgable.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" tool_cfgable.c\r
 tool_convertr.obj: tool_convert.c\r
        $(CCR) $(CFLAGS) /Fo"$@" tool_convert.c\r
 tool_mfilesr.obj: tool_mfiles.c\r
@@ -338,6 +342,8 @@ rawstrd.obj: ../lib/rawstr.c
        $(CCD) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
 strtoofftd.obj: ../lib/strtoofft.c\r
        $(CCD) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
+tool_cfgabled.obj: tool_cfgable.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" tool_cfgable.c\r
 tool_convertd.obj: tool_convert.c\r
        $(CCD) $(CFLAGS) /Fo"$@" tool_convert.c\r
 tool_mfilesd.obj: tool_mfiles.c\r
index 532ccd3010d9300c2c709c48f1965a83d0ace627..5ef8998c31b4f7e37b72d1e556d930e27021f9cb 100644 (file)
 #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.
diff --git a/src/tool_cfgable.c b/src/tool_cfgable.c
new file mode 100644 (file)
index 0000000..a666951
--- /dev/null
@@ -0,0 +1,98 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2011, 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 http://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.
+ *
+ ***************************************************************************/
+#include "setup.h"
+
+#include <curl/curl.h>
+
+#include "tool_cfgable.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+/* TODO: review that all dinamically allocated fields are free'd */
+
+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;
+  }
+}
diff --git a/src/tool_cfgable.h b/src/tool_cfgable.h
new file mode 100644 (file)
index 0000000..63e9f04
--- /dev/null
@@ -0,0 +1,244 @@
+#ifndef HEADER_CURL_TOOL_CFGABLE_H
+#define HEADER_CURL_TOOL_CFGABLE_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2011, 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 http://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.
+ *
+ ***************************************************************************/
+#include "setup.h"
+
+typedef enum {
+  HTTPREQ_UNSPEC,
+  HTTPREQ_GET,
+  HTTPREQ_HEAD,
+  HTTPREQ_POST,
+  HTTPREQ_SIMPLEPOST,
+  HTTPREQ_CUSTOM,
+  HTTPREQ_LAST
+} HttpReq;
+
+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) */
+};
+
+/*
+ * A chain of these 'getout' nodes contain URL's to fetch and where to
+ * place 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 - composed of GETOUT_* bits */
+};
+
+#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 */
+
+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 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;
+
+}; /* struct Configurable */
+
+void free_config_fields(struct Configurable *config);
+
+#endif /* HEADER_CURL_TOOL_CFGABLE_H */
index 486d9e9843f3e0a8bb272fac698ca92e8c343bd3..336bae9c7bbb33f68d76a0af7f373569259bc79c 100644 (file)
@@ -175,6 +175,10 @@ SOURCE=..\lib\strtoofft.c
 # End Source File\r
 # Begin Source File\r
 \r
+SOURCE=.\tool_cfgable.c\r
+# End Source File\r
+# Begin Source File\r
+\r
 SOURCE=.\tool_convert.c\r
 # End Source File\r
 # Begin Source File\r
@@ -243,6 +247,10 @@ SOURCE=..\lib\strtoofft.h
 # End Source File\r
 # Begin Source File\r
 \r
+SOURCE=.\tool_cfgable.h\r
+# End Source File\r
+# Begin Source File\r
+\r
 SOURCE=.\tool_convert.h\r
 # End Source File\r
 # Begin Source File\r