summaryrefslogtreecommitdiffstats
path: root/sysdep/unix/io.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdep/unix/io.c')
-rw-r--r--sysdep/unix/io.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/sysdep/unix/io.c b/sysdep/unix/io.c
index 511c949..f465da4 100644
--- a/sysdep/unix/io.c
+++ b/sysdep/unix/io.c
@@ -27,6 +27,7 @@
#include "lib/timer.h"
#include "lib/socket.h"
#include "lib/event.h"
+#include "lib/string.h"
#include "nest/iface.h"
#ifdef IPV6
@@ -253,6 +254,24 @@ tm_format_date(char *x, bird_clock_t t)
sprintf(x, "%02d-%02d-%04d", tm->tm_mday, tm->tm_mon+1, tm->tm_year+1900);
}
+void
+tm_format_reltime(char *x, bird_clock_t t)
+{
+ struct tm *tm;
+ bird_clock_t delta = now - t;
+ static char *month_names[12] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
+
+ tm = localtime(&t);
+ if (delta < 0)
+ strcpy(x, "?fut?");
+ else if (delta < 20*3600)
+ bsprintf(x, "%02d:%02d", tm->tm_hour, tm->tm_min);
+ else if (delta < 360*86400)
+ bsprintf(x, "%s%02d", month_names[tm->tm_mon], tm->tm_mday);
+ else
+ bsprintf(x, "%d", tm->tm_year+1900);
+}
+
/*
* Sockets
*/