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]

Reply via email to