aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--otime.c1
-rw-r--r--otime.h5
2 files changed, 5 insertions, 1 deletions
diff --git a/otime.c b/otime.c
index ad9cbbf..14a52af 100644
--- a/otime.c
+++ b/otime.c
@@ -35,6 +35,7 @@
#include "memdbg.h"
volatile time_t now; /* GLOBAL */
+unsigned int now_adj = 0; /* GLOBAL */
/*
* Return a numerical string describing a struct timeval.
diff --git a/otime.h b/otime.h
index 0026646..09a85c7 100644
--- a/otime.h
+++ b/otime.h
@@ -55,13 +55,16 @@ const char *tv_string (const struct timeval *tv, struct gc_arena *gc);
const char *tv_string_abs (const struct timeval *tv, struct gc_arena *gc);
extern volatile time_t now; /* updated frequently to time(NULL) */
+extern unsigned int now_adj;
static inline void
update_time (void)
{
- const time_t real_time = time (NULL);
+ const time_t real_time = time (NULL) + now_adj;
if (real_time > now)
now = real_time;
+ else if (real_time < now)
+ now_adj += (now - real_time);
}
static inline void