From d81af5b45bd32649289bb16e112a9e34d393e14c Mon Sep 17 00:00:00 2001 From: Markus Kittenberger Date: Tue, 17 Mar 2009 14:17:29 +0100 Subject: [PATCH] ndling fot time went backwards and other times() problems --- src/main.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main.c b/src/main.c index a4091741..67eed075 100644 --- a/src/main.c +++ b/src/main.c @@ -873,7 +873,22 @@ clock_t olsr_times(void) { struct tms tms_buf; - return times(&tms_buf); + clock_t t=times(&tms_buf); + if ( t >=0 ) return t; + if ( t == -1) { + const char *const err_msg = strerror(errno); + olsr_syslog(OLSR_LOG_ERR,"Time error: '%s' (%d)", err_msg, errno); + + return -1; /* todo: only on 'unrecoverable' errors (like errno=14) */ + + /* todo: read syslog and learn error codes + * which we can safely "ignore" -> return 0; */ + } + else { + olsr_syslog(OLSR_LOG_ERR,"WARNING: times() reported negative result %i which olsr ignored (Did time went backwards ?)", t); + /* report time went backwards to syslog */ + } + return 0; } /* -- 2.20.1