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>