# include # include /************************************************************************/ /* */ /* Echo some information on a cgi request. */ /* */ /************************************************************************/ void utilCgiEchoTaggedValueList( TaggedValueList * tvl, const char * label, SimpleOutputStream * sos ) { int i; const TaggedValue * tv; sioOutPutString( "\r\n", sos ); if ( label && label[0] ) { sioOutPutString( "\r\n", sos ); } tv= tvl->tvlValues; for ( i= 0; i < tvl->tvlCount; tv++, i++ ) { sioOutPutString( "\r\n\r\n", sos ); } sioOutPutString( "
", sos ); sioOutPutString( label, sos ); sioOutPutString( "
", sos ); if ( tv->tvName ) { sioOutPutString( tv->tvName, sos ); } else{ sioOutPutString( " ", sos ); } sioOutPutString( "", sos ); if ( tv->tvValue ) { sioOutPutString( tv->tvValue, sos ); } else{ sioOutPutString( " ", sos ); } sioOutPutString( "
\r\n", sos ); return; } void utilCgiEchoRequest( const CGIRequest * cgir, SimpleOutputStream * sos ) { if ( cgir->cgirHeaderValues ) { utilCgiEchoTaggedValueList( cgir->cgirHeaderValues, "Headers", sos ); } if ( cgir->cgirEnvironmentValues ) { utilCgiEchoTaggedValueList( cgir->cgirEnvironmentValues, "Environment", sos ); } if ( cgir->cgirQueryValues ) { utilCgiEchoTaggedValueList( cgir->cgirQueryValues, "Query", sos ); } if ( cgir->cgirCookies ) { utilCgiEchoTaggedValueList( cgir->cgirCookies, "Cookies", sos ); } return; } # ifdef EXAMPLE_CODE int main( int argc, char ** argv ) { int rval= 0; CGIRequest * cgir= (CGIRequest *)0; SimpleOutputStream * sos= (SimpleOutputStream *)0; cgir= appCgiInGetRequest(); if ( ! cgir ) { XDEB(cgir); rval= -1; goto ready; } sos= sioOutStdoutOpen(); if ( ! sos ) { XDEB(sos); rval= -1; goto ready; } sioOutPutString( "Content-Type: text/html\r\n", sos ); sioOutPutString( "\r\n", sos ); utilCgiEchoRequest( cgir, sos ); ready: if ( sos ) { sioOutClose( sos ); } if ( cgir ) { appCgiInFreeRequest( cgir ); } return rval; } # endif