X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=errlog.c;h=55831379dcbb33b3612de611f7185b5c235471dc;hp=739736ce82b7ad64134bea03c06593f1084cbafd;hb=bd8c476f053258f68476b246c435ad09baae85ab;hpb=2f86c770ec87c33518b40e47e229ab8cd813853a diff --git a/errlog.c b/errlog.c index 739736ce..55831379 100644 --- a/errlog.c +++ b/errlog.c @@ -1,4 +1,4 @@ -const char errlog_rcs[] = "$Id: errlog.c,v 1.21 2001/10/25 03:40:47 david__schmidt Exp $"; +const char errlog_rcs[] = "$Id: errlog.c,v 1.25 2002/01/09 14:32:08 oes Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/errlog.c,v $ @@ -33,6 +33,25 @@ const char errlog_rcs[] = "$Id: errlog.c,v 1.21 2001/10/25 03:40:47 david__schmi * * Revisions : * $Log: errlog.c,v $ + * Revision 1.25 2002/01/09 14:32:08 oes + * Added support for gmtime_r and localtime_r. + * + * Revision 1.24 2001/12/30 14:07:32 steudten + * - Add signal handling (unix) + * - Add SIGHUP handler (unix) + * - Add creation of pidfile (unix) + * - Add action 'top' in rc file (RH) + * - Add entry 'SIGNALS' to manpage + * - Add exit message to logfile (unix) + * + * Revision 1.23 2001/11/07 00:02:13 steudten + * Add line number in error output for lineparsing for + * actionsfile and configfile. + * Special handling for CLF added. + * + * Revision 1.22 2001/11/05 23:43:05 steudten + * Add time+date to log files. + * * Revision 1.21 2001/10/25 03:40:47 david__schmidt * Change in porting tactics: OS/2's EMX porting layer doesn't allow multiple * threads to call select() simultaneously. So, it's time to do a real, live, @@ -153,6 +172,7 @@ const char errlog_rcs[] = "$Id: errlog.c,v 1.21 2001/10/25 03:40:47 david__schmi #include "config.h" +#include "miscutil.h" #include #include @@ -233,6 +253,10 @@ static void fatal_error(const char * error_message) fputs(error_message, stderr); #endif /* defined(_WIN32) && !defined(_WIN_CONSOLE) */ +#if defined(unix) + deletePidFile(); +#endif /* unix */ + exit(1); } @@ -263,6 +287,7 @@ void init_error_log(const char *prog_name, const char *logfname, int debuglevel) if ((logfp != NULL) && (logfp != stderr)) { + log_error(LOG_LEVEL_INFO, "(Re-)Open logfile %s", logfname ? logfname : "none"); fclose(logfp); } logfp = stderr; @@ -310,7 +335,7 @@ void log_error(int loglevel, char *fmt, ...) { va_list ap; char *outbuf= NULL; - char *outbuf_save = NULL; + static char *outbuf_save = NULL; char * src = fmt; int outc = 0; long this_thread = 1; /* was: pthread_t this_thread;*/ @@ -347,8 +372,12 @@ void log_error(int loglevel, char *fmt, ...) this_thread = ptib -> tib_ptib2 -> tib2_ultid; #endif /* def FEATURE_PTHREAD */ - outbuf_save = outbuf = (char*)malloc(BUFFER_SIZE); - assert(outbuf); + if ( !outbuf_save ) + { + outbuf_save = outbuf = (char*)malloc(BUFFER_SIZE); + assert(outbuf); + } + outbuf = outbuf_save; { /* @@ -358,10 +387,14 @@ void log_error(int loglevel, char *fmt, ...) * the %z field in strftime() */ time_t now; - struct tm *tm_now; - time (&now); - tm_now = localtime (&now); - strftime (outbuf, BUFFER_SIZE-6, "%b %d %H:%M:%S ", tm_now); + struct tm tm_now; + time (&now); +#ifdef HAVE_LOCALTIME_R + tm_now = *localtime_r(&now, &tm_now); +#else + tm_now = *localtime (&now); +#endif + strftime(outbuf, BUFFER_SIZE-6, "%b %d %H:%M:%S ", &tm_now); outbuf += strlen( outbuf ); } switch (loglevel) @@ -404,6 +437,7 @@ void log_error(int loglevel, char *fmt, ...) outc = sprintf(outbuf, "IJB(%ld) Gif-Deanimate: ", this_thread); break; case LOG_LEVEL_CLF: + outbuf = outbuf_save; outc = 0; outbuf[0] = '\0'; break; @@ -595,11 +629,22 @@ void log_error(int loglevel, char *fmt, ...) */ time_t now; struct tm *tm_now; - struct tm gmt; + struct tm gmt; +#ifdef HAVE_LOCALTIME_R + struct tm dummy; +#endif int days, hrs, mins; time (&now); - gmt = *gmtime (&now); +#ifdef HAVE_GMTIME_R + gmt = *gmtime_r(&now, &gmt); +#else + gmt = *gmtime(&now); +#endif +#ifdef HAVE_LOCALTIME_R + tm_now = localtime_r(&now, &dummy); +#else tm_now = localtime (&now); +#endif days = tm_now->tm_yday - gmt.tm_yday; hrs = ((days < -1 ? 24 : 1 < days ? -24 : days * 24) + tm_now->tm_hour - gmt.tm_hour); mins = hrs * 60 + tm_now->tm_min - gmt.tm_min;