aboutsummaryrefslogtreecommitdiff
path: root/src/tool_cfgable.c
diff options
context:
space:
mode:
authorYang Tse <yangsita@gmail.com>2011-09-16 21:44:45 +0200
committerYang Tse <yangsita@gmail.com>2011-09-16 21:44:45 +0200
commitc0159d0edc52bb92a402397a63a8e0bcdcfc7484 (patch)
treeed1b77d5f1518e87637bcbd023a710855e06c3b9 /src/tool_cfgable.c
parent93579cc36337f31de7b247ae3e49ad4f3e5f9673 (diff)
curl tool: move 'Configurable' and free_config_fields() to tool_cfgable.[ch]
Reviewing fields being free'd in free_config_fields() still pending
Diffstat (limited to 'src/tool_cfgable.c')
-rw-r--r--src/tool_cfgable.c98
1 files changed, 98 insertions, 0 deletions
diff --git a/src/tool_cfgable.c b/src/tool_cfgable.c
new file mode 100644
index 000000000..a666951ec
--- /dev/null
+++ b/src/tool_cfgable.c
@@ -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;
+ }
+}