about summary refs log tree commit diff
path: root/mgenmid.c
diff options
context:
space:
mode:
authorLeah Neukirchen <leah@vuxu.org>2017-03-26 19:03:16 +0200
committerLeah Neukirchen <leah@vuxu.org>2017-03-26 19:03:16 +0200
commit6b9f742d7d1c8c7e691bcd42f801c286d6df4bee (patch)
treebc654678fcceb4141e39e085e01883a8e90b1040 /mgenmid.c
parentd21ab392e99ef0a5a1b3382136fe94c784adf5b3 (diff)
downloadmblaze-6b9f742d7d1c8c7e691bcd42f801c286d6df4bee.tar.gz
mblaze-6b9f742d7d1c8c7e691bcd42f801c286d6df4bee.tar.xz
mblaze-6b9f742d7d1c8c7e691bcd42f801c286d6df4bee.zip
mgenmid: use gettimeofday instead of clock_gettime
Fixes #17.

Nanosecond precision wasn't needed, and many legacy operating systems
don't support this POSIX.1-2001 function.

We now use plain microseconds for the timestamp, which uses the range of
the 64-bit number better as well.  This will result in a Year 294247 problem.
Diffstat (limited to 'mgenmid.c')
-rw-r--r--mgenmid.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/mgenmid.c b/mgenmid.c
index 7464daa..6e5ec9d 100644
--- a/mgenmid.c
+++ b/mgenmid.c
@@ -1,5 +1,6 @@
 #include <sys/socket.h>
 #include <sys/stat.h>
+#include <sys/time.h>
 #include <sys/types.h>
 
 #include <fcntl.h>
@@ -80,8 +81,8 @@ int main()
 		exit(1);
 	}
 		
-	struct timespec tp;
-	clock_gettime(CLOCK_REALTIME, &tp);
+	struct timeval tp;
+	gettimeofday(&tp, (struct timezone *)0);
 
 	uint64_t rnd;
 
@@ -97,14 +98,14 @@ int main()
 			rnd = rnd*256 + rndb[i];
 	} else {
 fallback:
-		srand48(tp.tv_sec ^ tp.tv_nsec/1000 ^ getpid());
+		srand48(tp.tv_sec ^ tp.tv_usec ^ getpid());
 		rnd = (lrand48() << 32) + lrand48();
 	}
 
 	rnd |= (1LL << 63);  // set highest bit to force full width
 
 	putchar('<');
-	printb36(((uint64_t)tp.tv_sec << 16) + (tp.tv_nsec >> 16));
+	printb36(((uint64_t)tp.tv_sec * 1000000LL + tp.tv_usec));
 	putchar('.');
 	printb36(rnd);
 	putchar('@');