summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--include/sitecing/acomponent.h1
-rw-r--r--lib/sitecing_interface_cgi.cc4
-rw-r--r--src/Makefile.am2
3 files changed, 5 insertions, 2 deletions
diff --git a/include/sitecing/acomponent.h b/include/sitecing/acomponent.h
index 160e854..461f8a6 100644
--- a/include/sitecing/acomponent.h
+++ b/include/sitecing/acomponent.h
@@ -1,19 +1,20 @@
1#ifndef __SITECING_ACOMPONENT_H 1#ifndef __SITECING_ACOMPONENT_H
2#define __SITECING_ACOMPONENT_H 2#define __SITECING_ACOMPONENT_H
3 3
4#include <cstdarg>
4#include "sitecing/sitecing_interface.h" 5#include "sitecing/sitecing_interface.h"
5 6
6/** 7/**
7 * @file 8 * @file
8 * @brief The acomponent class declaration. 9 * @brief The acomponent class declaration.
9 */ 10 */
10 11
11namespace sitecing { 12namespace sitecing {
12 13
13 /** 14 /**
14 * An abstract base class for sitecing components. 15 * An abstract base class for sitecing components.
15 */ 16 */
16 class acomponent { 17 class acomponent {
17 public: 18 public:
18 /** 19 /**
19 * Pointer to the interface object, used to communicate with the 20 * Pointer to the interface object, used to communicate with the
diff --git a/lib/sitecing_interface_cgi.cc b/lib/sitecing_interface_cgi.cc
index 59ae25a..1acb23c 100644
--- a/lib/sitecing_interface_cgi.cc
+++ b/lib/sitecing_interface_cgi.cc
@@ -8,33 +8,35 @@ namespace sitecing {
8 } 8 }
9 9
10 void sitecing_interface_cgi::prepare(kingate::cgi_gateway *cg) { 10 void sitecing_interface_cgi::prepare(kingate::cgi_gateway *cg) {
11 cgigw = cg; 11 cgigw = cg;
12 headers.clear(); 12 headers.clear();
13 headers["Content-Type"] = "text/html"; 13 headers["Content-Type"] = "text/html";
14 prebuffer.str(""); 14 prebuffer.str("");
15 headers_flushed = false; 15 headers_flushed = false;
16 set_buffering(true); 16 set_buffering(true);
17 } 17 }
18 18
19 void sitecing_interface_cgi::flush(bool keep_buffering) { 19 void sitecing_interface_cgi::flush(bool keep_buffering) {
20 assert(cgigw); 20 assert(cgigw);
21 flush_headers(); 21 flush_headers();
22 if(is_buffering()) { 22 if(is_buffering()) {
23 streampos count = prebuffer.pubseekoff(0,ios_base::cur,ios_base::out); 23 streampos count = prebuffer.pubseekoff(0,ios_base::cur,ios_base::out);
24 cgigw->out().write(prebuffer.str().c_str(),count); 24 if(count>0) {
25 cgigw->out().write(prebuffer.str().c_str(),count);
26 }
25 prebuffer.str(""); 27 prebuffer.str("");
26 } 28 }
27 cgigw->out().flush(); 29 cgigw->out().flush();
28 set_buffering(keep_buffering); 30 set_buffering(keep_buffering);
29 } 31 }
30 32
31 void sitecing_interface_cgi::set_buffering(bool do_buffer) { 33 void sitecing_interface_cgi::set_buffering(bool do_buffer) {
32 if(!do_buffer) 34 if(!do_buffer)
33 flush_headers(); 35 flush_headers();
34 outs.rdbuf(do_buffer?&prebuffer:cgigw->out().rdbuf()); 36 outs.rdbuf(do_buffer?&prebuffer:cgigw->out().rdbuf());
35 } 37 }
36 38
37 bool sitecing_interface_cgi::is_buffering() { 39 bool sitecing_interface_cgi::is_buffering() {
38 return outs.rdbuf()==&prebuffer; 40 return outs.rdbuf()==&prebuffer;
39 } 41 }
40 42
diff --git a/src/Makefile.am b/src/Makefile.am
index 2ec650d..e6fb31a 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -21,17 +21,17 @@ sitecing_fastcgi_DEPENDENCIES = ${top_builddir}/lib/libsitecing.la
21sitecing_plaincgi_SOURCES = sitecing-plaincgi.cc \ 21sitecing_plaincgi_SOURCES = sitecing-plaincgi.cc \
22 COPYING.cc 22 COPYING.cc
23sitecing_plaincgi_LDFLAGS = -rdynamic 23sitecing_plaincgi_LDFLAGS = -rdynamic
24sitecing_plaincgi_LDADD = ${KINGATE_PLAINCGI_LIBS} 24sitecing_plaincgi_LDADD = ${KINGATE_PLAINCGI_LIBS}
25sitecing_plaincgi_DEPENDENCIES = ${top_builddir}/lib/libsitecing.la 25sitecing_plaincgi_DEPENDENCIES = ${top_builddir}/lib/libsitecing.la
26 26
27sitecing_build_SOURCES = sitecing-build.cc \ 27sitecing_build_SOURCES = sitecing-build.cc \
28 COPYING.cc 28 COPYING.cc
29sitecing_build_LDADD = ${KINGATE_LIBS} 29sitecing_build_LDADD = ${KINGATE_LIBS}
30sitecing_build_DEPENDENCIES = ${top_builddir}/lib/libsitecing.la 30sitecing_build_DEPENDENCIES = ${top_builddir}/lib/libsitecing.la
31 31
32COPYING.cc: ${top_srcdir}/COPYING 32COPYING.cc: ${top_srcdir}/COPYING
33 echo "const char * COPYING =" >$@ || (rm $@;exit 1) 33 echo "const char * COPYING =" >$@ || (rm $@;exit 1)
34 sed 's/"/\\"/g' $< | sed 's/^/\"/' | sed 's/$$/\\n\"/' >>$@ || (rm $@;exit 1) 34 sed 's/"/\\"/g' $< | sed 's/^/\"/' | sed 's/$$/\\n\"/' >>$@ || (rm $@;exit 1)
35 echo ";" >>$@ || (rm $@;exit 1) 35 echo ";" >>$@ || (rm $@;exit 1)
36 36
37EXTRA_DIST = ${sitecing_fastcgi_SOURCES} ${sitecing_PLAINCGI_SOURCES} 37EXTRA_DIST = ${sitecing_fastcgi_SOURCES} ${sitecing_plaincgi_SOURCES}