summaryrefslogtreecommitdiffstats
path: root/cgi/cgihttpsscriptptr.c
diff options
context:
space:
mode:
authorSam Varshavchik2013-08-19 16:39:41 -0400
committerSam Varshavchik2013-08-25 14:43:51 -0400
commit9c45d9ad13fdf439d44d7443ae75da15ea0223ed (patch)
tree7a81a04cb51efb078ee350859a64be2ebc6b8813 /cgi/cgihttpsscriptptr.c
parenta9520698b770168d1f33d6301463bb70a19655ec (diff)
downloadcourier-libs-9c45d9ad13fdf439d44d7443ae75da15ea0223ed.tar.bz2
Initial checkin
Imported from subversion report, converted to git. Updated all paths in scripts and makefiles, reflecting the new directory hierarchy.
Diffstat (limited to 'cgi/cgihttpsscriptptr.c')
-rw-r--r--cgi/cgihttpsscriptptr.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/cgi/cgihttpsscriptptr.c b/cgi/cgihttpsscriptptr.c
new file mode 100644
index 0000000..93f5339
--- /dev/null
+++ b/cgi/cgihttpsscriptptr.c
@@ -0,0 +1,47 @@
+/*
+** Copyright 1998 - 2007 Double Precision, Inc.
+** See COPYING for distribution information.
+*/
+
+/*
+*/
+#include "cgi.h"
+
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+static char *scriptptr=0;
+extern void error(const char *);
+
+void cgihttpsscriptptr_init()
+{
+ /* Reinitialisation required when running as fastcgi */
+ if (scriptptr) {
+ free(scriptptr);
+ scriptptr=0;
+ }
+}
+
+const char *cgihttpsscriptptr()
+{
+ if (!scriptptr)
+ {
+ char *p=getenv("SCRIPT_NAME");
+ char *h=getenv("HTTP_HOST");
+ char *q;
+
+ if (!h) h="";
+ if (!p) p="";
+
+ q=malloc(strlen(p)+strlen(h)+sizeof("https://"));
+ if (!q) error("Out of memory.");
+ sprintf(q, "https:%s%s%s", (*h ? "//":""), h, p);
+ scriptptr=q;
+ }
+ return (scriptptr);
+}