summaryrefslogtreecommitdiffabout
path: root/src
Side-by-side diff
Diffstat (limited to 'src') (more/less context) (ignore whitespace changes)
-rw-r--r--src/Makefile.am12
-rw-r--r--src/fastcgi.cc1
-rw-r--r--src/plaincgi.cc27
3 files changed, 38 insertions, 2 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index 8a5447b..e5c6778 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,4 +1,8 @@
-lib_LTLIBRARIES = libkingate.la libkingate-fcgi.la
+lib_LTLIBRARIES = libkingate.la libkingate-plaincgi.la
+
+if HAVE_FCGI
+lib_LTLIBRARIES += libkingate-fcgi.la
+endif
INCLUDES = -I${top_srcdir}/include
AM_CXXFLAGS = ${KONFORKA_CFLAGS}
@@ -13,3 +17,9 @@ libkingate_la_LDFLAGS = -version-info 1:0:0
libkingate_fcgi_la_SOURCES = \
fastcgi.cc
libkingate_fcgi_la_LDFLAGS = -version-info 1:0:0
+
+libkingate_plaincgi_la_SOURCES = \
+ plaincgi.cc
+libkingate_plaincgi_la_LDFLAGS = -version-info 1:0:0
+
+EXTRA_DIST = ${libkingate_fcgi_la_SOURCES}
diff --git a/src/fastcgi.cc b/src/fastcgi.cc
index 7484449..6285370 100644
--- a/src/fastcgi.cc
+++ b/src/fastcgi.cc
@@ -45,7 +45,6 @@ namespace kingate {
sbin.attach(request.in);
sbout.attach(request.out);
sberr.attach(request.err);
- metavars.clear(); // XXX: redundant.
for(char **p = request.envp; *p; p++) {
const char *e = strchr(*p,'=');
if(!e){
diff --git a/src/plaincgi.cc b/src/plaincgi.cc
new file mode 100644
index 0000000..6934748
--- a/dev/null
+++ b/src/plaincgi.cc
@@ -0,0 +1,27 @@
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include "kingate/plaincgi.h"
+#include "kingate/exception.h"
+
+namespace kingate {
+
+ plaincgi_interface::plaincgi_interface() {
+ for(char **p = environ; *p; p++) {
+ const char *e = strchr(*p,'=');
+ if(!e){
+ // XXX: check if we have it already?
+ metavars[*p] = string(0);
+ }else{
+ int l = e-*p; e++;
+ // XXX: check if we have it already?
+ metavars[string(*p,l)]=e;
+ }
+ }
+ }
+ plaincgi_interface::~plaincgi_interface() {
+ cout.flush();
+ cerr.flush();
+ }
+
+}