Skip to content

Commit

Permalink
[LogStamp] make it possible to use frac_digits with non-ISO timestamps
Browse files Browse the repository at this point in the history
  • Loading branch information
bazsi committed Apr 1, 2009
1 parent 6fbea22 commit 70d758f
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 27 deletions.
39 changes: 24 additions & 15 deletions src/logstamp.c
Expand Up @@ -25,6 +25,26 @@
#include "messages.h"
#include "timeutils.h"

static void
log_stamp_append_frac_digits(LogStamp *stamp, GString *target, gint frac_digits)
{
glong usecs;

usecs = stamp->time.tv_usec % 1000000;

if (frac_digits > 0)
{
gulong x;

g_string_append_c(target, '.');
for (x = 100000; frac_digits && x; x = x / 10)
{
g_string_append_c(target, (usecs / x) + '0');
usecs = usecs % x;
frac_digits--;
}
}
}

/**
* log_stamp_format:
Expand All @@ -43,7 +63,6 @@ log_stamp_append_format(LogStamp *stamp, GString *target, gint ts_format, glong
struct tm *tm, tm_storage;
char buf[8];
time_t t;
glong usecs;

if (zone_offset != -1)
target_zone_offset = zone_offset;
Expand All @@ -65,31 +84,21 @@ log_stamp_append_format(LogStamp *stamp, GString *target, gint ts_format, glong
{
case TS_FMT_BSD:
g_string_append_printf(target, "%s %2d %02d:%02d:%02d", month_names_abbrev[tm->tm_mon], tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec);
log_stamp_append_frac_digits(stamp, target, frac_digits);
break;
case TS_FMT_ISO:
g_string_append_printf(target, "%d-%02d-%02dT%02d:%02d:%02d", tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec);
usecs = stamp->time.tv_usec % 1000000;

if (frac_digits > 0)
{
gulong x;

g_string_append_c(target, '.');
for (x = 100000; frac_digits && x; x = x / 10)
{
g_string_append_c(target, (usecs / x) + '0');
usecs = usecs % x;
frac_digits--;
}
}
log_stamp_append_frac_digits(stamp, target, frac_digits);
format_zone_info(buf, sizeof(buf), target_zone_offset);
g_string_append(target, buf);
break;
case TS_FMT_FULL:
g_string_append_printf(target, "%d %s %2d %02d:%02d:%02d", tm->tm_year + 1900, month_names_abbrev[tm->tm_mon], tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec);
log_stamp_append_frac_digits(stamp, target, frac_digits);
break;
case TS_FMT_UNIX:
g_string_append_printf(target, "%d", (int) stamp->time.tv_sec);
log_stamp_append_frac_digits(stamp, target, frac_digits);
break;
default:
g_assert_not_reached();
Expand Down
24 changes: 12 additions & 12 deletions tests/unit/test_template.c
Expand Up @@ -79,10 +79,10 @@ main(int argc G_GNUC_UNUSED, char *argv[] G_GNUC_UNUSED)
testcase(msg, "$LEVEL_NUM", "3");
testcase(msg, "$TAG", "9b");
testcase(msg, "$PRI", "155");
testcase(msg, "$DATE", "Feb 11 10:34:56");
testcase(msg, "$FULLDATE", "2006 Feb 11 10:34:56");
testcase(msg, "$DATE", "Feb 11 10:34:56.000");
testcase(msg, "$FULLDATE", "2006 Feb 11 10:34:56.000");
testcase(msg, "$ISODATE", "2006-02-11T10:34:56.000+01:00");
testcase(msg, "$STAMP", "Feb 11 10:34:56");
testcase(msg, "$STAMP", "Feb 11 10:34:56.000");
testcase(msg, "$YEAR", "2006");
testcase(msg, "$YEAR_DAY", "042");
testcase(msg, "$MONTH", "02");
Expand All @@ -98,13 +98,13 @@ main(int argc G_GNUC_UNUSED, char *argv[] G_GNUC_UNUSED)
testcase(msg, "$WEEK_DAY_NAME", "Saturday");
testcase(msg, "$WEEK_DAY_ABBREV", "Sat");
testcase(msg, "$WEEK", "06");
testcase(msg, "$UNIXTIME", "1139650496");
testcase(msg, "$UNIXTIME", "1139650496.000");
testcase(msg, "$TZOFFSET", "+01:00");
testcase(msg, "$TZ", "+01:00");
testcase(msg, "$R_DATE", "Feb 11 19:58:35");
testcase(msg, "$R_FULLDATE", "2006 Feb 11 19:58:35");
testcase(msg, "$R_DATE", "Feb 11 19:58:35.639");
testcase(msg, "$R_FULLDATE", "2006 Feb 11 19:58:35.639");
testcase(msg, "$R_ISODATE", "2006-02-11T19:58:35.639+01:00");
testcase(msg, "$R_STAMP", "Feb 11 19:58:35");
testcase(msg, "$R_STAMP", "Feb 11 19:58:35.639");
testcase(msg, "$R_YEAR", "2006");
testcase(msg, "$R_YEAR_DAY", "042");
testcase(msg, "$R_MONTH", "02");
Expand All @@ -120,13 +120,13 @@ main(int argc G_GNUC_UNUSED, char *argv[] G_GNUC_UNUSED)
testcase(msg, "$R_WEEK_DAY_NAME", "Saturday");
testcase(msg, "$R_WEEK_DAY_ABBREV", "Sat");
testcase(msg, "$R_WEEK", "06");
testcase(msg, "$R_UNIXTIME", "1139684315");
testcase(msg, "$R_UNIXTIME", "1139684315.639");
testcase(msg, "$R_TZOFFSET", "+01:00");
testcase(msg, "$R_TZ", "+01:00");
testcase(msg, "$S_DATE", "Feb 11 10:34:56");
testcase(msg, "$S_FULLDATE", "2006 Feb 11 10:34:56");
testcase(msg, "$S_DATE", "Feb 11 10:34:56.000");
testcase(msg, "$S_FULLDATE", "2006 Feb 11 10:34:56.000");
testcase(msg, "$S_ISODATE", "2006-02-11T10:34:56.000+01:00");
testcase(msg, "$S_STAMP", "Feb 11 10:34:56");
testcase(msg, "$S_STAMP", "Feb 11 10:34:56.000");
testcase(msg, "$S_YEAR", "2006");
testcase(msg, "$S_YEAR_DAY", "042");
testcase(msg, "$S_MONTH", "02");
Expand All @@ -142,7 +142,7 @@ main(int argc G_GNUC_UNUSED, char *argv[] G_GNUC_UNUSED)
testcase(msg, "$S_WEEK_DAY_NAME", "Saturday");
testcase(msg, "$S_WEEK_DAY_ABBREV", "Sat");
testcase(msg, "$S_WEEK", "06");
testcase(msg, "$S_UNIXTIME", "1139650496");
testcase(msg, "$S_UNIXTIME", "1139650496.000");
testcase(msg, "$S_TZOFFSET", "+01:00");
testcase(msg, "$S_TZ", "+01:00");
testcase(msg, "$HOST_FROM", "kismacska");
Expand Down

0 comments on commit 70d758f

Please sign in to comment.