diff --git a/src/core/time.c b/src/core/time.c
index d0ed0b8dd9917d11596fa54da2f65071026c968f..d8e8fabf6442e3d83ac02364521c9a1abd54e98e 100644 (file)
--- a/src/core/time.c
+++ b/src/core/time.c
} /* sdb_sleep */
size_t
} /* sdb_sleep */
size_t
-sdb_strftime(char *s, size_t len, const char *format, sdb_time_t t)
+sdb_strftime(char *s, size_t len, sdb_time_t t)
{
{
+ char tmp[len];
time_t tstamp;
struct tm tm;
time_t tstamp;
struct tm tm;
+ long tz;
memset(&tm, 0, sizeof(tm));
memset(&tm, 0, sizeof(tm));
-
tstamp = (time_t)SDB_TIME_TO_SECS(t);
if (! localtime_r (&tstamp, &tm))
return 0;
tstamp = (time_t)SDB_TIME_TO_SECS(t);
if (! localtime_r (&tstamp, &tm))
return 0;
- return strftime(s, len, format, &tm);
+ if (! strftime(tmp, len, "%F %T", &tm))
+ return 0;
+ tmp[sizeof(tmp) - 1] = '\0';
+
+ tz = -timezone / 36;
+ if (tm.tm_isdst > 0)
+ tz += 100;
+
+ t %= SDB_INTERVAL_SECOND;
+ if (! t)
+ return snprintf(s, len, "%s %+05ld", tmp, tz);
+ return snprintf(s, len, "%s.%09ld %+05ld", tmp, t, tz);
} /* sdb_strftime */
size_t
} /* sdb_strftime */
size_t