41 virtual int putStr(
const char* msg,
int len ) = 0;
45 virtual int putS(
const char* msg ) = 0;
49 virtual int printf(
const char* msg ) = 0;
52 virtual int flush() = 0;
65 static const unsigned int bufsize = 65536;
68 void cpy2buf(
const char* msg,
size_t len ){
69 if( sz+len > bufsize ) buffer = (
char*) realloc( buffer, sz+len );
70 memcpy( &buffer[sz], msg, len );
83 buffer = (
char*) malloc(bufsize);
90 int putStr(
const char* msg,
int len ){
92 return FCGX_PutStr( msg, len, out );
94 int putS(
const char* msg ){
95 cpy2buf( msg, strlen(msg) );
96 return FCGX_PutS( msg, out );
98 int printf(
const char* msg ){
99 cpy2buf( msg, strlen(msg) );
100 return FCGX_FPrintF( out, msg );
103 return FCGX_FFlush( out );
121 int putStr(
const char* msg,
int len ){
122 return fwrite( (
void*) msg,
sizeof(
char), len, out );
124 int putS(
const char* msg ){
125 return fputs( msg, out );
127 int printf(
const char* msg ){
128 return fprintf( out,
"%s", msg );
131 return fflush( out );