From 53364f924838febe854b8341c507c0ad69a628a9 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 23 Sep 2001 10:04:26 +0200 Subject: [PATCH] Implemented a check to see whether the system time is running linearly --- HISTORY | 1 + vdr.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/HISTORY b/HISTORY index 66cac63e..4f0381aa 100644 --- a/HISTORY +++ b/HISTORY @@ -780,3 +780,4 @@ Video Disk Recorder Revision History next program start. - New command line option '-r' to define a command that gets called before and after each recording (see INSTALL for details). +- Implemented a check to see whether the system time is running linearly. diff --git a/vdr.c b/vdr.c index 6effc0ff..e92dc426 100644 --- a/vdr.c +++ b/vdr.c @@ -22,7 +22,7 @@ * * The project's page is at http://www.cadsoft.de/people/kls/vdr * - * $Id: vdr.c 1.75 2001/09/22 14:05:40 kls Exp $ + * $Id: vdr.c 1.76 2001/09/23 09:58:36 kls Exp $ */ #define _GNU_SOURCE @@ -310,6 +310,7 @@ int main(int argc, char *argv[]) int LastChannel = -1; int PreviousChannel = cDvbApi::CurrentChannel(); time_t LastActivity = 0; + time_t LinearTime = time(NULL); int MaxLatencyTime = 0; bool ForceShutdown = false; @@ -319,6 +320,14 @@ int main(int argc, char *argv[]) } while (!Interrupted) { + // Test if we are running in the Einstein continuum: + time_t Now = time(NULL); + time_t LinearDelta = Now - LinearTime; + if (LinearDelta) { + if (LinearDelta < 0 || LinearDelta > 300) // assuming nothing will block for more than 5 minutes + esyslog(LOG_ERR, "ERROR: time warp detected (%d seconds)", LinearDelta); + LinearTime = Now; + } // Handle emergency exits: if (cThread::EmergencyExit()) { esyslog(LOG_ERR, "emergency exit requested - shutting down");