1
/*****************************************************************************
3
* Project ___| | | | _ \| |
5
* | (__| |_| | _ <| |___
6
* \___|\___/|_| \_\_____|
8
* Copyright (C) 2000, Daniel Stenberg, <daniel@haxx.se>, et al.
10
* In order to be useful for every potential user, curl and libcurl are
11
* dual-licensed under the MPL and the MIT/X-derivate licenses.
13
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
14
* copies of the Software, and permit persons to whom the Software is
15
* furnished to do so, under the terms of the MPL or the MIT/X-derivate
16
* licenses. You may pick one of these licenses.
18
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19
* KIND, either express or implied.
21
* $Id: getinfo.c,v 1.18 2002/02/20 13:46:54 bagder Exp $
22
*****************************************************************************/
26
#include <curl/curl.h>
39
* This is supposed to be called in the beginning of a permform() session
40
* and should reset all session-info variables
42
CURLcode Curl_initinfo(struct SessionHandle *data)
44
struct Progress *pro = &data->progress;
45
struct PureInfo *info =&data->info;
49
pro->t_pretransfer = 0;
50
pro->t_starttransfer = 0;
55
info->filetime=-1; /* -1 is an illegal time and thus means unknown */
57
if (info->contenttype)
58
free(info->contenttype);
59
info->contenttype = NULL;
61
info->header_size = 0;
62
info->request_size = 0;
66
CURLcode Curl_getinfo(struct SessionHandle *data, CURLINFO info, ...)
70
double *param_doublep;
74
switch(info&CURLINFO_TYPEMASK) {
76
return CURLE_BAD_FUNCTION_ARGUMENT;
78
param_charp = va_arg(arg, char **);
79
if(NULL == param_charp)
80
return CURLE_BAD_FUNCTION_ARGUMENT;
83
param_longp = va_arg(arg, long *);
84
if(NULL == param_longp)
85
return CURLE_BAD_FUNCTION_ARGUMENT;
88
param_doublep = va_arg(arg, double *);
89
if(NULL == param_doublep)
90
return CURLE_BAD_FUNCTION_ARGUMENT;
95
case CURLINFO_EFFECTIVE_URL:
96
*param_charp = data->change.url?data->change.url:(char *)"";
98
case CURLINFO_HTTP_CODE:
99
*param_longp = data->info.httpcode;
101
case CURLINFO_FILETIME:
102
*param_longp = data->info.filetime;
104
case CURLINFO_HEADER_SIZE:
105
*param_longp = data->info.header_size;
107
case CURLINFO_REQUEST_SIZE:
108
*param_longp = data->info.request_size;
110
case CURLINFO_TOTAL_TIME:
111
*param_doublep = data->progress.timespent;
113
case CURLINFO_NAMELOOKUP_TIME:
114
*param_doublep = data->progress.t_nslookup;
116
case CURLINFO_CONNECT_TIME:
117
*param_doublep = data->progress.t_connect;
119
case CURLINFO_PRETRANSFER_TIME:
120
*param_doublep = data->progress.t_pretransfer;
122
case CURLINFO_STARTTRANSFER_TIME:
123
*param_doublep = data->progress.t_starttransfer;
125
case CURLINFO_SIZE_UPLOAD:
126
*param_doublep = data->progress.uploaded;
128
case CURLINFO_SIZE_DOWNLOAD:
129
*param_doublep = data->progress.downloaded;
131
case CURLINFO_SPEED_DOWNLOAD:
132
*param_doublep = data->progress.dlspeed;
134
case CURLINFO_SPEED_UPLOAD:
135
*param_doublep = data->progress.ulspeed;
137
case CURLINFO_SSL_VERIFYRESULT:
138
*param_longp = data->set.ssl.certverifyresult;
140
case CURLINFO_CONTENT_LENGTH_DOWNLOAD:
141
*param_doublep = data->progress.size_dl;
143
case CURLINFO_CONTENT_LENGTH_UPLOAD:
144
*param_doublep = data->progress.size_ul;
146
case CURLINFO_CONTENT_TYPE:
147
*param_charp = data->info.contenttype;
150
return CURLE_BAD_FUNCTION_ARGUMENT;
157
* eval: (load-file "../curl-mode.el")
160
* vim: et sw=2 ts=2 sts=2 tw=78