* tools/dbus-monitor.c: gettimeofday() is not available
authorRalf Habacker <ralf.habacker@freenet.de>
Sun, 31 Dec 2006 12:20:54 +0000 (12:20 +0000)
committerRalf Habacker <ralf.habacker@freenet.de>
Sun, 31 Dec 2006 12:20:54 +0000 (12:20 +0000)
on windows so we have to provide our own. It's taken from
lgpl'd kdewin32 package. - Patches from Christian Ehrlicher

ChangeLog
tools/dbus-monitor.c

index fd93c9d..5f93608 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2006-12-31  Ralf Habacker  <ralf.habacker@freenet.de>
 
+       * tools/dbus-monitor.c: gettimeofday() is not available 
+       on windows so we have to provide our own. It's taken from 
+       lgpl'd kdewin32 package. - Patches from Christian Ehrlicher
+
+2006-12-31  Ralf Habacker  <ralf.habacker@freenet.de>
+
        * dbus/dbus-sysdeps-unix.c: moved _dbus_atomic_inc/dec() 
        from dbus/dbus-sysdeps.c, windows version of _dbus_atomic_inc/dec() 
        is in dbus-sysdeps-win.c (not in this patch).
index eb3da07..9f7da5b 100644 (file)
 #include <stdlib.h>
 #include <string.h>
 
+#ifdef DBUS_WIN
+#include <winsock2.h>
+#undef interface
+#else
 #include <sys/time.h>
+#endif
+
 #include <time.h>
 
 #include <signal.h>
 
 #include "dbus-print-message.h"
 
+#ifdef DBUS_WIN
+
+/* gettimeofday is not defined on windows */
+#define DBUS_SECONDS_SINCE_1601 11644473600LL
+#define DBUS_USEC_IN_SEC        1000000LL
+
+static int
+gettimeofday (struct timeval *__p,
+             void *__t)
+{
+  union {
+      unsigned long long ns100; /*time since 1 Jan 1601 in 100ns units */
+      FILETIME           ft;
+    } now;
+
+  GetSystemTimeAsFileTime (&now.ft);
+  __p->tv_usec = (long) ((now.ns100 / 10LL) % DBUS_USEC_IN_SEC);
+  __p->tv_sec  = (long)(((now.ns100 / 10LL) / DBUS_SECONDS_SINCE_1601) - DBUS_SECONDS_SINCE_1601);
+
+  return 0;
+}
+#endif
+
 static DBusHandlerResult
 monitor_filter_func (DBusConnection     *connection,
                     DBusMessage        *message,