Annotation of embedaddon/curl/src/tool_cfgable.c, revision 1.1.1.1

1.1       misho       1: /***************************************************************************
                      2:  *                                  _   _ ____  _
                      3:  *  Project                     ___| | | |  _ \| |
                      4:  *                             / __| | | | |_) | |
                      5:  *                            | (__| |_| |  _ <| |___
                      6:  *                             \___|\___/|_| \_\_____|
                      7:  *
                      8:  * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
                      9:  *
                     10:  * This software is licensed as described in the file COPYING, which
                     11:  * you should have received as part of this distribution. The terms
                     12:  * are also available at https://curl.haxx.se/docs/copyright.html.
                     13:  *
                     14:  * You may opt to use, copy, modify, merge, publish, distribute and/or sell
                     15:  * copies of the Software, and permit persons to whom the Software is
                     16:  * furnished to do so, under the terms of the COPYING file.
                     17:  *
                     18:  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
                     19:  * KIND, either express or implied.
                     20:  *
                     21:  ***************************************************************************/
                     22: #include "tool_setup.h"
                     23: 
                     24: #include "tool_cfgable.h"
                     25: #include "tool_main.h"
                     26: 
                     27: #include "memdebug.h" /* keep this as LAST include */
                     28: 
                     29: void config_init(struct OperationConfig* config)
                     30: {
                     31:   memset(config, 0, sizeof(struct OperationConfig));
                     32: 
                     33:   config->postfieldsize = -1;
                     34:   config->use_httpget = FALSE;
                     35:   config->create_dirs = FALSE;
                     36:   config->maxredirs = DEFAULT_MAXREDIRS;
                     37:   config->proto = CURLPROTO_ALL;
                     38:   config->proto_present = FALSE;
                     39:   config->proto_redir = CURLPROTO_ALL & /* All except FILE, SCP and SMB */
                     40:     ~(CURLPROTO_FILE | CURLPROTO_SCP | CURLPROTO_SMB |
                     41:       CURLPROTO_SMBS);
                     42:   config->proto_redir_present = FALSE;
                     43:   config->proto_default = NULL;
                     44:   config->tcp_nodelay = TRUE; /* enabled by default */
                     45:   config->happy_eyeballs_timeout_ms = CURL_HET_DEFAULT;
                     46:   config->http09_allowed = FALSE;
                     47: }
                     48: 
                     49: static void free_config_fields(struct OperationConfig *config)
                     50: {
                     51:   struct getout *urlnode;
                     52: 
                     53:   Curl_safefree(config->random_file);
                     54:   Curl_safefree(config->egd_file);
                     55:   Curl_safefree(config->useragent);
                     56:   Curl_safefree(config->altsvc);
                     57:   Curl_safefree(config->cookie);
                     58:   Curl_safefree(config->cookiejar);
                     59:   Curl_safefree(config->cookiefile);
                     60: 
                     61:   Curl_safefree(config->postfields);
                     62:   Curl_safefree(config->referer);
                     63: 
                     64:   Curl_safefree(config->headerfile);
                     65:   Curl_safefree(config->ftpport);
                     66:   Curl_safefree(config->iface);
                     67: 
                     68:   Curl_safefree(config->range);
                     69: 
                     70:   Curl_safefree(config->userpwd);
                     71:   Curl_safefree(config->tls_username);
                     72:   Curl_safefree(config->tls_password);
                     73:   Curl_safefree(config->tls_authtype);
                     74:   Curl_safefree(config->proxy_tls_username);
                     75:   Curl_safefree(config->proxy_tls_password);
                     76:   Curl_safefree(config->proxy_tls_authtype);
                     77:   Curl_safefree(config->proxyuserpwd);
                     78:   Curl_safefree(config->proxy);
                     79: 
                     80:   Curl_safefree(config->dns_ipv6_addr);
                     81:   Curl_safefree(config->dns_ipv4_addr);
                     82:   Curl_safefree(config->dns_interface);
                     83:   Curl_safefree(config->dns_servers);
                     84: 
                     85:   Curl_safefree(config->noproxy);
                     86: 
                     87:   Curl_safefree(config->mail_from);
                     88:   curl_slist_free_all(config->mail_rcpt);
                     89:   Curl_safefree(config->mail_auth);
                     90: 
                     91:   Curl_safefree(config->netrc_file);
                     92: 
                     93:   urlnode = config->url_list;
                     94:   while(urlnode) {
                     95:     struct getout *next = urlnode->next;
                     96:     Curl_safefree(urlnode->url);
                     97:     Curl_safefree(urlnode->outfile);
                     98:     Curl_safefree(urlnode->infile);
                     99:     Curl_safefree(urlnode);
                    100:     urlnode = next;
                    101:   }
                    102:   config->url_list = NULL;
                    103:   config->url_last = NULL;
                    104:   config->url_get = NULL;
                    105:   config->url_out = NULL;
                    106: 
                    107:   Curl_safefree(config->doh_url);
                    108:   Curl_safefree(config->cipher_list);
                    109:   Curl_safefree(config->proxy_cipher_list);
                    110:   Curl_safefree(config->cert);
                    111:   Curl_safefree(config->proxy_cert);
                    112:   Curl_safefree(config->cert_type);
                    113:   Curl_safefree(config->proxy_cert_type);
                    114:   Curl_safefree(config->cacert);
                    115:   Curl_safefree(config->proxy_cacert);
                    116:   Curl_safefree(config->capath);
                    117:   Curl_safefree(config->proxy_capath);
                    118:   Curl_safefree(config->crlfile);
                    119:   Curl_safefree(config->pinnedpubkey);
                    120:   Curl_safefree(config->proxy_pinnedpubkey);
                    121:   Curl_safefree(config->proxy_crlfile);
                    122:   Curl_safefree(config->key);
                    123:   Curl_safefree(config->proxy_key);
                    124:   Curl_safefree(config->key_type);
                    125:   Curl_safefree(config->proxy_key_type);
                    126:   Curl_safefree(config->key_passwd);
                    127:   Curl_safefree(config->proxy_key_passwd);
                    128:   Curl_safefree(config->pubkey);
                    129:   Curl_safefree(config->hostpubmd5);
                    130:   Curl_safefree(config->engine);
                    131:   Curl_safefree(config->etag_save_file);
                    132:   Curl_safefree(config->etag_compare_file);
                    133:   Curl_safefree(config->request_target);
                    134:   Curl_safefree(config->customrequest);
                    135:   Curl_safefree(config->krblevel);
                    136: 
                    137:   Curl_safefree(config->oauth_bearer);
                    138:   Curl_safefree(config->sasl_authzid);
                    139: 
                    140:   Curl_safefree(config->unix_socket_path);
                    141:   Curl_safefree(config->writeout);
                    142:   Curl_safefree(config->proto_default);
                    143: 
                    144:   curl_slist_free_all(config->quote);
                    145:   curl_slist_free_all(config->postquote);
                    146:   curl_slist_free_all(config->prequote);
                    147: 
                    148:   curl_slist_free_all(config->headers);
                    149:   curl_slist_free_all(config->proxyheaders);
                    150: 
                    151:   curl_mime_free(config->mimepost);
                    152:   config->mimepost = NULL;
                    153:   tool_mime_free(config->mimeroot);
                    154:   config->mimeroot = NULL;
                    155:   config->mimecurrent = NULL;
                    156: 
                    157:   curl_slist_free_all(config->telnet_options);
                    158:   curl_slist_free_all(config->resolve);
                    159:   curl_slist_free_all(config->connect_to);
                    160: 
                    161:   Curl_safefree(config->preproxy);
                    162:   Curl_safefree(config->proxy_service_name);
                    163:   Curl_safefree(config->service_name);
                    164: 
                    165:   Curl_safefree(config->ftp_account);
                    166:   Curl_safefree(config->ftp_alternative_to_user);
                    167: }
                    168: 
                    169: void config_free(struct OperationConfig *config)
                    170: {
                    171:   struct OperationConfig *last = config;
                    172: 
                    173:   /* Free each of the structures in reverse order */
                    174:   while(last) {
                    175:     struct OperationConfig *prev = last->prev;
                    176: 
                    177:     free_config_fields(last);
                    178:     free(last);
                    179: 
                    180:     last = prev;
                    181:   }
                    182: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>