From 8b6c71206d32b11683e5e7cebc9acb467ba01b38 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 10 Apr 2010 04:38:49 +0200 Subject: [PATCH] util: introduce format_timestamp() --- util.c | 18 ++++++++++++++++++ util.h | 4 ++++ 2 files changed, 22 insertions(+) diff --git a/util.c b/util.c index 29f48b08..52ca5e25 100644 --- a/util.c +++ b/util.c @@ -1258,6 +1258,24 @@ bool chars_intersect(const char *a, const char *b) { return false; } +char *format_timestamp(char *buf, size_t l, usec_t t) { + struct tm tm; + time_t sec; + + assert(buf); + assert(l > 0); + + if (t <= 0) + return NULL; + + sec = (time_t) t / USEC_PER_SEC; + + if (strftime(buf, l, "%a, %d %b %Y %H:%M:%S %z", localtime_r(&sec, &tm)) <= 0) + return NULL; + + return buf; +} + static const char *const ioprio_class_table[] = { [IOPRIO_CLASS_NONE] = "none", [IOPRIO_CLASS_RT] = "realtime", diff --git a/util.h b/util.h index b22074ed..df2f3f79 100644 --- a/util.h +++ b/util.h @@ -41,6 +41,8 @@ typedef uint64_t usec_t; #define WHITESPACE " \t\n\r" #define NEWLINE "\n\r" +#define FORMAT_TIMESTAMP_MAX 64 + usec_t now(clockid_t clock); usec_t timespec_load(const struct timespec *ts); @@ -166,6 +168,8 @@ bool ignore_file(const char *filename); bool chars_intersect(const char *a, const char *b); +char *format_timestamp(char *buf, size_t l, usec_t t); + #define DEFINE_STRING_TABLE_LOOKUP(name,type) \ const char *name##_to_string(type i) { \ if (i < 0 || i >= (type) ELEMENTSOF(name##_table)) \ -- 2.39.5