Unbreak nightly build

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.
This commit is contained in:
Markus Armbruster 2012-03-31 18:59:27 +02:00
parent ed1cbc97e6
commit 10768189e2
2 changed files with 26 additions and 11 deletions

View file

@ -184,7 +184,9 @@ then
sed "$n"'a\ sed "$n"'a\
#include "emptime.h"\ #include "emptime.h"\
#undef time\ #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
mv $f.patched $f mv $f.patched $f
fi fi
done done

View file

@ -1,9 +1,9 @@
diff --git a/include/emptime.h b/include/emptime.h diff --git a/include/emptime.h b/include/emptime.h
new file mode 100644 new file mode 100644
index 0000000..a83b29d index 0000000..3c1eb7b
--- /dev/null --- /dev/null
+++ b/include/emptime.h +++ b/include/emptime.h
@@ -0,0 +1,40 @@ @@ -0,0 +1,43 @@
+/* +/*
+ * Empire - A multi-player, client/server Internet based war game. + * Empire - A multi-player, client/server Internet based war game.
+ * Copyright (C) 1986-2011, Dave Pare, Jeff Bailey, Thomas Ruschak, + * Copyright (C) 1986-2011, Dave Pare, Jeff Bailey, Thomas Ruschak,
@ -30,26 +30,29 @@ index 0000000..a83b29d
+ * + *
+ * --- + * ---
+ * + *
+ * emptime.h: Time functions for regression testing and + * emptime.h: Time functions for regression testing
+ * replaying journals.
+ * + *
+ * Known contributors to this file: + * Known contributors to this file:
+ * Ron Koenderink, 2008 + * Ron Koenderink, 2008
+ * Markus Armbruster, 2012
+ */ + */
+ +
+#ifndef EMPTIME_H +#ifndef EMPTIME_H
+#define EMPTIME_H +#define EMPTIME_H
+ +
+#include <sys/time.h>
+#include <time.h> +#include <time.h>
+ +
+extern time_t emp_time(time_t *, const char []); +extern time_t emp_time(time_t *, const char []);
+extern int emp_gettimeofday(struct timeval *, void *);
+
+#endif +#endif
diff --git a/src/lib/gen/emptime.c b/src/lib/gen/emptime.c diff --git a/src/lib/gen/emptime.c b/src/lib/gen/emptime.c
new file mode 100644 new file mode 100644
index 0000000..855de99 index 0000000..4461093
--- /dev/null --- /dev/null
+++ b/src/lib/gen/emptime.c +++ b/src/lib/gen/emptime.c
@@ -0,0 +1,50 @@ @@ -0,0 +1,60 @@
+/* +/*
+ * Empire - A multi-player, client/server Internet based war game. + * Empire - A multi-player, client/server Internet based war game.
+ * Copyright (C) 1986-2011, Dave Pare, Jeff Bailey, Thomas Ruschak, + * Copyright (C) 1986-2011, Dave Pare, Jeff Bailey, Thomas Ruschak,
@ -76,22 +79,22 @@ index 0000000..855de99
+ * + *
+ * --- + * ---
+ * + *
+ * emptime.c: Time functions for regression testing and + * emptime.c: Time functions for regression testing
+ * replaying journals.
+ * + *
+ * Known contributors to this file: + * Known contributors to this file:
+ * Ron Koenderink, 2008 + * Ron Koenderink, 2008
+ * Markus Armbruster, 2012
+ */ + */
+ +
+#include <stdio.h> +#include <stdio.h>
+#include <string.h> +#include <string.h>
+#include "emptime.h" +#include "emptime.h"
+ +
+static time_t now = (time_t)100L;
+
+time_t +time_t
+emp_time(time_t * time_ptr, const char function[]) +emp_time(time_t * time_ptr, const char function[])
+{ +{
+ static time_t now = (time_t)100L;
+
+ if (strcmp(function, "update_main") == 0) + if (strcmp(function, "update_main") == 0)
+ now += 100L; + now += 100L;
+ +
@ -100,3 +103,13 @@ index 0000000..855de99
+ +
+ return now; + return now;
+} +}
+
+int
+emp_gettimeofday(struct timeval *tv, void *tz)
+{
+ if (tv) {
+ tv->tv_sec = now;
+ tv->tv_usec = 0;
+ }
+ return 0;
+}