1*6236dae4SAndroid Build Coastguard Worker #ifndef HEADER_CURL_TOOL_OPERATE_H 2*6236dae4SAndroid Build Coastguard Worker #define HEADER_CURL_TOOL_OPERATE_H 3*6236dae4SAndroid Build Coastguard Worker /*************************************************************************** 4*6236dae4SAndroid Build Coastguard Worker * _ _ ____ _ 5*6236dae4SAndroid Build Coastguard Worker * Project ___| | | | _ \| | 6*6236dae4SAndroid Build Coastguard Worker * / __| | | | |_) | | 7*6236dae4SAndroid Build Coastguard Worker * | (__| |_| | _ <| |___ 8*6236dae4SAndroid Build Coastguard Worker * \___|\___/|_| \_\_____| 9*6236dae4SAndroid Build Coastguard Worker * 10*6236dae4SAndroid Build Coastguard Worker * Copyright (C) Daniel Stenberg, <[email protected]>, et al. 11*6236dae4SAndroid Build Coastguard Worker * 12*6236dae4SAndroid Build Coastguard Worker * This software is licensed as described in the file COPYING, which 13*6236dae4SAndroid Build Coastguard Worker * you should have received as part of this distribution. The terms 14*6236dae4SAndroid Build Coastguard Worker * are also available at https://curl.se/docs/copyright.html. 15*6236dae4SAndroid Build Coastguard Worker * 16*6236dae4SAndroid Build Coastguard Worker * You may opt to use, copy, modify, merge, publish, distribute and/or sell 17*6236dae4SAndroid Build Coastguard Worker * copies of the Software, and permit persons to whom the Software is 18*6236dae4SAndroid Build Coastguard Worker * furnished to do so, under the terms of the COPYING file. 19*6236dae4SAndroid Build Coastguard Worker * 20*6236dae4SAndroid Build Coastguard Worker * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 21*6236dae4SAndroid Build Coastguard Worker * KIND, either express or implied. 22*6236dae4SAndroid Build Coastguard Worker * 23*6236dae4SAndroid Build Coastguard Worker * SPDX-License-Identifier: curl 24*6236dae4SAndroid Build Coastguard Worker * 25*6236dae4SAndroid Build Coastguard Worker ***************************************************************************/ 26*6236dae4SAndroid Build Coastguard Worker #include "tool_setup.h" 27*6236dae4SAndroid Build Coastguard Worker #include "tool_cb_hdr.h" 28*6236dae4SAndroid Build Coastguard Worker #include "tool_cb_prg.h" 29*6236dae4SAndroid Build Coastguard Worker #include "tool_sdecls.h" 30*6236dae4SAndroid Build Coastguard Worker 31*6236dae4SAndroid Build Coastguard Worker struct per_transfer { 32*6236dae4SAndroid Build Coastguard Worker /* double linked */ 33*6236dae4SAndroid Build Coastguard Worker struct per_transfer *next; 34*6236dae4SAndroid Build Coastguard Worker struct per_transfer *prev; 35*6236dae4SAndroid Build Coastguard Worker struct OperationConfig *config; /* for this transfer */ 36*6236dae4SAndroid Build Coastguard Worker struct curl_certinfo *certinfo; 37*6236dae4SAndroid Build Coastguard Worker CURL *curl; 38*6236dae4SAndroid Build Coastguard Worker long retry_remaining; 39*6236dae4SAndroid Build Coastguard Worker long retry_sleep_default; 40*6236dae4SAndroid Build Coastguard Worker long retry_sleep; 41*6236dae4SAndroid Build Coastguard Worker long num_retries; /* counts the performed retries */ 42*6236dae4SAndroid Build Coastguard Worker struct timeval start; /* start of this transfer */ 43*6236dae4SAndroid Build Coastguard Worker struct timeval retrystart; 44*6236dae4SAndroid Build Coastguard Worker char *url; 45*6236dae4SAndroid Build Coastguard Worker unsigned int urlnum; /* the index of the given URL */ 46*6236dae4SAndroid Build Coastguard Worker char *outfile; 47*6236dae4SAndroid Build Coastguard Worker int infd; 48*6236dae4SAndroid Build Coastguard Worker struct ProgressData progressbar; 49*6236dae4SAndroid Build Coastguard Worker struct OutStruct outs; 50*6236dae4SAndroid Build Coastguard Worker struct OutStruct heads; 51*6236dae4SAndroid Build Coastguard Worker struct OutStruct etag_save; 52*6236dae4SAndroid Build Coastguard Worker struct HdrCbData hdrcbdata; 53*6236dae4SAndroid Build Coastguard Worker long num_headers; 54*6236dae4SAndroid Build Coastguard Worker time_t startat; /* when doing parallel transfers, this is a retry transfer 55*6236dae4SAndroid Build Coastguard Worker that has been set to sleep until this time before it 56*6236dae4SAndroid Build Coastguard Worker should get started (again) */ 57*6236dae4SAndroid Build Coastguard Worker /* for parallel progress bar */ 58*6236dae4SAndroid Build Coastguard Worker curl_off_t dltotal; 59*6236dae4SAndroid Build Coastguard Worker curl_off_t dlnow; 60*6236dae4SAndroid Build Coastguard Worker curl_off_t ultotal; 61*6236dae4SAndroid Build Coastguard Worker curl_off_t ulnow; 62*6236dae4SAndroid Build Coastguard Worker curl_off_t uploadfilesize; /* expected total amount */ 63*6236dae4SAndroid Build Coastguard Worker curl_off_t uploadedsofar; /* amount delivered from the callback */ 64*6236dae4SAndroid Build Coastguard Worker bool dltotal_added; /* if the total has been added from this */ 65*6236dae4SAndroid Build Coastguard Worker bool ultotal_added; 66*6236dae4SAndroid Build Coastguard Worker 67*6236dae4SAndroid Build Coastguard Worker /* NULL or malloced */ 68*6236dae4SAndroid Build Coastguard Worker char *uploadfile; 69*6236dae4SAndroid Build Coastguard Worker char *errorbuffer; /* allocated and assigned while this is used for a 70*6236dae4SAndroid Build Coastguard Worker transfer */ 71*6236dae4SAndroid Build Coastguard Worker bool infdopen; /* TRUE if infd needs closing */ 72*6236dae4SAndroid Build Coastguard Worker bool noprogress; 73*6236dae4SAndroid Build Coastguard Worker bool was_last_header_empty; 74*6236dae4SAndroid Build Coastguard Worker 75*6236dae4SAndroid Build Coastguard Worker bool added; /* set TRUE when added to the multi handle */ 76*6236dae4SAndroid Build Coastguard Worker bool abort; /* when doing parallel transfers and this is TRUE then a critical 77*6236dae4SAndroid Build Coastguard Worker error (eg --fail-early) has occurred in another transfer and 78*6236dae4SAndroid Build Coastguard Worker this transfer will be aborted in the progress callback */ 79*6236dae4SAndroid Build Coastguard Worker bool skip; /* considered already done */ 80*6236dae4SAndroid Build Coastguard Worker }; 81*6236dae4SAndroid Build Coastguard Worker 82*6236dae4SAndroid Build Coastguard Worker CURLcode operate(struct GlobalConfig *config, int argc, argv_item_t argv[]); 83*6236dae4SAndroid Build Coastguard Worker void single_transfer_cleanup(struct OperationConfig *config); 84*6236dae4SAndroid Build Coastguard Worker 85*6236dae4SAndroid Build Coastguard Worker extern struct per_transfer *transfers; /* first node */ 86*6236dae4SAndroid Build Coastguard Worker 87*6236dae4SAndroid Build Coastguard Worker #endif /* HEADER_CURL_TOOL_OPERATE_H */ 88