doom3-gpl
Doom 3 GPL source release
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
writeenv.c
Go to the documentation of this file.
1 /***************************************************************************
2  * _ _ ____ _
3  * Project ___| | | | _ \| |
4  * / __| | | | |_) | |
5  * | (__| |_| | _ <| |___
6  * \___|\___/|_| \_\_____|
7  *
8  * Copyright (C) 1998 - 2004, Daniel Stenberg, <daniel@haxx.se>, et al.
9  *
10  * This software is licensed as described in the file COPYING, which
11  * you should have received as part of this distribution. The terms
12  * are also available at http://curl.haxx.se/docs/copyright.html.
13  *
14  * You may opt to use, copy, modify, merge, publish, distribute and/or sell
15  * copies of the Software, and permit persons to whom the Software is
16  * furnished to do so, under the terms of the COPYING file.
17  *
18  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19  * KIND, either express or implied.
20  *
21  * $Id: writeenv.c,v 1.7 2004/01/07 09:19:36 bagder Exp $
22  ***************************************************************************/
23 
24 #include "setup.h"
25 
26 #ifdef USE_ENVIRONMENT
27 
28 #include <curl/curl.h>
29 
30 #ifdef __riscos__
31 #include <kernel.h>
32 #endif
33 
34 struct
35 {
36  const char * name;
37  CURLINFO id;
38  enum {
39  writeenv_NONE,
40  writeenv_DOUBLE,
41  writeenv_LONG,
42  writeenv_STRING
43  } type;
44 } variables[14] =
45 {
46  {"curl_url_effective", CURLINFO_EFFECTIVE_URL, writeenv_STRING},
47  {"curl_http_code", CURLINFO_RESPONSE_CODE, writeenv_LONG},
48  {"curl_time_total", CURLINFO_TOTAL_TIME, writeenv_DOUBLE},
49  {"curl_time_namelookup", CURLINFO_NAMELOOKUP_TIME, writeenv_DOUBLE},
50  {"curl_time_connect", CURLINFO_CONNECT_TIME, writeenv_DOUBLE},
51  {"curl_time_pretransfer", CURLINFO_PRETRANSFER_TIME, writeenv_DOUBLE},
52  {"curl_time_starttransfer", CURLINFO_STARTTRANSFER_TIME, writeenv_DOUBLE},
53  {"curl_size_header", CURLINFO_HEADER_SIZE, writeenv_LONG},
54  {"curl_size_request", CURLINFO_REQUEST_SIZE, writeenv_LONG},
55  {"curl_size_download", CURLINFO_SIZE_DOWNLOAD, writeenv_DOUBLE},
56  {"curl_size_upload", CURLINFO_SIZE_UPLOAD, writeenv_DOUBLE},
57  {"curl_speed_download", CURLINFO_SPEED_DOWNLOAD, writeenv_DOUBLE},
58  {"curl_speed_upload", CURLINFO_SPEED_UPLOAD, writeenv_DOUBLE},
59  {NULL, 0, writeenv_NONE}
60  };
61 
62 static void internalSetEnv(const char * name, char * value)
63 {
64  /* Add your OS-specific code here. */
65 #ifdef __riscos__
66  _kernel_setenv(name, value);
67 #endif
68  return;
69 }
70 
71 void ourWriteEnv(CURL *curl)
72 {
73  unsigned int i;
74  char *string, numtext[10];
75  long longinfo;
76  double doubleinfo;
77 
78  for (i=0; variables[i].name; i++) {
79  switch (variables[i].type) {
80  case writeenv_STRING:
81  if (curl_easy_getinfo(curl, variables[i].id, &string) == CURLE_OK)
82  internalSetEnv(variables[i].name, string);
83  else
84  internalSetEnv(variables[i].name, NULL);
85  break;
86 
87  case writeenv_LONG:
88  if (curl_easy_getinfo(curl, variables[i].id, &longinfo) == CURLE_OK) {
89  sprintf(numtext, "%5ld", longinfo);
90  internalSetEnv(variables[i].name, numtext);
91  }
92  else
93  internalSetEnv(variables[i].name, NULL);
94  break;
95  case writeenv_DOUBLE:
96  if (curl_easy_getinfo(curl, variables[i].id, &doubleinfo) == CURLE_OK) {
97  sprintf(numtext, "%6.2f", doubleinfo);
98  internalSetEnv(variables[i].name, numtext);
99  }
100  else
101  internalSetEnv(variables[i].name, NULL);
102  break;
103  }
104  }
105 
106  return;
107 }
108 
109 #endif
CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info,...)
Definition: easy.c:299
GLsizei const GLfloat * value
Definition: glext.h:3614
GLenum GLsizei const GLvoid * string
Definition: glext.h:3472
CURLINFO
Definition: curl.h:1104
GLuint GLuint GLsizei GLenum type
Definition: glext.h:2845
int i
Definition: process.py:33
#define NULL
Definition: Lib.h:88
void ourWriteEnv(CURL *curl)
Definition: curl.h:210
GLuint id
Definition: glext.h:3103
const GLcharARB * name
Definition: glext.h:3629
void CURL
Definition: types.h:25
int sprintf(idStr &string, const char *fmt,...)
Definition: Str.cpp:1528