util: introduce format_timestamp()
authorLennart Poettering <lennart@poettering.net>
Sat, 10 Apr 2010 02:38:49 +0000 (04:38 +0200)
committerLennart Poettering <lennart@poettering.net>
Sat, 10 Apr 2010 16:00:14 +0000 (18:00 +0200)
util.c
util.h

diff --git a/util.c b/util.c
index 29f48b0..52ca5e2 100644 (file)
--- 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 b22074e..df2f3f7 100644 (file)
--- 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))      \