From 913f7dc9f2dca8bebf8daebcce006b96f55ae6db Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Tue, 3 Aug 1999 19:29:27 +0000 Subject: [PATCH] Added functions for parsing and formatting of dates. --- TODO | 1 - sysdep/unix/io.c | 27 +++++++++++++++++++++++++++ sysdep/unix/timer.h | 4 ++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/TODO b/TODO index 2a9120ba..92713160 100644 --- a/TODO +++ b/TODO @@ -7,7 +7,6 @@ Core - prefer loopback addresses as router IDs (dummy interface?) - config: executable config files -- config: better format for datetime then seconds - do we really need preconfig? diff --git a/sysdep/unix/io.c b/sysdep/unix/io.c index 6d44f809..39cf200f 100644 --- a/sysdep/unix/io.c +++ b/sysdep/unix/io.c @@ -217,6 +217,33 @@ tm_shot(void) } } +bird_clock_t +tm_parse_date(char *x) +{ + struct tm tm; + int n; + time_t t; + + if (sscanf(x, "%d-%d-%d%n", &tm.tm_mday, &tm.tm_mon, &tm.tm_year, &n) != 3 || x[n]) + return 0; + tm.tm_mon--; + tm.tm_year -= 1900; + tm.tm_hour = tm.tm_min = tm.tm_sec = 0; + t = mktime(&tm); + if (t == (time_t) -1) + return 0; + return t; +} + +void +tm_format_date(char *x, bird_clock_t t) +{ + struct tm *tm; + + tm = localtime(&t); + sprintf(x, "%02d-%02d-%04d", tm->tm_mday, tm->tm_mon+1, tm->tm_year+1900); +} + /* * Sockets */ diff --git a/sysdep/unix/timer.h b/sysdep/unix/timer.h index 10351a61..afb2668a 100644 --- a/sysdep/unix/timer.h +++ b/sysdep/unix/timer.h @@ -32,4 +32,8 @@ void tm_dump_all(void); extern bird_clock_t now; /* Time in seconds since unknown epoch */ +bird_clock_t tm_parse_date(char *); /* Convert date to bird_clock_t */ +void tm_format_date(char *, bird_clock_t); /* Convert bird_clock_t to date */ +#define TM_DATE_BUFFER_SIZE 12 /* Buffer size required by tm_format_date */ + #endif