1*6236dae4SAndroid Build Coastguard Worker #ifndef HEADER_CURL_TOOL_SDECLS_H 2*6236dae4SAndroid Build Coastguard Worker #define HEADER_CURL_TOOL_SDECLS_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 28*6236dae4SAndroid Build Coastguard Worker /* 29*6236dae4SAndroid Build Coastguard Worker * OutStruct variables keep track of information relative to curl's 30*6236dae4SAndroid Build Coastguard Worker * output writing, which may take place to a standard stream or a file. 31*6236dae4SAndroid Build Coastguard Worker * 32*6236dae4SAndroid Build Coastguard Worker * 'filename' member is either a pointer to a filename string or NULL 33*6236dae4SAndroid Build Coastguard Worker * when dealing with a standard stream. 34*6236dae4SAndroid Build Coastguard Worker * 35*6236dae4SAndroid Build Coastguard Worker * 'alloc_filename' member is TRUE when string pointed by 'filename' has been 36*6236dae4SAndroid Build Coastguard Worker * dynamically allocated and 'belongs' to this OutStruct, otherwise FALSE. 37*6236dae4SAndroid Build Coastguard Worker * 38*6236dae4SAndroid Build Coastguard Worker * 'is_cd_filename' member is TRUE when string pointed by 'filename' has been 39*6236dae4SAndroid Build Coastguard Worker * set using a server-specified Content-Disposition filename, otherwise FALSE. 40*6236dae4SAndroid Build Coastguard Worker * 41*6236dae4SAndroid Build Coastguard Worker * 's_isreg' member is TRUE when output goes to a regular file, this also 42*6236dae4SAndroid Build Coastguard Worker * implies that output is 'seekable' and 'appendable' and also that member 43*6236dae4SAndroid Build Coastguard Worker * 'filename' points to filename's string. For any standard stream member 44*6236dae4SAndroid Build Coastguard Worker * 's_isreg' will be FALSE. 45*6236dae4SAndroid Build Coastguard Worker * 46*6236dae4SAndroid Build Coastguard Worker * 'fopened' member is TRUE when output goes to a regular file and it 47*6236dae4SAndroid Build Coastguard Worker * has been fopen'ed, requiring it to be closed later on. In any other 48*6236dae4SAndroid Build Coastguard Worker * case this is FALSE. 49*6236dae4SAndroid Build Coastguard Worker * 50*6236dae4SAndroid Build Coastguard Worker * 'stream' member is a pointer to a stream controlling object as returned 51*6236dae4SAndroid Build Coastguard Worker * from a 'fopen' call or a standard stream. 52*6236dae4SAndroid Build Coastguard Worker * 53*6236dae4SAndroid Build Coastguard Worker * 'config' member is a pointer to associated 'OperationConfig' struct. 54*6236dae4SAndroid Build Coastguard Worker * 55*6236dae4SAndroid Build Coastguard Worker * 'bytes' member represents amount written so far. 56*6236dae4SAndroid Build Coastguard Worker * 57*6236dae4SAndroid Build Coastguard Worker * 'init' member holds original file size or offset at which truncation is 58*6236dae4SAndroid Build Coastguard Worker * taking place. Always zero unless appending to a non-empty regular file. 59*6236dae4SAndroid Build Coastguard Worker * 60*6236dae4SAndroid Build Coastguard Worker * [Windows] 61*6236dae4SAndroid Build Coastguard Worker * 'utf8seq' member holds an incomplete UTF-8 sequence destined for the console 62*6236dae4SAndroid Build Coastguard Worker * until it can be completed (1-4 bytes) + NUL. 63*6236dae4SAndroid Build Coastguard Worker */ 64*6236dae4SAndroid Build Coastguard Worker 65*6236dae4SAndroid Build Coastguard Worker struct OutStruct { 66*6236dae4SAndroid Build Coastguard Worker char *filename; 67*6236dae4SAndroid Build Coastguard Worker bool alloc_filename; 68*6236dae4SAndroid Build Coastguard Worker bool is_cd_filename; 69*6236dae4SAndroid Build Coastguard Worker bool s_isreg; 70*6236dae4SAndroid Build Coastguard Worker bool fopened; 71*6236dae4SAndroid Build Coastguard Worker FILE *stream; 72*6236dae4SAndroid Build Coastguard Worker curl_off_t bytes; 73*6236dae4SAndroid Build Coastguard Worker curl_off_t init; 74*6236dae4SAndroid Build Coastguard Worker #ifdef _WIN32 75*6236dae4SAndroid Build Coastguard Worker unsigned char utf8seq[5]; 76*6236dae4SAndroid Build Coastguard Worker #endif 77*6236dae4SAndroid Build Coastguard Worker }; 78*6236dae4SAndroid Build Coastguard Worker 79*6236dae4SAndroid Build Coastguard Worker /* 80*6236dae4SAndroid Build Coastguard Worker * A linked list of these 'getout' nodes contain URL's to fetch, 81*6236dae4SAndroid Build Coastguard Worker * as well as information relative to where URL contents should 82*6236dae4SAndroid Build Coastguard Worker * be stored or which file should be uploaded. 83*6236dae4SAndroid Build Coastguard Worker */ 84*6236dae4SAndroid Build Coastguard Worker 85*6236dae4SAndroid Build Coastguard Worker struct getout { 86*6236dae4SAndroid Build Coastguard Worker struct getout *next; /* next one */ 87*6236dae4SAndroid Build Coastguard Worker char *url; /* the URL we deal with */ 88*6236dae4SAndroid Build Coastguard Worker char *outfile; /* where to store the output */ 89*6236dae4SAndroid Build Coastguard Worker char *infile; /* file to upload, if GETOUT_UPLOAD is set */ 90*6236dae4SAndroid Build Coastguard Worker int flags; /* options - composed of GETOUT_* bits */ 91*6236dae4SAndroid Build Coastguard Worker int num; /* which URL number in an invocation */ 92*6236dae4SAndroid Build Coastguard Worker }; 93*6236dae4SAndroid Build Coastguard Worker 94*6236dae4SAndroid Build Coastguard Worker #define GETOUT_OUTFILE (1<<0) /* set when outfile is deemed done */ 95*6236dae4SAndroid Build Coastguard Worker #define GETOUT_URL (1<<1) /* set when URL is deemed done */ 96*6236dae4SAndroid Build Coastguard Worker #define GETOUT_USEREMOTE (1<<2) /* use remote filename locally */ 97*6236dae4SAndroid Build Coastguard Worker #define GETOUT_UPLOAD (1<<3) /* if set, -T has been used */ 98*6236dae4SAndroid Build Coastguard Worker #define GETOUT_NOUPLOAD (1<<4) /* if set, -T "" has been used */ 99*6236dae4SAndroid Build Coastguard Worker 100*6236dae4SAndroid Build Coastguard Worker /* 101*6236dae4SAndroid Build Coastguard Worker * 'trace' enumeration represents curl's output look'n feel possibilities. 102*6236dae4SAndroid Build Coastguard Worker */ 103*6236dae4SAndroid Build Coastguard Worker 104*6236dae4SAndroid Build Coastguard Worker typedef enum { 105*6236dae4SAndroid Build Coastguard Worker TRACE_NONE, /* no trace/verbose output at all */ 106*6236dae4SAndroid Build Coastguard Worker TRACE_BIN, /* tcpdump inspired look */ 107*6236dae4SAndroid Build Coastguard Worker TRACE_ASCII, /* like *BIN but without the hex output */ 108*6236dae4SAndroid Build Coastguard Worker TRACE_PLAIN /* -v/--verbose type */ 109*6236dae4SAndroid Build Coastguard Worker } trace; 110*6236dae4SAndroid Build Coastguard Worker 111*6236dae4SAndroid Build Coastguard Worker 112*6236dae4SAndroid Build Coastguard Worker /* 113*6236dae4SAndroid Build Coastguard Worker * 'HttpReq' enumeration represents HTTP request types. 114*6236dae4SAndroid Build Coastguard Worker */ 115*6236dae4SAndroid Build Coastguard Worker 116*6236dae4SAndroid Build Coastguard Worker typedef enum { 117*6236dae4SAndroid Build Coastguard Worker TOOL_HTTPREQ_UNSPEC, /* first in list */ 118*6236dae4SAndroid Build Coastguard Worker TOOL_HTTPREQ_GET, 119*6236dae4SAndroid Build Coastguard Worker TOOL_HTTPREQ_HEAD, 120*6236dae4SAndroid Build Coastguard Worker TOOL_HTTPREQ_MIMEPOST, 121*6236dae4SAndroid Build Coastguard Worker TOOL_HTTPREQ_SIMPLEPOST, 122*6236dae4SAndroid Build Coastguard Worker TOOL_HTTPREQ_PUT 123*6236dae4SAndroid Build Coastguard Worker } HttpReq; 124*6236dae4SAndroid Build Coastguard Worker 125*6236dae4SAndroid Build Coastguard Worker 126*6236dae4SAndroid Build Coastguard Worker /* 127*6236dae4SAndroid Build Coastguard Worker * Complete struct declarations which have OperationConfig struct members, 128*6236dae4SAndroid Build Coastguard Worker * just in case this header is directly included in some source file. 129*6236dae4SAndroid Build Coastguard Worker */ 130*6236dae4SAndroid Build Coastguard Worker 131*6236dae4SAndroid Build Coastguard Worker #include "tool_cfgable.h" 132*6236dae4SAndroid Build Coastguard Worker 133*6236dae4SAndroid Build Coastguard Worker #endif /* HEADER_CURL_TOOL_SDECLS_H */ 134