--- parser3/src/targets/cgi/parser3.C 2003/07/24 11:31:25 1.218 +++ parser3/src/targets/cgi/parser3.C 2004/04/02 13:48:09 1.226 @@ -1,11 +1,11 @@ /** @file Parser: scripting and CGI main. - Copyright(c) 2001-2003 ArtLebedev Group (http://www.artlebedev.com) + Copyright(c) 2001-2004 ArtLebedev Group (http://www.artlebedev.com) Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char* IDENT_PARSER3_C="$Date: 2003/07/24 11:31:25 $"; +static const char * const IDENT_PARSER3_C="$Date: 2004/04/02 13:48:09 $"; #include "pa_config_includes.h" @@ -20,8 +20,6 @@ static const char* IDENT_PARSER3_C="$Dat #include "pa_socks.h" #include "pa_version.h" - - #ifdef WIN32 # include # include "getopt.h" @@ -35,6 +33,7 @@ static const char* IDENT_PARSER3_C="$Dat #define REDIRECT_PREFIX "REDIRECT_" #define PARSER_CONFIG_ENV_NAME "CGI_PARSER_CONFIG" +#define PARSER_LOG_ENV_NAME "CGI_PARSER_LOG" /// IIS refuses to read bigger chunks const size_t READ_POST_CHUNK_SIZE=0x400*0x400; // 1M @@ -59,7 +58,15 @@ static void log(const char* fmt, va_list bool opened=false; FILE *f=0; - if(config_filespec_cstr) { + const char* log_by_env=getenv(PARSER_LOG_ENV_NAME); + if(!log_by_env) + log_by_env=getenv(REDIRECT_PREFIX PARSER_LOG_ENV_NAME); + if(log_by_env) { + f=fopen(log_by_env, "at"); + opened=f!=0; + } + + if(!opened && config_filespec_cstr) { char beside_config_path[MAX_STRING]; strncpy(beside_config_path, config_filespec_cstr, MAX_STRING-1); beside_config_path[MAX_STRING-1]=0; if(!( @@ -241,12 +248,11 @@ static void full_file_spec(const char* f static void log_signal(const char* signal_name) { if(request_info) - SAPI::log(SAPI_info, "%s received while %s. uri=%s, method=%s, qs=%s, cl=%u", + SAPI::log(SAPI_info, "%s received while %s. uri=%s, method=%s, cl=%u", signal_name, request?"executing code":"reading data", request_info->uri, request_info->method, - request_info->query_string, request_info->content_length); else SAPI::log(SAPI_info, "%s received before or after processing request", @@ -279,7 +285,7 @@ main workhorse static void real_parser_handler(const char* filespec_to_process, const char* request_method, bool header_only) { // init socks - pa_init_socks(); + pa_socks_init(); // init global variables pa_globals_init(); @@ -385,8 +391,7 @@ static void real_parser_handler(const ch SAPI::die("Execution canceled"); // prepare to process request - Request request(SAPI_info, - request_info, + Request request(SAPI_info, request_info, cgi ? String::Language(String::L_HTML|String::L_OPTIMIZE_BIT) : String::L_AS_IS, true /* status_allowed */); @@ -427,8 +432,11 @@ static void real_parser_handler(const ch // no request [prevent signal handlers from accessing invalid memory] ::request=0; + // finalize global variables + pa_globals_done(); + // - pa_done_socks(); + pa_socks_done(); } #if _MSC_VER && !defined(_DEBUG) @@ -495,7 +503,7 @@ static void call_real_parser_handler__do static void usage(const char* program) { printf( - "Parser/%s Copyright(c) 2001-2003 ArtLebedev Group (http://www.artlebedev.com)\n" + "Parser/%s Copyright(c) 2001-2004 ArtLebedev Group (http://www.artlebedev.com)\n" "Author: Alexandr Petrosian (http://paf.design.ru)\n" "\n" "Usage: %s [options] file\n" @@ -511,6 +519,7 @@ static void usage(const char* program) { } int main(int argc, char *argv[]) { + //_asm int 3; GC_java_finalization=0; #ifndef PA_DEBUG_DISABLE_GC @@ -548,7 +557,7 @@ int main(int argc, char *argv[]) { #endif #ifdef _DEBUG - //_crtBreakAlloc=4042; + //_crtBreakAlloc=46; #endif argv0=argv[0];