X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fcore%2Ftime.c;h=d8e8fabf6442e3d83ac02364521c9a1abd54e98e;hb=db527d05f4a9a790a09037c80a9465856ed89f1a;hp=d0ed0b8dd9917d11596fa54da2f65071026c968f;hpb=49b5a4d2e8e4fb1e4f67c2a368d8d2e3e76b765f;p=sysdb.git diff --git a/src/core/time.c b/src/core/time.c index d0ed0b8..d8e8fab 100644 --- a/src/core/time.c +++ b/src/core/time.c @@ -78,18 +78,30 @@ sdb_sleep(sdb_time_t reg, sdb_time_t *rem) } /* 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; + long tz; memset(&tm, 0, sizeof(tm)); - 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