On Tue, Nov 29, 2011 at 04:21:46PM +0000, Daniel P. Berrange wrote: > From: "Daniel P. Berrange" <berrange@xxxxxxxxxx> > > Use the new virTimeStringNowRaw() API for generating log timestamps > in an async signal safe manner > > * src/util/logging.c: Use virTimeStringNowRaw > --- > src/util/logging.c | 28 ++++------------------------ > 1 files changed, 4 insertions(+), 24 deletions(-) > > diff --git a/src/util/logging.c b/src/util/logging.c > index 17c7e84..f550503 100644 > --- a/src/util/logging.c > +++ b/src/util/logging.c > @@ -43,6 +43,7 @@ > #include "buf.h" > #include "threads.h" > #include "virfile.h" > +#include "virtime.h" > > #define VIR_FROM_THIS VIR_FROM_NONE > > @@ -618,26 +619,6 @@ cleanup: > return ret; > } > > -static char * > -virLogFormatTimestamp(void) > -{ > - struct timeval cur_time; > - struct tm time_info; > - char *str = NULL; > - > - gettimeofday(&cur_time, NULL); > - localtime_r(&cur_time.tv_sec, &time_info); > - time_info.tm_year += 1900; > - time_info.tm_mon += 1; > - > - if (virAsprintf(&str, "%4d-%02d-%02d %02d:%02d:%02d.%03d", > - time_info.tm_year, time_info.tm_mon, time_info.tm_mday, > - time_info.tm_hour, time_info.tm_min, time_info.tm_sec, > - (int) (cur_time.tv_usec / 1000)) < 0) > - return NULL; > - > - return str; > -} > > static int > virLogFormatString(char **msg, > @@ -705,7 +686,7 @@ void virLogMessage(const char *category, int priority, const char *funcname, > static bool logVersionStderr = true; > char *str = NULL; > char *msg = NULL; > - char *timestamp = NULL; > + char timestamp[VIR_TIME_STRING_BUFLEN]; Okay, I had to go back to the definition to make sure it includes the terminating 0, maybe fix the comment in [1/3] of VIR_TIME_STRING_BUFLEN to use NUL and not NULL as the later would be the size of a pointer ;-) > int fprio, i, ret; > int saved_errno = errno; > int emit = 1; > @@ -746,8 +727,8 @@ void virLogMessage(const char *category, int priority, const char *funcname, > if (ret < 0) > goto cleanup; > > - if (!(timestamp = virLogFormatTimestamp())) > - goto cleanup; > + if (virTimeStringNowRaw(timestamp) < 0) > + timestamp[0] = '\0'; > > /* > * Log based on defaults, first store in the history buffer, > @@ -799,7 +780,6 @@ void virLogMessage(const char *category, int priority, const char *funcname, > > cleanup: > VIR_FREE(msg); > - VIR_FREE(timestamp); > errno = saved_errno; > } > ACK Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@xxxxxxxxxxxx | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list