diff options
-rw-r--r-- | CHANGES | 2 | ||||
-rw-r--r-- | include/util_time.h | 7 | ||||
-rw-r--r-- | server/log.c | 2 | ||||
-rw-r--r-- | server/util_time.c | 45 |
4 files changed, 55 insertions, 1 deletions
@@ -1,5 +1,7 @@ Changes with Apache 2.0.34-dev + *) Performance improvement for the error logger [Brian Pane] + *) Change configure so that Solaris 8 and above have SINGLE_LISTEN_UNSERIALIZED_ACCEPT defined by default. according to sun people solaris 8+ doesn't have a thundering diff --git a/include/util_time.h b/include/util_time.h index d595170716..1852f89fe5 100644 --- a/include/util_time.h +++ b/include/util_time.h @@ -102,6 +102,13 @@ AP_DECLARE(apr_status_t) ap_explode_recent_gmt(apr_time_exp_t *tm, apr_time_t t); +/** + * format a recent timestamp in the ctime() format. + * @param date_str String to write to. + * @param t the time to convert + */ +AP_DECLARE(apr_status_t) ap_recent_ctime(char *date_str, apr_time_t t); + #ifdef __cplusplus } #endif diff --git a/server/log.c b/server/log.c index 5198f7003e..2e9488c7cd 100644 --- a/server/log.c +++ b/server/log.c @@ -409,7 +409,7 @@ static void log_error_core(const char *file, int line, int level, if (logf && ((level & APLOG_STARTUP) != APLOG_STARTUP)) { errstr[0] = '['; - apr_ctime(errstr + 1, apr_time_now()); + ap_recent_ctime(errstr + 1, apr_time_now()); errstr[1 + APR_CTIME_LEN - 1] = ']'; errstr[1 + APR_CTIME_LEN ] = ' '; len = 1 + APR_CTIME_LEN + 1; diff --git a/server/util_time.c b/server/util_time.c index 1b2988d163..5b33e3ff4e 100644 --- a/server/util_time.c +++ b/server/util_time.c @@ -173,3 +173,48 @@ AP_DECLARE(apr_status_t) ap_explode_recent_gmt(apr_time_exp_t * tm, { return cached_explode(tm, t, exploded_cache_gmt, 1); } + +AP_DECLARE(apr_status_t) ap_recent_ctime(char *date_str, apr_time_t t) +{ + /* ### This code is a clone of apr_ctime(), except that it + * uses ap_explode_recent_localtime() instead of apr_explode_localtime(). + */ + apr_time_exp_t xt; + const char *s; + int real_year; + + /* example: "Wed Jun 30 21:49:08 1993" */ + /* 123456789012345678901234 */ + + ap_explode_recent_localtime(&xt, t); + s = &apr_day_snames[xt.tm_wday][0]; + *date_str++ = *s++; + *date_str++ = *s++; + *date_str++ = *s++; + *date_str++ = ' '; + s = &apr_month_snames[xt.tm_mon][0]; + *date_str++ = *s++; + *date_str++ = *s++; + *date_str++ = *s++; + *date_str++ = ' '; + *date_str++ = xt.tm_mday / 10 + '0'; + *date_str++ = xt.tm_mday % 10 + '0'; + *date_str++ = ' '; + *date_str++ = xt.tm_hour / 10 + '0'; + *date_str++ = xt.tm_hour % 10 + '0'; + *date_str++ = ':'; + *date_str++ = xt.tm_min / 10 + '0'; + *date_str++ = xt.tm_min % 10 + '0'; + *date_str++ = ':'; + *date_str++ = xt.tm_sec / 10 + '0'; + *date_str++ = xt.tm_sec % 10 + '0'; + *date_str++ = ' '; + real_year = 1900 + xt.tm_year; + *date_str++ = real_year / 1000 + '0'; + *date_str++ = real_year % 1000 / 100 + '0'; + *date_str++ = real_year % 100 / 10 + '0'; + *date_str++ = real_year % 10 + '0'; + *date_str++ = 0; + + return APR_SUCCESS; +} |