The nightly build uses a gross hack to keep timestamps stable: it
replaces the system's time() by emp_time(). It doesn't replace other
time-related functions such as gettimeofday(). Works as long as we
don't mix hacked time with unhacked time.
The previous commit compares time gotten from gettimeofday() with time
gotten from time(). The nightly build's I/O timeouts become zero,
which makes login impossible.
Replace gettimeofday(), too.
sed "$n"'a\
#include "emptime.h"\
#undef time\
sed "$n"'a\
#include "emptime.h"\
#undef time\
-#define time(timer) emp_time((timer), __FUNCTION__)' $f >$f.patched
+#define time(timer) emp_time((timer), __FUNCTION__)\
+#undef gettimeofday\
+#define gettimeofday(tv, tz) emp_gettimeofday((tv), (tz))' $f >$f.patched
diff --git a/include/emptime.h b/include/emptime.h
new file mode 100644
diff --git a/include/emptime.h b/include/emptime.h
new file mode 100644
--- /dev/null
+++ b/include/emptime.h
--- /dev/null
+++ b/include/emptime.h
+/*
+ * Empire - A multi-player, client/server Internet based war game.
+ * Copyright (C) 1986-2011, Dave Pare, Jeff Bailey, Thomas Ruschak,
+/*
+ * Empire - A multi-player, client/server Internet based war game.
+ * Copyright (C) 1986-2011, Dave Pare, Jeff Bailey, Thomas Ruschak,
-+ * emptime.h: Time functions for regression testing and
-+ * replaying journals.
++ * emptime.h: Time functions for regression testing
+ *
+ * Known contributors to this file:
+ * Ron Koenderink, 2008
+ *
+ * Known contributors to this file:
+ * Ron Koenderink, 2008
++ * Markus Armbruster, 2012
+ */
+
+#ifndef EMPTIME_H
+#define EMPTIME_H
+
+ */
+
+#ifndef EMPTIME_H
+#define EMPTIME_H
+
+#include <time.h>
+
+extern time_t emp_time(time_t *, const char []);
+#include <time.h>
+
+extern time_t emp_time(time_t *, const char []);
++extern int emp_gettimeofday(struct timeval *, void *);
++
+#endif
diff --git a/src/lib/gen/emptime.c b/src/lib/gen/emptime.c
new file mode 100644
+#endif
diff --git a/src/lib/gen/emptime.c b/src/lib/gen/emptime.c
new file mode 100644
--- /dev/null
+++ b/src/lib/gen/emptime.c
--- /dev/null
+++ b/src/lib/gen/emptime.c
+/*
+ * Empire - A multi-player, client/server Internet based war game.
+ * Copyright (C) 1986-2011, Dave Pare, Jeff Bailey, Thomas Ruschak,
+/*
+ * Empire - A multi-player, client/server Internet based war game.
+ * Copyright (C) 1986-2011, Dave Pare, Jeff Bailey, Thomas Ruschak,
-+ * emptime.c: Time functions for regression testing and
-+ * replaying journals.
++ * emptime.c: Time functions for regression testing
+ *
+ * Known contributors to this file:
+ * Ron Koenderink, 2008
+ *
+ * Known contributors to this file:
+ * Ron Koenderink, 2008
++ * Markus Armbruster, 2012
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include "emptime.h"
+
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include "emptime.h"
+
++static time_t now = (time_t)100L;
++
+time_t
+emp_time(time_t * time_ptr, const char function[])
+{
+time_t
+emp_time(time_t * time_ptr, const char function[])
+{
-+ static time_t now = (time_t)100L;
-+
+ if (strcmp(function, "update_main") == 0)
+ now += 100L;
+
+ if (strcmp(function, "update_main") == 0)
+ now += 100L;
+
++
++int
++emp_gettimeofday(struct timeval *tv, void *tz)
++{
++ if (tv) {
++ tv->tv_sec = now;
++ tv->tv_usec = 0;
++ }
++ return 0;
++}