summaryrefslogtreecommitdiffstats
path: root/runtime/datetime.c
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2008-10-07 14:26:41 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2008-10-07 14:26:41 +0200
commit8528344ef58b5d2907bba8809f63d0bca2ce8d38 (patch)
treea7246f6453782404f2a197ea0b96c87c6d20a03b /runtime/datetime.c
parentcdecd7e524a5114ccff4f2909b32738bdb33c6ea (diff)
downloadrsyslog-8528344ef58b5d2907bba8809f63d0bca2ce8d38.tar.gz
rsyslog-8528344ef58b5d2907bba8809f63d0bca2ce8d38.tar.xz
rsyslog-8528344ef58b5d2907bba8809f63d0bca2ce8d38.zip
"output" timestamp now taken from mesg's time generated
This enhances performance and, as some have pointed out, is probably also more consistent with what users expect how the various output-timestamp related function should work. This commit needs some more testing.
Diffstat (limited to 'runtime/datetime.c')
-rw-r--r--runtime/datetime.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/runtime/datetime.c b/runtime/datetime.c
index 20ca6191..aa1956d7 100644
--- a/runtime/datetime.c
+++ b/runtime/datetime.c
@@ -62,9 +62,14 @@ DEFobjCurrIf(errmsg)
* most portable and removes the need for additional structures
* (but I have to admit it is somewhat "bulky";)).
*
- * Obviously, all caller-provided pointers must not be NULL...
+ * Obviously, *t must not be NULL...
+ *
+ * rgerhards, 2008-10-07: added ttSeconds to provide a way to
+ * obtain the second-resolution UNIX timestamp. This is needed
+ * in some situations to minimize time() calls (namely when doing
+ * output processing). This can be left NULL if not needed.
*/
-static void getCurrTime(struct syslogTime *t)
+static void getCurrTime(struct syslogTime *t, time_t *ttSeconds)
{
struct timeval tp;
struct tm *tm;
@@ -83,6 +88,9 @@ static void getCurrTime(struct syslogTime *t)
# else
gettimeofday(&tp, NULL);
# endif
+ if(ttSeconds != NULL)
+ *ttSeconds = tp.tv_sec;
+
tm = localtime_r((time_t*) &(tp.tv_sec), &tmBuf);
t->year = tm->tm_year + 1900;