Author: rjung Date: Wed Jul 25 01:17:35 2007 New Revision: 559348 URL: http://svn.apache.org/viewvc?view=rev&rev=559348 Log: Revert some optimizations from r559264. Those were not thread safe. Kept renaming constants and smaller buffer.
Modified: tomcat/connectors/trunk/jk/native/common/jk_logger.h tomcat/connectors/trunk/jk/native/common/jk_util.c tomcat/connectors/trunk/jk/native/common/jk_util.h Modified: tomcat/connectors/trunk/jk/native/common/jk_logger.h URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_logger.h?view=diff&rev=559348&r1=559347&r2=559348 ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_logger.h (original) +++ tomcat/connectors/trunk/jk/native/common/jk_logger.h Wed Jul 25 01:17:35 2007 @@ -36,11 +36,12 @@ { void *logger_private; int level; - char *log_fmt; /* the configured timestamp format for logging */ - char *log_fmt_subsec; /* like log_fmt, but milli/micro seconds - marker replaced, because strftime() doesn't handle those */ - char *log_fmt_offset; /* at which position should we insert */ - int log_fmt_type; /* do we want milli or microseconds */ + const char *log_fmt; /* the configured timestamp format for logging */ + const char *log_fmt_subsec; /* like log_fmt, but milli/micro seconds + marker replaced, because strftime() doesn't handle those */ + int log_fmt_offset; /* at which position should we insert */ + int log_fmt_type; /* do we want milli or microseconds */ + int log_fmt_size; /* how long is this format string */ int (JK_METHOD * log) (jk_logger_t *l, int level, int used, char *what); Modified: tomcat/connectors/trunk/jk/native/common/jk_util.c URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_util.c?view=diff&rev=559348&r1=559347&r2=559348 ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_util.c (original) +++ tomcat/connectors/trunk/jk/native/common/jk_util.c Wed Jul 25 01:17:35 2007 @@ -350,7 +350,7 @@ #endif } -void jk_set_time_fmt(jk_logger_t *l, char *jk_log_fmt) +void jk_set_time_fmt(jk_logger_t *l, const char *jk_log_fmt) { if (l) { char *s; @@ -365,7 +365,8 @@ #endif } l->log_fmt_type = JK_TIME_SUBSEC_NONE; - l->log_fmt_offset = NULL; + l->log_fmt_offset = 0; + l->log_fmt_size = 0; l->log_fmt_subsec = jk_log_fmt; l->log_fmt = jk_log_fmt; @@ -377,7 +378,7 @@ int len = strlen(JK_TIME_PATTERN_MILLI); l->log_fmt_type = JK_TIME_SUBSEC_MILLI; - l->log_fmt_offset = fmt + offset; + l->log_fmt_offset = offset; strncpy(fmt, log_fmt_safe, offset); strncpy(fmt + offset, JK_TIME_PATTERN_MILLI, len); strncpy(fmt + offset + len, @@ -385,13 +386,14 @@ JK_TIME_MAX_SIZE - offset - len); fmt[JK_TIME_MAX_SIZE-1] = '\0'; l->log_fmt_subsec = fmt; + l->log_fmt_size = strlen(fmt); } else if ( (s = strstr(log_fmt_safe, JK_TIME_CONV_MICRO)) ) { int offset = s - log_fmt_safe; int len = strlen(JK_TIME_PATTERN_MICRO); l->log_fmt_type = JK_TIME_SUBSEC_MICRO; - l->log_fmt_offset = fmt + offset; + l->log_fmt_offset = offset; strncpy(fmt, log_fmt_safe, offset); strncpy(fmt + offset, JK_TIME_PATTERN_MICRO, len); strncpy(fmt + offset + len, @@ -399,6 +401,7 @@ JK_TIME_MAX_SIZE - offset - len); fmt[JK_TIME_MAX_SIZE-1] = '\0'; l->log_fmt_subsec = fmt; + l->log_fmt_size = strlen(fmt); } } } @@ -409,11 +412,14 @@ time_t t; struct tm *tms; int done; + char log_fmt[JK_TIME_MAX_SIZE]; if ( !l || !l->log_fmt ) { return 0; } + log_fmt[0] = '\0'; + #ifndef NO_GETTIMEOFDAY if ( l->log_fmt_type != JK_TIME_SUBSEC_NONE ) { struct timeval tv; @@ -421,13 +427,14 @@ if ( rc == 0 ) { char subsec[7]; t = tv.tv_sec; + strncpy(log_fmt, l->log_fmt_subsec, l->log_fmt_size + 1); if ( l->log_fmt_type == JK_TIME_SUBSEC_MILLI ) { sprintf(subsec, "%03d", (int)(tv.tv_usec/1000)); - strncpy(l->log_fmt_offset, subsec, 3); + strncpy(log_fmt + l->log_fmt_offset, subsec, 3); } else if ( l->log_fmt_type == JK_TIME_SUBSEC_MICRO ) { sprintf(subsec, "%06d", (int)(tv.tv_usec)); - strncpy(l->log_fmt_offset, subsec, 6); + strncpy(log_fmt + l->log_fmt_offset, subsec, 6); } } else { @@ -441,15 +448,10 @@ t = time(NULL); #endif tms = localtime(&t); - done = (int)strftime(str, len, l->log_fmt_subsec, tms); -#ifndef NO_GETTIMEOFDAY - if ( l->log_fmt_type == JK_TIME_SUBSEC_MILLI ) { - strncpy(l->log_fmt_offset, JK_TIME_PATTERN_MILLI, 3); - } - else if ( l->log_fmt_type == JK_TIME_SUBSEC_MICRO ) { - strncpy(l->log_fmt_offset, JK_TIME_PATTERN_MICRO, 6); - } -#endif + if (log_fmt[0]) + done = (int)strftime(str, len, log_fmt, tms); + else + done = (int)strftime(str, len, l->log_fmt, tms); return done; } Modified: tomcat/connectors/trunk/jk/native/common/jk_util.h URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_util.h?view=diff&rev=559348&r1=559347&r2=559348 ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_util.h (original) +++ tomcat/connectors/trunk/jk/native/common/jk_util.h Wed Jul 25 01:17:35 2007 @@ -39,7 +39,7 @@ void jk_sleep(int ms); -void jk_set_time_fmt(jk_logger_t *l, char *jk_log_fmt); +void jk_set_time_fmt(jk_logger_t *l, const char *jk_log_fmt); int jk_parse_log_level(const char *level); --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]