Added writeenv.c and writeenv.h for RISCOS usage (and others?)
authorDaniel Stenberg <daniel@haxx.se>
Mon, 8 Apr 2002 22:40:38 +0000 (22:40 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 8 Apr 2002 22:40:38 +0000 (22:40 +0000)
src/Makefile.am
src/writeenv.c [new file with mode: 0644]
src/writeenv.h [new file with mode: 0644]

index 9813f9b20ddf78ff82c8ab33dab261f38dab8790..82433a659bcd0580ac97cae322e92496bf193f18 100644 (file)
@@ -16,9 +16,7 @@ bin_PROGRAMS = curl #memtest
 
 curl_SOURCES = main.c hugehelp.c urlglob.c writeout.c setup.h \
        config-win32.h config-mac.h config-vms.h config-riscos.h \
-       urlglob.h \
-       version.h \
-       writeout.h
+       urlglob.h version.h writeout.h writeenv.c writeenv.h
 
 curl_LDADD = ../lib/libcurl.la
 curl_DEPENDENCIES = ../lib/libcurl.la
@@ -27,7 +25,7 @@ CLEANFILES = hugehelp.c
 NROFF=@NROFF@
 
 EXTRA_DIST = mkhelp.pl curlmsg.msg \
-       Makefile.vc6 Makefile.b32 Makefile.m32 config.h.in \
+       Makefile.vc6 Makefile.b32 Makefile.m32 Makefile.riscos config.h.in \
        macos/curl.mcp.xml.sit.hqx \
        macos/MACINSTALL.TXT \
        macos/src/curl_GUSIConfig.cpp \
diff --git a/src/writeenv.c b/src/writeenv.c
new file mode 100644 (file)
index 0000000..a111847
--- /dev/null
@@ -0,0 +1,105 @@
+/*****************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 2002, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * In order to be useful for every potential user, curl and libcurl are
+ * dual-licensed under the MPL and the MIT/X-derivate licenses.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the MPL or the MIT/X-derivate
+ * licenses. You may pick one of these licenses.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ *****************************************************************************/
+
+#include "setup.h"
+
+#include <curl/curl.h>
+
+#include "writeout.h"
+
+#ifdef __riscos__
+#include <kernel.h>
+#endif
+
+struct
+{
+  const char * name;
+  CURLINFO id;
+  enum {
+    writeenv_DOUBLE,
+    writeenv_LONG,
+    writeenv_STRING
+  } type;
+} variables[14] =
+{
+  {"curl_url_effective", CURLINFO_EFFECTIVE_URL, writeenv_STRING},
+  {"curl_http_code", CURLINFO_HTTP_CODE, writeenv_LONG},
+  {"curl_time_total", CURLINFO_TOTAL_TIME, writeenv_DOUBLE},
+  {"curl_time_namelookup", CURLINFO_NAMELOOKUP_TIME, writeenv_DOUBLE},
+  {"curl_time_connect", CURLINFO_CONNECT_TIME, writeenv_DOUBLE},
+  {"curl_time_pretransfer", CURLINFO_PRETRANSFER_TIME, writeenv_DOUBLE},
+  {"curl_time_starttransfer", CURLINFO_STARTTRANSFER_TIME, writeenv_DOUBLE},
+  {"curl_size_header", CURLINFO_HEADER_SIZE, writeenv_LONG},
+  {"curl_size_request", CURLINFO_REQUEST_SIZE, writeenv_LONG},
+  {"curl_size_download", CURLINFO_SIZE_DOWNLOAD, writeenv_DOUBLE},
+  {"curl_size_upload", CURLINFO_SIZE_UPLOAD, writeenv_DOUBLE},
+  {"curl_speed_download", CURLINFO_SPEED_DOWNLOAD, writeenv_DOUBLE},
+  {"curl_speed_upload", CURLINFO_SPEED_UPLOAD, writeenv_DOUBLE},
+  {NULL, 0}
+ };
+
+static void internalSetEnv(const char * name, char * value)
+{
+  /* Add your OS-specific code here. */
+#ifdef __riscos__
+  _kernel_setenv(name, value);
+#endif
+  return;
+}
+
+void ourWriteEnv(CURL *curl)
+{
+  unsigned int i;
+  char *string, numtext[10];
+  long longinfo;
+  double doubleinfo;
+  
+  for (i=0; variables[i].name; i++) {
+    switch (variables[i].type) {
+    case writeenv_STRING:
+      if (curl_easy_getinfo(curl, variables[i].id, &string) == CURLE_OK)
+        internalSetEnv(variables[i].name, string);
+      else
+        internalSetEnv(variables[i].name, NULL);
+      break;
+
+    case writeenv_LONG:
+      if (curl_easy_getinfo(curl, variables[i].id, &longinfo) == CURLE_OK) {
+        sprintf(numtext, "%5i", longinfo);
+        internalSetEnv(variables[i].name, numtext);
+      }
+      else
+        internalSetEnv(variables[i].name, NULL);
+      break;
+    case writeenv_DOUBLE:
+      if (curl_easy_getinfo(curl, variables[i].id, &doubleinfo) == CURLE_OK) {
+        sprintf(numtext, "%6.2f", doubleinfo);
+        internalSetEnv(variables[i].name, numtext);
+      }
+      else
+        internalSetEnv(variables[i].name, NULL);
+      break;
+    }
+  }
+
+  return;
+}
diff --git a/src/writeenv.h b/src/writeenv.h
new file mode 100644 (file)
index 0000000..b46e11e
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef __WRITEENV_H
+#define __WRITEENV_H
+/*****************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 2002, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * In order to be useful for every potential user, curl and libcurl are
+ * dual-licensed under the MPL and the MIT/X-derivate licenses.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the MPL or the MIT/X-derivate
+ * licenses. You may pick one of these licenses.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ *****************************************************************************/
+
+void ourWriteEnv(CURL *curl);
+
+#endif