Annotation of embedaddon/curl/src/tool_sdecls.h, revision 1.1.1.1

1.1       misho       1: #ifndef HEADER_CURL_TOOL_SDECLS_H
                      2: #define HEADER_CURL_TOOL_SDECLS_H
                      3: /***************************************************************************
                      4:  *                                  _   _ ____  _
                      5:  *  Project                     ___| | | |  _ \| |
                      6:  *                             / __| | | | |_) | |
                      7:  *                            | (__| |_| |  _ <| |___
                      8:  *                             \___|\___/|_| \_\_____|
                      9:  *
                     10:  * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
                     11:  *
                     12:  * This software is licensed as described in the file COPYING, which
                     13:  * you should have received as part of this distribution. The terms
                     14:  * are also available at https://curl.haxx.se/docs/copyright.html.
                     15:  *
                     16:  * You may opt to use, copy, modify, merge, publish, distribute and/or sell
                     17:  * copies of the Software, and permit persons to whom the Software is
                     18:  * furnished to do so, under the terms of the COPYING file.
                     19:  *
                     20:  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
                     21:  * KIND, either express or implied.
                     22:  *
                     23:  ***************************************************************************/
                     24: #include "tool_setup.h"
                     25: #ifdef USE_METALINK
                     26: #  include <metalink/metalink.h>
                     27: #endif /* USE_METALINK */
                     28: 
                     29: /*
                     30:  * OutStruct variables keep track of information relative to curl's
                     31:  * output writing, which may take place to a standard stream or a file.
                     32:  *
                     33:  * 'filename' member is either a pointer to a file name string or NULL
                     34:  * when dealing with a standard stream.
                     35:  *
                     36:  * 'alloc_filename' member is TRUE when string pointed by 'filename' has been
                     37:  * dynamically allocated and 'belongs' to this OutStruct, otherwise FALSE.
                     38:  *
                     39:  * 'is_cd_filename' member is TRUE when string pointed by 'filename' has been
                     40:  * set using a server-specified Content-Disposition filename, otherwise FALSE.
                     41:  *
                     42:  * 's_isreg' member is TRUE when output goes to a regular file, this also
                     43:  * implies that output is 'seekable' and 'appendable' and also that member
                     44:  * 'filename' points to file name's string. For any standard stream member
                     45:  * 's_isreg' will be FALSE.
                     46:  *
                     47:  * 'fopened' member is TRUE when output goes to a regular file and it
                     48:  * has been fopen'ed, requiring it to be closed later on. In any other
                     49:  * case this is FALSE.
                     50:  *
                     51:  * 'stream' member is a pointer to a stream controlling object as returned
                     52:  * from a 'fopen' call or a standard stream.
                     53:  *
                     54:  * 'config' member is a pointer to associated 'OperationConfig' struct.
                     55:  *
                     56:  * 'bytes' member represents amount written so far.
                     57:  *
                     58:  * 'init' member holds original file size or offset at which truncation is
                     59:  * taking place. Always zero unless appending to a non-empty regular file.
                     60:  *
                     61:  * 'metalink_parser' member is a pointer to Metalink XML parser
                     62:  * context.
                     63:  */
                     64: 
                     65: struct OutStruct {
                     66:   char *filename;
                     67:   bool alloc_filename;
                     68:   bool is_cd_filename;
                     69:   bool s_isreg;
                     70:   bool fopened;
                     71:   FILE *stream;
                     72:   curl_off_t bytes;
                     73:   curl_off_t init;
                     74: #ifdef USE_METALINK
                     75:   metalink_parser_context_t *metalink_parser;
                     76: #endif /* USE_METALINK */
                     77: };
                     78: 
                     79: 
                     80: /*
                     81:  * InStruct variables keep track of information relative to curl's
                     82:  * input reading, which may take place from stdin or from some file.
                     83:  *
                     84:  * 'fd' member is either 'stdin' file descriptor number STDIN_FILENO
                     85:  * or a file descriptor as returned from an 'open' call for some file.
                     86:  *
                     87:  * 'config' member is a pointer to associated 'OperationConfig' struct.
                     88:  */
                     89: 
                     90: struct InStruct {
                     91:   int fd;
                     92:   struct OperationConfig *config;
                     93: };
                     94: 
                     95: 
                     96: /*
                     97:  * A linked list of these 'getout' nodes contain URL's to fetch,
                     98:  * as well as information relative to where URL contents should
                     99:  * be stored or which file should be uploaded.
                    100:  */
                    101: 
                    102: struct getout {
                    103:   struct getout *next;      /* next one */
                    104:   char          *url;       /* the URL we deal with */
                    105:   char          *outfile;   /* where to store the output */
                    106:   char          *infile;    /* file to upload, if GETOUT_UPLOAD is set */
                    107:   int            flags;     /* options - composed of GETOUT_* bits */
                    108: };
                    109: 
                    110: #define GETOUT_OUTFILE    (1<<0)  /* set when outfile is deemed done */
                    111: #define GETOUT_URL        (1<<1)  /* set when URL is deemed done */
                    112: #define GETOUT_USEREMOTE  (1<<2)  /* use remote file name locally */
                    113: #define GETOUT_UPLOAD     (1<<3)  /* if set, -T has been used */
                    114: #define GETOUT_NOUPLOAD   (1<<4)  /* if set, -T "" has been used */
                    115: #define GETOUT_METALINK   (1<<5)  /* set when Metalink download */
                    116: 
                    117: /*
                    118:  * 'trace' enumeration represents curl's output look'n feel possibilities.
                    119:  */
                    120: 
                    121: typedef enum {
                    122:   TRACE_NONE,  /* no trace/verbose output at all */
                    123:   TRACE_BIN,   /* tcpdump inspired look */
                    124:   TRACE_ASCII, /* like *BIN but without the hex output */
                    125:   TRACE_PLAIN  /* -v/--verbose type */
                    126: } trace;
                    127: 
                    128: 
                    129: /*
                    130:  * 'HttpReq' enumeration represents HTTP request types.
                    131:  */
                    132: 
                    133: typedef enum {
                    134:   HTTPREQ_UNSPEC,  /* first in list */
                    135:   HTTPREQ_GET,
                    136:   HTTPREQ_HEAD,
                    137:   HTTPREQ_MIMEPOST,
                    138:   HTTPREQ_SIMPLEPOST
                    139: } HttpReq;
                    140: 
                    141: 
                    142: /*
                    143:  * Complete struct declarations which have OperationConfig struct members,
                    144:  * just in case this header is directly included in some source file.
                    145:  */
                    146: 
                    147: #include "tool_cfgable.h"
                    148: 
                    149: #endif /* HEADER_CURL_TOOL_SDECLS_H */

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