X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=errlog.c;h=55831379dcbb33b3612de611f7185b5c235471dc;hp=38cab01892fe81d07d4de32a86dd4f8865467c89;hb=260ad9899c2ad02c0f584ed00b60b3e03987f7fa;hpb=e7f33c16b512f119f65800e85ba0beecfd3a1545 diff --git a/errlog.c b/errlog.c index 38cab018..55831379 100644 --- a/errlog.c +++ b/errlog.c @@ -1,4 +1,4 @@ -const char errlog_rcs[] = "$Id: errlog.c,v 1.23 2001/11/07 00:02:13 steudten 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,17 @@ const char errlog_rcs[] = "$Id: errlog.c,v 1.23 2001/11/07 00:02:13 steudten Exp * * 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. @@ -324,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;*/ @@ -361,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; { /* @@ -372,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) @@ -610,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;