X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=errlog.c;h=c6c9b28f8f62597e02a4dbc5e90649920888070b;hp=58d1a84dbc46fa92650bace34cb6f095da6d1b2d;hb=692aa2e4bfec53ecab5177be3c84ae2c9576d0c3;hpb=3a10f21a1f641f593e9dcd8c9b7c21effcf67114 diff --git a/errlog.c b/errlog.c index 58d1a84d..c6c9b28f 100644 --- a/errlog.c +++ b/errlog.c @@ -1,4 +1,4 @@ -const char errlog_rcs[] = "$Id: errlog.c,v 1.58 2007/10/28 19:04:21 fabiankeil Exp $"; +const char errlog_rcs[] = "$Id: errlog.c,v 1.62 2007/11/30 15:33:46 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/errlog.c,v $ @@ -33,6 +33,22 @@ const char errlog_rcs[] = "$Id: errlog.c,v 1.58 2007/10/28 19:04:21 fabiankeil E * * Revisions : * $Log: errlog.c,v $ + * Revision 1.62 2007/11/30 15:33:46 fabiankeil + * Unbreak LOG_LEVEL_FATAL. It wasn't fatal with logging disabled + * and on mingw32 fatal log messages didn't end up in the log file. + * + * Revision 1.61 2007/11/04 19:03:01 fabiankeil + * Fix another deadlock Hal spotted and that mysteriously didn't affect FreeBSD. + * + * Revision 1.60 2007/11/03 19:03:31 fabiankeil + * - Prevent the Windows GUI from showing the version two times in a row. + * - Stop using the imperative in the "(Re-)Open logfile" message. + * - Ditch the "Switching to daemon mode" message as the detection + * whether or not we're already in daemon mode doesn't actually work. + * + * Revision 1.59 2007/11/01 12:50:56 fabiankeil + * Here's looking at you, deadlock. + * * Revision 1.58 2007/10/28 19:04:21 fabiankeil * Don't mention daemon mode in "Logging disabled" message. Some * platforms call it differently and it's not really relevant anyway. @@ -422,11 +438,13 @@ static void fatal_error(const char * error_message) /* Cleanup - remove taskbar icon etc. */ TermLogWindow(); - -#else /* if !defined(_WIN32) || defined(_WIN_CONSOLE) */ - fputs(error_message, logfp); #endif /* defined(_WIN32) && !defined(_WIN_CONSOLE) */ + if (logfp != NULL) + { + fputs(error_message, logfp); + } + #if defined(unix) if (pidfile) { @@ -519,14 +537,15 @@ void set_debug_level(int debug_level) *********************************************************************/ void disable_logging(void) { - lock_logfile(); if (logfp != NULL) { - log_error(LOG_LEVEL_INFO, "No logfile configured. Logging disabled."); + log_error(LOG_LEVEL_INFO, + "No logfile configured. Please enable it before reporting any problems."); + lock_logfile(); fclose(logfp); logfp = NULL; + unlock_logfile(); } - unlock_logfile(); } @@ -554,14 +573,9 @@ void init_error_log(const char *prog_name, const char *logfname) lock_loginit(); - if (logfp == stderr) - { - log_error(LOG_LEVEL_INFO, - "Switching to daemon mode. Log messages will be written to: %s", logfname); - } - else if (logfp != NULL) + if (logfp != NULL) { - log_error(LOG_LEVEL_INFO, "(Re-)Open logfile \'%s\'", logfname ? logfname : "none"); + log_error(LOG_LEVEL_INFO, "(Re-)Opening logfile \'%s\'", logfname); } /* set the designated log file */ @@ -582,7 +596,18 @@ void init_error_log(const char *prog_name, const char *logfname) logfp = fp; unlock_logfile(); +#if !defined(_WIN32) + /* + * Prevent the Windows GUI from showing the version two + * times in a row on startup. It already displayed the show_version() + * call from init_log_module() that other systems write to stderr. + * + * This means mingw32 users will never see the version in their + * log file, but I assume they wouldn't look for it there anyway + * and simply use the "Help/About Privoxy" menu. + */ show_version(prog_name); +#endif /* def unix */ unlock_loginit(); @@ -885,7 +910,11 @@ void log_error(int loglevel, const char *fmt, ...) * settings and that logging is enabled. * Bail out otherwise. */ - if ((0 == (loglevel & debug)) || (logfp == NULL)) + if ((0 == (loglevel & debug)) +#ifndef _WIN32 + || (logfp == NULL) +#endif + ) { return; } @@ -904,9 +933,6 @@ void log_error(int loglevel, const char *fmt, ...) snprintf(tempbuf, sizeof(tempbuf), "%s Privoxy(%08lx) Fatal error: log_error() failed to allocate buffer memory.\n" "\nExiting.", timestamp, thread_id); - assert(NULL != logfp); - fputs(tempbuf, logfp); - unlock_logfile(); fatal_error(tempbuf); /* Exit */ } } @@ -1124,15 +1150,21 @@ void log_error(int loglevel, const char *fmt, ...) loglevel = LOG_LEVEL_FATAL; } - assert(NULL != logfp); + assert( +#ifndef _WIN32 + (NULL != logfp) || +#endif + (loglevel & debug)); if (loglevel == LOG_LEVEL_FATAL) { fatal_error(outbuf_save); /* Never get here */ } - fputs(outbuf_save, logfp); - + if (logfp != NULL) + { + fputs(outbuf_save, logfp); + } unlock_logfile(); #if defined(_WIN32) && !defined(_WIN_CONSOLE)