File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / curl / src / tool_sdecls.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Jun 3 10:01:15 2020 UTC (4 years, 10 months ago) by misho
Branches: curl, MAIN
CVS tags: v7_70_0p4, HEAD
curl

    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>