xref: /third_party/curl/src/tool_writeout.h (revision 13498266)
1#ifndef HEADER_CURL_TOOL_WRITEOUT_H
2#define HEADER_CURL_TOOL_WRITEOUT_H
3/***************************************************************************
4 *                                  _   _ ____  _
5 *  Project                     ___| | | |  _ \| |
6 *                             / __| | | | |_) | |
7 *                            | (__| |_| |  _ <| |___
8 *                             \___|\___/|_| \_\_____|
9 *
10 * Copyright (C) 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.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 * SPDX-License-Identifier: curl
24 *
25 ***************************************************************************/
26#include "tool_setup.h"
27#include "tool_operate.h"
28
29typedef enum {
30  VAR_NONE,       /* must be the first */
31  VAR_APPCONNECT_TIME,
32  VAR_CERT,
33  VAR_CONNECT_TIME,
34  VAR_CONTENT_TYPE,
35  VAR_CONN_ID,
36  VAR_EASY_ID,
37  VAR_EFFECTIVE_FILENAME,
38  VAR_EFFECTIVE_METHOD,
39  VAR_EFFECTIVE_URL,
40  VAR_ERRORMSG,
41  VAR_EXITCODE,
42  VAR_FTP_ENTRY_PATH,
43  VAR_HEADER_JSON,
44  VAR_HEADER_SIZE,
45  VAR_HTTP_CODE,
46  VAR_HTTP_CODE_PROXY,
47  VAR_HTTP_VERSION,
48  VAR_INPUT_URL,
49  VAR_INPUT_URLSCHEME,
50  VAR_INPUT_URLUSER,
51  VAR_INPUT_URLPASSWORD,
52  VAR_INPUT_URLOPTIONS,
53  VAR_INPUT_URLHOST,
54  VAR_INPUT_URLPORT,
55  VAR_INPUT_URLPATH,
56  VAR_INPUT_URLQUERY,
57  VAR_INPUT_URLFRAGMENT,
58  VAR_INPUT_URLZONEID,
59  /* the same ones again for url *effective* */
60  VAR_INPUT_URLESCHEME,
61  VAR_INPUT_URLEUSER,
62  VAR_INPUT_URLEPASSWORD,
63  VAR_INPUT_URLEOPTIONS,
64  VAR_INPUT_URLEHOST,
65  VAR_INPUT_URLEPORT,
66  VAR_INPUT_URLEPATH,
67  VAR_INPUT_URLEQUERY,
68  VAR_INPUT_URLEFRAGMENT,
69  VAR_INPUT_URLEZONEID,
70  VAR_JSON,
71  VAR_LOCAL_IP,
72  VAR_LOCAL_PORT,
73  VAR_NAMELOOKUP_TIME,
74  VAR_NUM_CERTS,
75  VAR_NUM_CONNECTS,
76  VAR_NUM_HEADERS,
77  VAR_ONERROR,
78  VAR_PRETRANSFER_TIME,
79  VAR_PRIMARY_IP,
80  VAR_PRIMARY_PORT,
81  VAR_PROXY_SSL_VERIFY_RESULT,
82  VAR_REDIRECT_COUNT,
83  VAR_REDIRECT_TIME,
84  VAR_REDIRECT_URL,
85  VAR_REFERER,
86  VAR_REQUEST_SIZE,
87  VAR_SCHEME,
88  VAR_SIZE_DOWNLOAD,
89  VAR_SIZE_UPLOAD,
90  VAR_SPEED_DOWNLOAD,
91  VAR_SPEED_UPLOAD,
92  VAR_SSL_VERIFY_RESULT,
93  VAR_STARTTRANSFER_TIME,
94  VAR_STDERR,
95  VAR_STDOUT,
96  VAR_TOTAL_TIME,
97  VAR_URLNUM,
98  VAR_NUM_OF_VARS /* must be the last */
99} writeoutid;
100
101struct writeoutvar {
102  const char *name;
103  writeoutid id;
104  CURLINFO ci;
105  int (*writefunc)(FILE *stream, const struct writeoutvar *wovar,
106                   struct per_transfer *per, CURLcode per_result,
107                   bool use_json);
108};
109
110void ourWriteOut(struct OperationConfig *config, struct per_transfer *per,
111                 CURLcode per_result);
112
113#endif /* HEADER_CURL_TOOL_WRITEOUT_H */
114