dbus ChangeLog,1.1234,1.1235 dbus-win.patch,1.1,1.2

Ralf Habacker rhabacker at kemper.freedesktop.org
Tue Mar 6 13:45:29 PST 2007


Update of /cvs/dbus/dbus
In directory kemper:/tmp/cvs-serv23054

Modified Files:
	ChangeLog dbus-win.patch 
Log Message:
* bus-win.patch: fixes unix listen problems, dbus-test now runs.

Index: ChangeLog
===================================================================
RCS file: /cvs/dbus/dbus/ChangeLog,v
retrieving revision 1.1234
retrieving revision 1.1235
diff -u -d -r1.1234 -r1.1235
--- ChangeLog	6 Mar 2007 20:51:02 -0000	1.1234
+++ ChangeLog	6 Mar 2007 21:45:26 -0000	1.1235
@@ -1,5 +1,10 @@
 2007-03-06  Ralf Habacker  <ralf.habacker at freenet.de>
 
+	* bus-win.patch: fixes unix listen problems, dbus-test 
+	now runs.
+
+2007-03-06  Ralf Habacker  <ralf.habacker at freenet.de>
+
 	* cmake/dbus/CMakeLists.txt,cmake/bus/CMakeLists.txt,
 	cmake/CMakeLists.txt: win32 compile fix
 

Index: dbus-win.patch
===================================================================
RCS file: /cvs/dbus/dbus/dbus-win.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- dbus-win.patch	4 Mar 2007 22:27:33 -0000	1.1
+++ dbus-win.patch	6 Mar 2007 21:45:27 -0000	1.2
@@ -1,1278 +1,1336 @@
-Index: bus/activation.c
-===================================================================
-RCS file: /cvs/dbus/dbus/bus/activation.c,v
-retrieving revision 1.49
-diff -u -b -B -r1.49 activation.c
---- bus/activation.c	4 Mar 2007 22:09:50 -0000	1.49
-+++ bus/activation.c	4 Mar 2007 22:11:26 -0000
-@@ -34,7 +34,6 @@
- #include <dbus/dbus-spawn.h>
- #include <dbus/dbus-timeout.h>
- #include <dbus/dbus-sysdeps.h>
--#include <dirent.h>
- #include <errno.h>
- 
- #define DBUS_SERVICE_SECTION "D-BUS Service"
-Index: bus/bus.c
-===================================================================
-RCS file: /cvs/dbus/dbus/bus/bus.c,v
-retrieving revision 1.74
-diff -u -b -B -r1.74 bus.c
---- bus/bus.c	20 Dec 2006 06:18:19 -0000	1.74
-+++ bus/bus.c	4 Mar 2007 22:11:26 -0000
-@@ -625,7 +625,7 @@
-         }
- 
-       bytes = _dbus_string_get_length (&addr);
--      if (_dbus_write_socket (print_addr_fd, &addr, 0, bytes) != bytes)
-+      if (_dbus_write_pipe (print_addr_fd, &addr, 0, bytes) != bytes)
-         {
-           dbus_set_error (error, DBUS_ERROR_FAILED,
-                           "Printing message bus address: %s\n",
-@@ -726,7 +726,7 @@
-         }
- 
-       bytes = _dbus_string_get_length (&pid);
--      if (_dbus_write_socket (print_pid_fd, &pid, 0, bytes) != bytes)
-+      if (_dbus_write_pipe (print_pid_fd, &pid, 0, bytes) != bytes)
-         {
-           dbus_set_error (error, DBUS_ERROR_FAILED,
-                           "Printing message bus PID: %s\n",
-Index: bus/config-loader-libxml.c
-===================================================================
-RCS file: /cvs/dbus/dbus/bus/config-loader-libxml.c,v
-retrieving revision 1.8
-diff -u -b -B -r1.8 config-loader-libxml.c
---- bus/config-loader-libxml.c	10 Aug 2004 03:06:59 -0000	1.8
-+++ bus/config-loader-libxml.c	4 Mar 2007 22:11:26 -0000
-@@ -134,6 +134,9 @@
-     }
- }
- 
-+#ifdef DBUS_WIN
-+  DBusString *_dbus_get_working_dir(void);
-+#endif
- 
- BusConfigParser*
- bus_config_load (const DBusString      *file,
-@@ -147,7 +150,9 @@
-   DBusString dirname, data;
-   DBusError tmp_error;
-   int ret;
--  
-+#ifdef DBUS_WIN
-+	DBusString *dbusdir;
-+#endif
-   _DBUS_ASSERT_ERROR_IS_CLEAR (error);
-   
-   parser = NULL;
-@@ -177,13 +182,19 @@
-       xmlSetGenericErrorFunc (NULL, xml_shut_up);
-     }
- 
-+#ifdef DBUS_WIN
-+  dbusdir = _dbus_get_working_dir();
-+	if (dbusdir)
-+  	parser = bus_config_parser_new (dbusdir, is_toplevel, parent);
-+  else  
-+#endif
-   if (!_dbus_string_get_dirname (file, &dirname))
-     {
-       _DBUS_SET_OOM (error);
-       goto failed;
-     }
--  
-   parser = bus_config_parser_new (&dirname, is_toplevel, parent);
-+  
-   if (parser == NULL)
-     {
-       _DBUS_SET_OOM (error);
-Index: bus/config-parser.c
-===================================================================
-RCS file: /cvs/dbus/dbus/bus/config-parser.c,v
-retrieving revision 1.47
-diff -u -b -B -r1.47 config-parser.c
---- bus/config-parser.c	26 Jan 2007 16:10:09 -0000	1.47
-+++ bus/config-parser.c	4 Mar 2007 22:11:26 -0000
-@@ -27,6 +27,7 @@
- #include "selinux.h"
- #include <dbus/dbus-list.h>
- #include <dbus/dbus-internals.h>
-+#include <dbus/dbus-userdb.h>
- #include <string.h>
- 
- typedef enum
-@@ -3070,10 +3071,15 @@
- 
- static const char *test_service_dir_matches[] = 
-         {
-+#ifdef DBUS_WIN
-+         DBUS_DATADIR"/dbus-1/services",
-+         NULL,
-+#else
-          "/testusr/testlocal/testshare/dbus-1/services",
-          "/testusr/testshare/dbus-1/services",
-          DBUS_DATADIR"/dbus-1/services",
-          "/testhome/foo/.testlocal/testshare/dbus-1/services",         
-+#endif 
-          NULL
-         };
- 
-@@ -3082,11 +3088,32 @@
- {
-   DBusList *dirs;
-   DBusList *link;
-+  DBusString progs;
-+  const char *common_progs;
-   int i;
- 
-+  common_progs = _dbus_getenv ("CommonProgramFiles");
-+  if (common_progs) 
-+    {
-+      if (!_dbus_string_init (&progs))
-+        return FALSE;
-+
-+      if (!_dbus_string_append (&progs, common_progs)) 
-+        {
-+          _dbus_string_free (&progs);
-+          return FALSE;
-+        }
-+
-+      if (!_dbus_string_append (&progs, "/dbus-1/services")) 
-+        {
-+          _dbus_string_free (&progs);
-+          return FALSE;
-+        }
-+      test_service_dir_matches[1] = _dbus_string_get_const_data(&progs);
-+    }
-   dirs = NULL;
- 
--  printf ("Testing retriving the default session service directories\n");
-+  printf ("Testing retrieving the default session service directories\n");
-   if (!_dbus_get_standard_session_servicedirs (&dirs))
-     _dbus_assert_not_reached ("couldn't get stardard dirs");
- 
-@@ -3097,7 +3124,7 @@
-       
-       printf ("    default service dir: %s\n", (char *)link->data);
-       _dbus_string_init_const (&path, (char *)link->data);
--      if (!_dbus_string_ends_with_c_str (&path, "share/dbus-1/services"))
-+      if (!_dbus_string_ends_with_c_str (&path, "dbus-1/services"))
-         {
-           printf ("error with default session service directories\n");
-           return FALSE;
-@@ -3150,6 +3177,7 @@
-       return FALSE;
-     }
-     
-+  _dbus_string_free (&progs);
-   return TRUE;
- }
- 			   
-Index: bus/connection.c
-===================================================================
-RCS file: /cvs/dbus/dbus/bus/connection.c,v
-retrieving revision 1.66
-diff -u -b -B -r1.66 connection.c
---- bus/connection.c	12 Dec 2006 21:24:07 -0000	1.66
-+++ bus/connection.c	4 Mar 2007 22:11:26 -0000
-@@ -1536,7 +1536,7 @@
- {
-   CancelPendingReplyData *d = data;
- 
--  _dbus_verbose ("%s: d = %p\n", _DBUS_FUNCTION_NAME, d);
-+  _dbus_verbose_C_S ("%s: d = %p\n", _DBUS_FUNCTION_NAME, d);
-   
-   if (!_dbus_list_remove (&d->connections->pending_replies->items,
-                           d->pending))
-@@ -1550,7 +1550,7 @@
- {
-   CancelPendingReplyData *d = data;
- 
--  _dbus_verbose ("%s: d = %p\n", _DBUS_FUNCTION_NAME, d);
-+  _dbus_verbose_C_S ("%s: d = %p\n", _DBUS_FUNCTION_NAME, d);
-   
-   /* d->pending should be either freed or still
-    * in the list of pending replies (owned by someone
-@@ -1687,7 +1687,7 @@
- {
-   CheckPendingReplyData *d = data;
- 
--  _dbus_verbose ("%s: d = %p\n", _DBUS_FUNCTION_NAME, d);
-+  _dbus_verbose_C_S ("%s: d = %p\n", _DBUS_FUNCTION_NAME, d);
-   
-   _dbus_list_prepend_link (&d->connections->pending_replies->items,
-                            d->link);
-@@ -1699,7 +1699,7 @@
- {
-   CheckPendingReplyData *d = data;
- 
--  _dbus_verbose ("%s: d = %p\n", _DBUS_FUNCTION_NAME, d);
-+  _dbus_verbose_C_S ("%s: d = %p\n", _DBUS_FUNCTION_NAME, d);
-   
-   if (d->link != NULL)
-     {
-Index: bus/dispatch.c
-===================================================================
-RCS file: /cvs/dbus/dbus/bus/dispatch.c,v
-retrieving revision 1.78
-diff -u -b -B -r1.78 dispatch.c
---- bus/dispatch.c	23 Oct 2006 17:25:52 -0000	1.78
-+++ bus/dispatch.c	4 Mar 2007 22:11:27 -0000
-@@ -428,6 +428,11 @@
-     }
- }
- 
-+#ifdef DBUS_WIN
-+#include <tools/dbus-print-message.h>
-+#include <tools/dbus-print-message.c>
-+#endif
-+
- static void
- spin_connection_until_authenticated (BusContext     *context,
-                                      DBusConnection *connection)
-@@ -439,6 +444,19 @@
-       bus_test_run_bus_loop (context, FALSE);
-       bus_test_run_clients_loop (FALSE);
-     }
-+#ifdef DBUS_WIN
-+  if ( dbus_connection_get_dispatch_status(connection) != DBUS_DISPATCH_COMPLETE)
-+    {
-+      DBusMessage *message;
-+	  message = dbus_connection_pop_message (connection);
-+	  printf ("spin_connection_until_authenticated failed,\n");
-+	  printf ("because of a non dispatched message:\n");
-+	  print_message(message, FALSE);
-+	  printf ("\n");	 
-+	  _dbus_assert_not_reached ("spin_connection_until_authenticated failed\n ");
-+    }
-+#endif
-+
-   _dbus_verbose (" ... done spinning to auth connection %p\n", connection);
- }
- 
-@@ -2624,6 +2642,11 @@
-   const char *segv_service;
-   dbus_uint32_t flags;
-   
-+  _dbus_warn("TODO: dispatch.c: check_segfault_service_no_auto_start\n");
-+#ifndef DBUS_WIN_FIXME
-+  return TRUE;
-+#endif
-+
-   message = dbus_message_new_method_call (DBUS_SERVICE_DBUS,
-                                           DBUS_PATH_DBUS,
-                                           DBUS_INTERFACE_DBUS,
-@@ -2698,9 +2721,12 @@
-         }
-       else
-         {
-+/* no DBUS_ERROR_NO_MEMORY on windows (no have_fork_errnum)*/
-+#ifndef DBUS_WIN_FIXME
-           warn_unexpected (connection, message, "not this error");
- 
-           goto out;
-+#endif
-         }
-     }
-   else
-@@ -4062,14 +4088,20 @@
-       _dbus_assert_not_reached ("initial connection setup failed");
-     }
-   
-+  _dbus_warn("TODO: dispatch.c create_and_hello test\n");
-+#ifndef DBUS_WIN_FIXME  
-   check1_try_iterations (context, "create_and_hello",
-                          check_hello_connection);
-+#endif
-   
-   check2_try_iterations (context, foo, "nonexistent_service_no_auto_start",
-                          check_nonexistent_service_no_auto_start);
- 
-+  _dbus_warn("TODO: dispatch.c segfault_service_no_auto_start test\n");
-+#ifndef DBUS_WIN_FIXME
-   check2_try_iterations (context, foo, "segfault_service_no_auto_start",
-                          check_segfault_service_no_auto_start);
-+#endif
-   
-   check2_try_iterations (context, foo, "existent_service_no_auto_start",
-                          check_existent_service_no_auto_start);
-@@ -4077,8 +4109,12 @@
-   check2_try_iterations (context, foo, "nonexistent_service_auto_start",
-                          check_nonexistent_service_auto_start);
-   
-+
-+  _dbus_warn("TODO: dispatch.c segfault_service_auto_start test\n");
-+#ifndef DBUS_WIN_FIXME    
-   check2_try_iterations (context, foo, "segfault_service_auto_start",
-                          check_segfault_service_auto_start);
-+#endif
- 
-   check2_try_iterations (context, foo, "shell_fail_service_auto_start",
-                          check_shell_fail_service_auto_start);
-@@ -4095,8 +4131,11 @@
-   if (!check_existent_service_auto_start (context, foo))
-     _dbus_assert_not_reached ("existent service auto start failed");
- 
-+  _dbus_warn("TODO: dispatch.c check_shell_service_success_auto_start test\n");
-+#ifndef DBUS_WIN_FIXME  
-   if (!check_shell_service_success_auto_start (context, foo))
-     _dbus_assert_not_reached ("shell success service auto start failed");
-+#endif
- 
-   _dbus_verbose ("Disconnecting foo, bar, and baz\n");
- 
-@@ -4147,8 +4186,11 @@
-       _dbus_assert_not_reached ("initial connection setup failed");
-     }
-   
-+  _dbus_warn("TODO: dispatch.c: create_and_hello_sha1 test\n");
-+#ifndef DBUS_WIN_FIXME  
-   check1_try_iterations (context, "create_and_hello_sha1",
-                          check_hello_connection);
-+#endif
- 
-   kill_client_connection_unchecked (foo);
- 
-Index: bus/main.c
-===================================================================
-RCS file: /cvs/dbus/dbus/bus/main.c,v
-retrieving revision 1.36
-diff -u -b -B -r1.36 main.c
---- bus/main.c	20 Dec 2006 06:18:19 -0000	1.36
-+++ bus/main.c	4 Mar 2007 22:11:28 -0000
-@@ -254,6 +254,12 @@
-   dbus_bool_t print_pid;
-   int force_fork;
- 
-+#ifdef _WIN32
-+	extern int _dbus_init_working_dir(char *s);
-+	if (!_dbus_init_working_dir(argv[0]))
-+		return 1;
-+#endif
-+
-   if (!_dbus_string_init (&config_file))
-     return 1;
- 
-Index: bus/policy.c
-===================================================================
-RCS file: /cvs/dbus/dbus/bus/policy.c,v
-retrieving revision 1.24
-diff -u -b -B -r1.24 policy.c
---- bus/policy.c	12 Dec 2006 21:24:07 -0000	1.24
-+++ bus/policy.c	4 Mar 2007 22:11:28 -0000
-@@ -324,9 +324,13 @@
- 
-   if (!dbus_connection_get_unix_user (connection, &uid))
-     {
-+#ifdef DBUS_WIN
-+		_dbus_verbose ("policy.c: dbus_connection_get_unix_user check disabled under windows\n");
-+#else
-       dbus_set_error (error, DBUS_ERROR_FAILED,
-                       "No user ID known for connection, cannot determine security policy\n");
-       goto failed;
-+#endif
-     }
- 
-   if (_dbus_hash_table_get_n_entries (policy->rules_by_uid) > 0)
-Index: dbus/dbus-bus.c
-===================================================================
-RCS file: /cvs/dbus/dbus/dbus/dbus-bus.c,v
-retrieving revision 1.64
-diff -u -b -B -r1.64 dbus-bus.c
---- dbus/dbus-bus.c	28 Oct 2006 01:41:37 -0000	1.64
-+++ dbus/dbus-bus.c	4 Mar 2007 22:11:28 -0000
-@@ -350,8 +350,10 @@
- {
-   int i;
-   
-+#if !defined(DBUS_WIN) && !defined(DBUS_WINCE)
-+   // qt example pong says "QMutex::lock: Deadlock detected"
-   _DBUS_LOCK (bus);
--
-+#endif
-   /* We are expecting to have the connection saved in only one of these
-    * slots, but someone could in a pathological case set system and session
-    * bus to the same bus or something. Or set one of them to the starter
-@@ -366,7 +368,9 @@
-         }
-     }
- 
-+#if !defined(DBUS_WIN) && !defined(DBUS_WINCE)
-   _DBUS_UNLOCK (bus);
-+#endif
- }
- 
- static DBusConnection *
-Index: dbus/dbus-connection.c
-===================================================================
-RCS file: /cvs/dbus/dbus/dbus/dbus-connection.c,v
-retrieving revision 1.154
-diff -u -b -B -r1.154 dbus-connection.c
---- dbus/dbus-connection.c	15 Nov 2006 03:07:59 -0000	1.154
-+++ dbus/dbus-connection.c	4 Mar 2007 22:11:28 -0000
-@@ -62,7 +62,7 @@
- #define TRACE_LOCKS 1
- 
- #define CONNECTION_LOCK(connection)   do {                                      \
--    if (TRACE_LOCKS) { _dbus_verbose ("  LOCK: %s\n", _DBUS_FUNCTION_NAME); }   \
-+    if (TRACE_LOCKS) { _dbus_verbose ("  LOCK  : %s\n", _DBUS_FUNCTION_NAME); }   \
-     _dbus_mutex_lock ((connection)->mutex);                                      \
-     TOOK_LOCK_CHECK (connection);                                               \
-   } while (0)
-@@ -4718,9 +4718,9 @@
-   _dbus_return_val_if_fail (connection != NULL, FALSE);
-   _dbus_return_val_if_fail (connection->transport != NULL, FALSE);
- 
--#ifdef DBUS_WIN
-+#if defined(DBUS_WIN) || defined(DBUS_WINCE)
-   /* FIXME do this on a lower level */
--  return FALSE;
-+  //return FALSE;
- #endif
-   
-   return dbus_connection_get_socket(connection, fd);
-@@ -4790,12 +4790,12 @@
-   _dbus_return_val_if_fail (connection != NULL, FALSE);
-   _dbus_return_val_if_fail (uid != NULL, FALSE);
- 
--#ifdef DBUS_WIN
-+#if defined(DBUS_WIN) || defined(DBUS_WINCE)
-   /* FIXME this should be done at a lower level, but it's kind of hard,
-    * just want to be sure we don't ship with this API returning
-    * some weird internal fake uid for 1.0
-    */
--  return FALSE;
-+  //return FALSE;
- #endif
-   
-   CONNECTION_LOCK (connection);
-@@ -4829,12 +4829,12 @@
-   _dbus_return_val_if_fail (connection != NULL, FALSE);
-   _dbus_return_val_if_fail (pid != NULL, FALSE);
- 
--#ifdef DBUS_WIN
-+#if defined(DBUS_WIN) || defined(DBUS_WINCE)
-   /* FIXME this should be done at a lower level, but it's kind of hard,
-    * just want to be sure we don't ship with this API returning
-    * some weird internal fake uid for 1.0
-    */
--  return FALSE;
-+  //return FALSE;
- #endif
-   
-   CONNECTION_LOCK (connection);
-Index: dbus/dbus-connection.h
-===================================================================
-RCS file: /cvs/dbus/dbus/dbus/dbus-connection.h,v
-retrieving revision 1.49
-diff -u -b -B -r1.49 dbus-connection.h
---- dbus/dbus-connection.h	15 Nov 2006 03:07:59 -0000	1.49
-+++ dbus/dbus-connection.h	4 Mar 2007 22:11:28 -0000
-@@ -330,6 +330,9 @@
-  */
- 
- int          dbus_watch_get_fd      (DBusWatch        *watch);
-+#if defined (DBUS_COMPILATION)
-+int          dbus_watch_get_handle  (DBusWatch        *watch);
-+#endif
- unsigned int dbus_watch_get_flags   (DBusWatch        *watch);
- void*        dbus_watch_get_data    (DBusWatch        *watch);
- void         dbus_watch_set_data    (DBusWatch        *watch,
-Index: dbus/dbus-internals.c
-===================================================================
-RCS file: /cvs/dbus/dbus/dbus/dbus-internals.c,v
-retrieving revision 1.55
-diff -u -b -B -r1.55 dbus-internals.c
---- dbus/dbus-internals.c	15 Nov 2006 01:52:01 -0000	1.55
-+++ dbus/dbus-internals.c	4 Mar 2007 22:11:28 -0000
-@@ -295,7 +295,7 @@
- #include <pthread.h>
- #endif
- 
--static inline void
-+static void
- _dbus_verbose_init (void)
- {
-   if (!verbose_initted)
-Index: dbus/dbus-mainloop.c
-===================================================================
-RCS file: /cvs/dbus/dbus/dbus/dbus-mainloop.c,v
-retrieving revision 1.19
-diff -u -b -B -r1.19 dbus-mainloop.c
---- dbus/dbus-mainloop.c	20 Oct 2006 03:04:59 -0000	1.19
-+++ dbus/dbus-mainloop.c	4 Mar 2007 22:11:28 -0000
-@@ -90,8 +90,8 @@
-   Callback callback;
-   DBusTimeout *timeout;
-   DBusTimeoutFunction function;
--  unsigned long last_tv_sec;
--  unsigned long last_tv_usec;
-+  long last_tv_sec;
-+  long last_tv_usec;
- } TimeoutCallback;
- 
- #define WATCH_CALLBACK(callback)   ((WatchCallback*)callback)
-@@ -598,7 +598,7 @@
- 
- #if MAINLOOP_SPEW
-               _dbus_verbose ("  skipping watch on fd %d as it was out of memory last time\n",
--                             dbus_watch_get_fd (wcb->watch));
-+                             dbus_watch_get_handle (wcb->watch));
- #endif
-             }
-           else if (dbus_watch_get_enabled (wcb->watch))
-@@ -609,7 +609,7 @@
-                   
-               flags = dbus_watch_get_flags (wcb->watch);
-                   
--              fds[n_fds].fd = dbus_watch_get_fd (wcb->watch);
-+              fds[n_fds].fd = dbus_watch_get_handle (wcb->watch);
-               fds[n_fds].revents = 0;
-               fds[n_fds].events = 0;
-               if (flags & DBUS_WATCH_READABLE)
-@@ -628,7 +628,7 @@
-             {
- #if MAINLOOP_SPEW
-               _dbus_verbose ("  skipping disabled watch on fd %d  %s\n",
--                             dbus_watch_get_fd (wcb->watch),
-+                             dbus_watch_get_handle (wcb->watch),
-                              watch_flags_to_string (dbus_watch_get_flags (wcb->watch)));
- #endif
-             }
-@@ -640,8 +640,8 @@
-   timeout = -1;
-   if (loop->timeout_count > 0)
-     {
--      unsigned long tv_sec;
--      unsigned long tv_usec;
-+      long tv_sec;
-+      long tv_usec;
-       
-       _dbus_get_current_time (&tv_sec, &tv_usec);
-           
-@@ -710,8 +710,8 @@
- 
-   if (loop->timeout_count > 0)
-     {
--      unsigned long tv_sec;
--      unsigned long tv_usec;
-+      long tv_sec;
-+      long tv_usec;
- 
-       _dbus_get_current_time (&tv_sec, &tv_usec);
- 
-@@ -883,6 +883,8 @@
-   
-   loop->depth -= 1;
- 
-+ _dbus_daemon_release ();
-+
-   _dbus_verbose ("Quit main loop, depth %d -> %d\n",
-                  loop->depth + 1, loop->depth);
- }
-Index: dbus/dbus-message.h
-===================================================================
-RCS file: /cvs/dbus/dbus/dbus/dbus-message.h,v
-retrieving revision 1.65
-diff -u -b -B -r1.65 dbus-message.h
---- dbus/dbus-message.h	21 Oct 2006 18:51:30 -0000	1.65
-+++ dbus/dbus-message.h	4 Mar 2007 22:11:28 -0000
-@@ -34,6 +34,10 @@
- #include <dbus/dbus-errors.h>
- #include <stdarg.h>
- 
-+#ifdef DBUS_WINCE
-+#undef interface
-+#endif
-+
- DBUS_BEGIN_DECLS
- 
- /**
-Index: dbus/dbus-server-protected.h
-===================================================================
-RCS file: /cvs/dbus/dbus/dbus/dbus-server-protected.h,v
-retrieving revision 1.23
-diff -u -b -B -r1.23 dbus-server-protected.h
---- dbus/dbus-server-protected.h	1 Oct 2006 03:18:47 -0000	1.23
-+++ dbus/dbus-server-protected.h	4 Mar 2007 22:11:28 -0000
-@@ -144,7 +144,7 @@
- #define TRACE_LOCKS 0
- 
- #define SERVER_LOCK(server)   do {                                              \
--    if (TRACE_LOCKS) { _dbus_verbose ("  LOCK: %s\n", _DBUS_FUNCTION_NAME); }   \
-+    if (TRACE_LOCKS) { _dbus_verbose ("  LOCK  : %s\n", _DBUS_FUNCTION_NAME); }   \
-     _dbus_mutex_lock ((server)->mutex);                                          \
-     TOOK_LOCK_CHECK (server);                                                   \
-   } while (0)
-Index: dbus/dbus-server-socket.c
-===================================================================
-RCS file: /cvs/dbus/dbus/dbus/dbus-server-socket.c,v
-retrieving revision 1.3
-diff -u -b -B -r1.3 dbus-server-socket.c
---- dbus/dbus-server-socket.c	1 Oct 2006 15:36:18 -0000	1.3
-+++ dbus/dbus-server-socket.c	4 Mar 2007 22:11:28 -0000
-@@ -161,7 +161,7 @@
-       int client_fd;
-       int listen_fd;
-       
--      listen_fd = dbus_watch_get_fd (watch);
-+      listen_fd = dbus_watch_get_handle (watch);
- 
-       client_fd = _dbus_accept (listen_fd);
-       
-@@ -393,15 +393,19 @@
-           
-       if (port == NULL)
-         {
-+#if defined(DBUS_WIN) || defined(DBUS_WINCE)
-+          port = "0";
-+#else
-           _dbus_set_bad_address(error, "tcp", "port", NULL);
-           return DBUS_SERVER_LISTEN_BAD_ADDRESS;
-+#endif
-         }
- 
-       _dbus_string_init_const (&str, port);
-       sresult = _dbus_string_parse_int (&str, 0, &lport, NULL);
-       _dbus_string_free (&str);
-           
--      if (sresult == FALSE || lport <= 0 || lport > 65535)
-+      if (sresult == FALSE || lport < 0 || lport > 65535)
-         {
-           _dbus_set_bad_address(error, NULL, NULL, 
-                                 "Port is not an integer between 0 and 65535");
-Index: dbus/dbus-server-unix.c
-===================================================================
-RCS file: /cvs/dbus/dbus/dbus/dbus-server-unix.c,v
-retrieving revision 1.34
-diff -u -b -B -r1.34 dbus-server-unix.c
---- dbus/dbus-server-unix.c	20 Oct 2006 03:04:59 -0000	1.34
-+++ dbus/dbus-server-unix.c	4 Mar 2007 22:11:28 -0000
-@@ -24,9 +24,9 @@
- #include "dbus-internals.h"
- #include "dbus-server-unix.h"
- #include "dbus-server-socket.h"
--#include "dbus-transport-unix.h"
-+#include "dbus-transport.h"
- #include "dbus-connection-internal.h"
--#include "dbus-sysdeps-unix.h"
-+#include "dbus-sysdeps-win.h"
- #include "dbus-string.h"
- 
- /**
-@@ -155,6 +155,8 @@
-     }
- }
- 
-+#if !defined(DBUS_WIN) && !defined(DBUS_WINCE)
-+
- /**
-  * Creates a new server listening on the given Unix domain socket.
-  *
-@@ -232,5 +234,86 @@
-   return NULL;
- }
- 
-+
-+#else /* ifndef DBUS_WIN */
-+
-+// FIXME: move to dbus-serevrwin.c
-+
-+ /**
-+ * Creates a new server listening on the given Windows named pipe.
-+ *
-+ * @param path the path for the domain socket.
-+ * @param abstract #TRUE to use abstract socket namespace
-+ * @param error location to store reason for failure.
-+ * @returns the new server, or #NULL on failure.
-+ */
-+DBusServer*
-+_dbus_server_new_for_domain_socket (const char     *path,
-+                                    dbus_bool_t     abstract,
-+                                    DBusError      *error)
-+{
-+  DBusServer *server;
-+  int listen_fd;
-+  DBusString address;
-+  char *path_copy;
-+  
-+  _DBUS_ASSERT_ERROR_IS_CLEAR (error);
-+
-+  if (!_dbus_string_init (&address))
-+    {
-+      _DBUS_SET_OOM (error);
-+      return NULL;
-+    }
-+
-+  if ((abstract &&
-+       !_dbus_string_append (&address, "unix:abstract=")) ||
-+      (!abstract &&
-+       !_dbus_string_append (&address, "unix:path=")) ||
-+      !_dbus_string_append (&address, path))
-+    {
-+      _DBUS_SET_OOM (error);
-+      goto failed_0;
-+    }
-+
-+  path_copy = _dbus_strdup (path);
-+  if (path_copy == NULL)
-+    {
-+      _DBUS_SET_OOM (error);
-+      goto failed_0;
-+    }
-+  
-+  listen_fd = _dbus_listen_unix_socket (path, abstract, error);
-+  
-+  if (listen_fd < 0)
-+    {
-+      _DBUS_ASSERT_ERROR_IS_SET (error);
-+      goto failed_1;
-+    }
-+  
-+  _dbus_fd_set_close_on_exec (listen_fd);
-+  server = _dbus_server_new_for_socket (listen_fd, &address);
-+  if (server == NULL)
-+    {
-+      _DBUS_SET_OOM (error);
-+      goto failed_2;
-+    }
-+
-+  _dbus_server_socket_own_filename(server, path_copy);
-+
-+  _dbus_string_free (&address);
-+  
-+  return server;
-+
-+ failed_2:
-+  _dbus_close_socket (listen_fd, NULL);
-+ failed_1:
-+  dbus_free (path_copy);
-+ failed_0:
-+  _dbus_string_free (&address);
-+
-+  return NULL;
-+}
-+
-+#endif //DBUS_WIN
- /** @} */
- 
-Index: dbus/dbus-spawn.c
-===================================================================
-RCS file: /cvs/dbus/dbus/dbus/dbus-spawn.c,v
-retrieving revision 1.25
-diff -u -b -B -r1.25 dbus-spawn.c
---- dbus/dbus-spawn.c	4 Mar 2007 19:14:03 -0000	1.25
-+++ dbus/dbus-spawn.c	4 Mar 2007 22:11:28 -0000
-@@ -720,7 +720,7 @@
-   if (condition & DBUS_WATCH_HANGUP)
-     revents |= _DBUS_POLLHUP;
- 
--  fd = dbus_watch_get_fd (watch);
-+  fd = dbus_watch_get_handle (watch);
- 
-   if (fd == sitter->error_pipe_from_child)
-     handle_error_pipe (sitter, revents);
-Index: dbus/dbus-sysdeps-unix.c
-===================================================================
-RCS file: /cvs/dbus/dbus/dbus/dbus-sysdeps-unix.c,v
-retrieving revision 1.19
-diff -u -b -B -r1.19 dbus-sysdeps-unix.c
---- dbus/dbus-sysdeps-unix.c	3 Mar 2007 10:36:45 -0000	1.19
-+++ dbus/dbus-sysdeps-unix.c	4 Mar 2007 22:11:29 -0000
-@@ -169,6 +169,15 @@
-   return _dbus_write (fd, buffer, start, len);
- }
- 
-+int
-+_dbus_write_pipe (DBusStream        pipe,
-+                  const DBusString *buffer,
-+                  int               start,
-+                  int               len)
-+{
-+	return _dbus_write (pipe, buffer, start, len);
-+}
-+
- /**
-  * Like _dbus_write_two() but only works on sockets and is thus
-  * available on Windows.
-@@ -1493,6 +1502,53 @@
- #endif
- }
- 
-+/**
-+ * Atomically increments an integer
-+ *
-+ * @param atomic pointer to the integer to increment
-+ * @returns the value before incrementing
-+ *
-+ * @todo implement arch-specific faster atomic ops
-+ */
-+dbus_int32_t
-+_dbus_atomic_inc (DBusAtomic *atomic)
-+{
-+#ifdef DBUS_USE_ATOMIC_INT_486
-+  return atomic_exchange_and_add (atomic, 1);
-+#else
-+  dbus_int32_t res;
-+  _DBUS_LOCK (atomic);
-+  res = atomic->value;
-+  atomic->value += 1;
-+  _DBUS_UNLOCK (atomic);
-+  return res;
-+#endif
-+}
-+
-+/**
-+ * Atomically decrement an integer
-+ *
-+ * @param atomic pointer to the integer to decrement
-+ * @returns the value before decrementing
-+ *
-+ * @todo implement arch-specific faster atomic ops
-+ */
-+dbus_int32_t
-+_dbus_atomic_dec (DBusAtomic *atomic)
-+{
-+#ifdef DBUS_USE_ATOMIC_INT_486
-+  return atomic_exchange_and_add (atomic, -1);
-+#else
-+  dbus_int32_t res;
-+  
-+  _DBUS_LOCK (atomic);
-+  res = atomic->value;
-+  atomic->value -= 1;
-+  _DBUS_UNLOCK (atomic);
-+  return res;
-+#endif
-+}
-+
- #ifdef DBUS_BUILD_TESTS
- /** Gets our GID
-  * @returns process GID
-@@ -2840,4 +2896,9 @@
-   return FALSE;
- }
- 
-+// non empty implementation in the Windows code
-+void _dbus_daemon_release()
-+{
-+}
-+
- /* tests in dbus-sysdeps-util.c */
-Index: dbus/dbus-sysdeps-util.c
-===================================================================
-RCS file: /cvs/dbus/dbus/dbus/dbus-sysdeps-util.c,v
-retrieving revision 1.10
-diff -u -b -B -r1.10 dbus-sysdeps-util.c
---- dbus/dbus-sysdeps-util.c	13 Dec 2006 01:18:07 -0000	1.10
-+++ dbus/dbus-sysdeps-util.c	4 Mar 2007 22:11:29 -0000
-@@ -82,7 +82,7 @@
-   double val;
-   int pos;
- 
--#ifdef DBUS_WIN
-+#if defined(DBUS_WIN) || defined(DBUS_WINCE)
-   check_dirname ("foo\\bar", "foo");
-   check_dirname ("foo\\\\bar", "foo");
-   check_dirname ("foo/\\/bar", "foo");
-@@ -141,6 +141,7 @@
-       exit (1);
-     }
- 
-+#ifndef DBUS_WIN_FIXME
-   _dbus_string_init_const (&str, "0xff");
-   if (!_dbus_string_parse_double (&str,
- 				  0, &val, &pos))
-@@ -158,6 +159,8 @@
-       _dbus_warn ("_dbus_string_parse_double of \"0xff\" returned wrong position %d", pos);
-       exit (1);
-     }
-+#endif
-+
- #ifdef DBUS_WIN
-   check_path_absolute ("c:/", TRUE);
-   check_path_absolute ("c:/foo", TRUE);
-Index: dbus/dbus-sysdeps.c
-===================================================================
-RCS file: /cvs/dbus/dbus/dbus/dbus-sysdeps.c,v
-retrieving revision 1.120
-diff -u -b -B -r1.120 dbus-sysdeps.c
---- dbus/dbus-sysdeps.c	1 Jan 2007 21:29:59 -0000	1.120
-+++ dbus/dbus-sysdeps.c	4 Mar 2007 22:11:29 -0000
-@@ -119,11 +119,14 @@
-        * will get upset about.
-        */
-       
--      putenv_value = malloc (len + 1);
-+      putenv_value = malloc (len + 2);
-       if (putenv_value == NULL)
-         return FALSE;
- 
-       strcpy (putenv_value, varname);
-+#if defined(DBUS_WIN) || defined(DBUS_WINCE)
-+      strcat (putenv_value, "=");
-+#endif
-       
-       return (putenv (putenv_value) == 0);
- #endif
-@@ -413,6 +416,10 @@
- ascii_strtod (const char *nptr,
- 	      char      **endptr)
- {
-+  /* FIXME: The Win32 C library's strtod() doesn't handle hex.
-+   * Presumably many Unixes don't either.
-+   */
-+
-   char *fail_pos;
-   double val;
-   struct lconv *locale_data;
-Index: dbus/dbus-sysdeps.h
-===================================================================
-RCS file: /cvs/dbus/dbus/dbus/dbus-sysdeps.h,v
-retrieving revision 1.68
-diff -u -b -B -r1.68 dbus-sysdeps.h
---- dbus/dbus-sysdeps.h	31 Dec 2006 12:16:04 -0000	1.68
-+++ dbus/dbus-sysdeps.h	4 Mar 2007 22:11:29 -0000
-@@ -119,6 +119,7 @@
-  * 
-  */
- 
-+void        _dbus_daemon_release   (void);
- dbus_bool_t _dbus_open_tcp_socket  (int              *fd,
-                                     DBusError        *error);
- dbus_bool_t _dbus_close_socket     (int               fd,
-@@ -229,7 +230,7 @@
-  */
- struct DBusAtomic
- {
--#ifdef DBUS_WIN
-+#if defined(DBUS_WIN) || defined(DBUS_WINCE)
-   volatile long value; /**< Value of the atomic integer. */
- #else
-   volatile dbus_int32_t value; /**< Value of the atomic integer. */
-@@ -302,6 +303,12 @@
- 
- dbus_bool_t _dbus_get_standard_session_servicedirs (DBusList **dirs);
- 
-+typedef int DBusPipe;
-+int _dbus_write_pipe (DBusPipe          pipe,
-+                      const DBusString *buffer,
-+                      int               start,
-+                      int               len);
-+
- /** Opaque type for reading a directory listing */
- typedef struct DBusDirIter DBusDirIter;
- 
-@@ -317,6 +324,9 @@
- 
- void _dbus_fd_set_close_on_exec (int fd);
- 
-+int _dbus_mkdir    (const char *path,
-+                    mode_t mode);
-+
- const char* _dbus_get_tmpdir      (void);
- 
- /**
-Index: dbus/dbus-test.c
-===================================================================
-RCS file: /cvs/dbus/dbus/dbus/dbus-test.c,v
-retrieving revision 1.44
-diff -u -b -B -r1.44 dbus-test.c
---- dbus/dbus-test.c	15 Nov 2006 03:07:59 -0000	1.44
-+++ dbus/dbus-test.c	4 Mar 2007 22:11:29 -0000
-@@ -156,7 +156,9 @@
-   
-   run_test ("hash", specific_test, _dbus_hash_test);
- 
-+#if !defined(DBUS_WIN) && !defined(DBUS_WINCE)
-   run_data_test ("spawn", specific_test, _dbus_spawn_test, test_data_dir);
-+#endif
-   
-   run_data_test ("userdb", specific_test, _dbus_userdb_test, test_data_dir);
-   
-Index: dbus/dbus-threads.c
-===================================================================
-RCS file: /cvs/dbus/dbus/dbus/dbus-threads.c,v
-retrieving revision 1.36
-diff -u -b -B -r1.36 dbus-threads.c
---- dbus/dbus-threads.c	28 Oct 2006 01:41:37 -0000	1.36
-+++ dbus/dbus-threads.c	4 Mar 2007 22:11:29 -0000
-@@ -810,7 +810,11 @@
- dbus_bool_t
- _dbus_threads_init_debug (void)
- {
-+#if defined(DBUS_WIN) || defined(DBUS_WINCE)
-+  return _dbus_threads_init_platform_specific();
-+#else
-   return dbus_threads_init (&fake_functions);
-+#endif
- }
- 
- #endif /* DBUS_BUILD_TESTS */
-Index: dbus/dbus-transport-socket.c
-===================================================================
-RCS file: /cvs/dbus/dbus/dbus/dbus-transport-socket.c,v
-retrieving revision 1.4
-diff -u -b -B -r1.4 dbus-transport-socket.c
---- dbus/dbus-transport-socket.c	20 Oct 2006 03:05:00 -0000	1.4
-+++ dbus/dbus-transport-socket.c	4 Mar 2007 22:11:29 -0000
-@@ -175,7 +175,7 @@
-   DBusTransportSocket *socket_transport = (DBusTransportSocket*) transport;
-   dbus_bool_t need_read_watch;
- 
--  _dbus_verbose ("%s: fd = %d\n",
-+  _dbus_verbose (" %s: fd = %d\n",
-                  _DBUS_FUNCTION_NAME, socket_transport->fd);
-   
-   if (transport->connection == NULL)
-@@ -652,7 +652,7 @@
-   int total;
-   dbus_bool_t oom;
- 
--  _dbus_verbose ("%s: fd = %d\n", _DBUS_FUNCTION_NAME,
-+  _dbus_verbose (" %s: fd = %d\n", _DBUS_FUNCTION_NAME,
-                  socket_transport->fd);
-   
-   /* No messages without authentication! */
-@@ -873,7 +873,7 @@
-                        flags);
-       else
-         _dbus_verbose ("asked to handle watch %p on fd %d that we don't recognize\n",
--                       watch, dbus_watch_get_fd (watch));
-+                       watch, dbus_watch_get_handle (watch));
-     }
- #endif /* DBUS_ENABLE_VERBOSE_MODE */
- 
-@@ -1286,15 +1286,19 @@
-           
-       if (port == NULL)
-         {
-+#if defined(DBUS_WIN) || defined(DBUS_WINCE)
-+          port = "0";
-+#else
-           _dbus_set_bad_address (error, "tcp", "port", NULL);
-           return DBUS_TRANSPORT_OPEN_BAD_ADDRESS;
-+#endif
-         }
- 
-       _dbus_string_init_const (&str, port);
-       sresult = _dbus_string_parse_int (&str, 0, &lport, NULL);
-       _dbus_string_free (&str);
-           
--      if (sresult == FALSE || lport <= 0 || lport > 65535)
-+      if (sresult == FALSE || lport < 0 || lport > 65535)
-         {
-           _dbus_set_bad_address (error, NULL, NULL,
-                                  "Port is not an integer between 0 and 65535");
-Index: dbus/dbus-transport-socket.h
-===================================================================
-RCS file: /cvs/dbus/dbus/dbus/dbus-transport-socket.h,v
-retrieving revision 1.2
-diff -u -b -B -r1.2 dbus-transport-socket.h
---- dbus/dbus-transport-socket.h	16 Sep 2006 19:24:08 -0000	1.2
-+++ dbus/dbus-transport-socket.h	4 Mar 2007 22:11:29 -0000
-@@ -25,6 +25,10 @@
- 
- #include <dbus/dbus-transport-protected.h>
- 
-+#if defined(DBUS_WIN) || defined(DBUS_WINCE)
-+#include <dbus/dbus-sockets-win.h>
-+#endif
-+
- DBUS_BEGIN_DECLS
- 
- DBusTransport*          _dbus_transport_new_for_socket     (int                fd,
-Index: dbus/dbus-transport-unix.c
-===================================================================
-RCS file: /cvs/dbus/dbus/dbus/dbus-transport-unix.c,v
-retrieving revision 1.55
-diff -u -b -B -r1.55 dbus-transport-unix.c
---- dbus/dbus-transport-unix.c	20 Oct 2006 03:05:00 -0000	1.55
-+++ dbus/dbus-transport-unix.c	4 Mar 2007 22:11:29 -0000
-@@ -23,11 +23,16 @@
- 
- #include "dbus-internals.h"
- #include "dbus-connection-internal.h"
--#include "dbus-transport-unix.h"
- #include "dbus-transport-socket.h"
- #include "dbus-transport-protected.h"
- #include "dbus-watch.h"
-+
-+#if !defined(DBUS_WIN) && !defined(DBUS_WINCE)
-+#include "dbus-transport-unix.h"
- #include "dbus-sysdeps-unix.h"
-+#else
-+#include "dbus-sysdeps-win.h"
-+#endif
- 
- /**
-  * @defgroup DBusTransportUnix DBusTransport implementations for UNIX
-Index: dbus/dbus-transport.c
-===================================================================
-RCS file: /cvs/dbus/dbus/dbus/dbus-transport.c,v
-retrieving revision 1.54
-diff -u -b -B -r1.54 dbus-transport.c
---- dbus/dbus-transport.c	17 Oct 2006 20:52:13 -0000	1.54
-+++ dbus/dbus-transport.c	4 Mar 2007 22:11:29 -0000
-@@ -496,7 +496,7 @@
-    * set it and have it only be invoked when appropriate.
-    */
-   dbus_bool_t on_windows = FALSE;
--#ifdef DBUS_WIN
-+#if defined(DBUS_WIN) || defined(DBUS_WINCE)
-   on_windows = TRUE;
- #endif
-   
-@@ -674,7 +674,7 @@
-   if (transport->disconnected)
-     return TRUE;
- 
--  if (dbus_watch_get_fd (watch) < 0)
-+  if (dbus_watch_get_handle (watch) < 0)
-     {
-       _dbus_warn_check_failed ("Tried to handle an invalidated watch; this watch should have been removed\n");
-       return TRUE;
-Index: dbus/dbus-watch.c
-===================================================================
-RCS file: /cvs/dbus/dbus/dbus/dbus-watch.c,v
-retrieving revision 1.22
-diff -u -b -B -r1.22 dbus-watch.c
---- dbus/dbus-watch.c	21 Oct 2006 21:57:31 -0000	1.22
-+++ dbus/dbus-watch.c	4 Mar 2007 22:11:29 -0000
-@@ -286,7 +286,7 @@
-             
-             _dbus_verbose ("Adding a %s watch on fd %d using newly-set add watch function\n",
-                            watch_type,
--                           dbus_watch_get_fd (link->data));
-+                           dbus_watch_get_handle (link->data));
-           }
- #endif /* DBUS_ENABLE_VERBOSE_MODE */
-           
-@@ -302,7 +302,7 @@
-                                                              link2);
-                   
-                   _dbus_verbose ("Removing watch on fd %d using newly-set remove function because initial add failed\n",
--                                 dbus_watch_get_fd (link2->data));
-+                                 dbus_watch_get_handle (link2->data));
-                   
-                   (* remove_function) (link2->data, data);
-                   
-@@ -359,7 +359,7 @@
-   if (watch_list->add_watch_function != NULL)
-     {
-       _dbus_verbose ("Adding watch on fd %d\n",
--                     dbus_watch_get_fd (watch));
-+                     dbus_watch_get_handle (watch));
-       
-       if (!(* watch_list->add_watch_function) (watch,
-                                                watch_list->watch_data))
-@@ -390,7 +390,7 @@
-   if (watch_list->remove_watch_function != NULL)
-     {
-       _dbus_verbose ("Removing watch on fd %d\n",
--                     dbus_watch_get_fd (watch));
-+                     dbus_watch_get_handle (watch));
-       
-       (* watch_list->remove_watch_function) (watch,
-                                              watch_list->watch_data);
-@@ -422,7 +422,7 @@
-   if (watch_list->watch_toggled_function != NULL)
-     {
-       _dbus_verbose ("Toggling watch %p on fd %d to %d\n",
--                     watch, dbus_watch_get_fd (watch), watch->enabled);
-+                     watch, dbus_watch_get_handle (watch), watch->enabled);
-       
-       (* watch_list->watch_toggled_function) (watch,
-                                               watch_list->watch_data);
-@@ -490,10 +490,32 @@
-  * @returns the file descriptor to watch.
-  */
- int
-+dbus_watch_get_handle (DBusWatch *watch)
-+{
-+  return watch->fd;
-+}
-+
-+#if defined(DBUS_WIN) || defined(DBUS_WINCE)
-+// never used by the dbus code
-+#include "dbus-sysdeps-win.h"
-+int 
-+dbus_watch_get_fd (DBusWatch *watch)
-+{
-+	DBusSocket *p;
-+	if (watch->fd != -1) {
-+	    _dbus_handle_to_socket(watch->fd,&p);
-+	    return p->fd;
-+	}
-+	else
-+		return -1;
-+}
-+#else
-+int
- dbus_watch_get_fd (DBusWatch *watch)
- {
-   return watch->fd;
- }
-+#endif
- 
- /**
-  * Gets flags from DBusWatchFlags indicating
-@@ -546,7 +568,7 @@
-                      DBusFreeFunction  free_data_function)
- {
-   _dbus_verbose ("Setting watch fd %d data to data = %p function = %p from data = %p function = %p\n",
--                 dbus_watch_get_fd (watch),
-+                 dbus_watch_get_handle (watch),
-                  data, free_data_function, watch->data, watch->free_data_function);
-   
-   if (watch->free_data_function != NULL)
-Index: test/test-segfault.c
-===================================================================
-RCS file: /cvs/dbus/dbus/test/test-segfault.c,v
-retrieving revision 1.4
-diff -u -b -B -r1.4 test-segfault.c
---- test/test-segfault.c	30 Nov 2005 19:32:26 -0000	1.4
-+++ test/test-segfault.c	4 Mar 2007 22:11:31 -0000
-@@ -1,9 +1,26 @@
- /* This is simply a process that segfaults */
-+#include <config.h>
- #include <stdlib.h>
- #include <signal.h>
- 
-+#ifdef DBUS_WIN
-+#define RLIMIT_CORE	4		/* max core file size */
-+typedef unsigned long rlim_t;
-+struct rlimit {
-+	rlim_t	rlim_cur;
-+	rlim_t	rlim_max;
-+};
-+static int getrlimit (int __resource, struct rlimit *__rlp) {
-+  return -1;
-+}
-+static int setrlimit (int __resource, const struct rlimit *__rlp) {
-+  return -1;
-+}
-+#else
- #include <sys/time.h>
- #include <sys/resource.h>
-+#endif
-+
- 
- int
- main (int argc, char **argv)
-Index: test/test-utils.c
-===================================================================
-RCS file: /cvs/dbus/dbus/test/test-utils.c,v
-retrieving revision 1.8
-diff -u -b -B -r1.8 test-utils.c
---- test/test-utils.c	1 Oct 2006 15:36:18 -0000	1.8
-+++ test/test-utils.c	4 Mar 2007 22:11:31 -0000
-@@ -1,5 +1,7 @@
- #include "test-utils.h"
- 
-+void _dbus_connection_close_internal (DBusConnection *connection);
-+
- typedef struct
- {
-   DBusLoop *loop;
+Index: bus/activation.c
+===================================================================
+RCS file: /cvs/dbus/dbus/bus/activation.c,v
+retrieving revision 1.49
+diff -u -3 -p -B -r1.49 activation.c
+--- bus/activation.c	4 Mar 2007 22:09:50 -0000	1.49
++++ bus/activation.c	6 Mar 2007 20:54:30 -0000
+@@ -34,7 +34,6 @@
+ #include <dbus/dbus-spawn.h>
+ #include <dbus/dbus-timeout.h>
+ #include <dbus/dbus-sysdeps.h>
+-#include <dirent.h>
+ #include <errno.h>
+ 
+ #define DBUS_SERVICE_SECTION "D-BUS Service"
+Index: bus/bus.c
+===================================================================
+RCS file: /cvs/dbus/dbus/bus/bus.c,v
+retrieving revision 1.74
+diff -u -3 -p -B -r1.74 bus.c
+--- bus/bus.c	20 Dec 2006 06:18:19 -0000	1.74
++++ bus/bus.c	6 Mar 2007 20:54:30 -0000
+@@ -625,7 +625,7 @@ bus_context_new (const DBusString *confi
+         }
+ 
+       bytes = _dbus_string_get_length (&addr);
+-      if (_dbus_write_socket (print_addr_fd, &addr, 0, bytes) != bytes)
++      if (_dbus_write_pipe (print_addr_fd, &addr, 0, bytes) != bytes)
+         {
+           dbus_set_error (error, DBUS_ERROR_FAILED,
+                           "Printing message bus address: %s\n",
+@@ -726,7 +726,7 @@ bus_context_new (const DBusString *confi
+         }
+ 
+       bytes = _dbus_string_get_length (&pid);
+-      if (_dbus_write_socket (print_pid_fd, &pid, 0, bytes) != bytes)
++      if (_dbus_write_pipe (print_pid_fd, &pid, 0, bytes) != bytes)
+         {
+           dbus_set_error (error, DBUS_ERROR_FAILED,
+                           "Printing message bus PID: %s\n",
+Index: bus/config-loader-libxml.c
+===================================================================
+RCS file: /cvs/dbus/dbus/bus/config-loader-libxml.c,v
+retrieving revision 1.8
+diff -u -3 -p -B -r1.8 config-loader-libxml.c
+--- bus/config-loader-libxml.c	10 Aug 2004 03:06:59 -0000	1.8
++++ bus/config-loader-libxml.c	6 Mar 2007 20:54:31 -0000
+@@ -134,6 +134,9 @@ xml_text_reader_error (void *arg, xmlErr
+     }
+ }
+ 
++#ifdef DBUS_WIN
++  DBusString *_dbus_get_working_dir(void);
++#endif
+ 
+ BusConfigParser*
+ bus_config_load (const DBusString      *file,
+@@ -147,7 +150,9 @@ bus_config_load (const DBusString      *
+   DBusString dirname, data;
+   DBusError tmp_error;
+   int ret;
+-  
++#ifdef DBUS_WIN
++	DBusString *dbusdir;
++#endif
+   _DBUS_ASSERT_ERROR_IS_CLEAR (error);
+   
+   parser = NULL;
+@@ -177,13 +182,19 @@ bus_config_load (const DBusString      *
+       xmlSetGenericErrorFunc (NULL, xml_shut_up);
+     }
+ 
++#ifdef DBUS_WIN
++  dbusdir = _dbus_get_working_dir();
++	if (dbusdir)
++  	parser = bus_config_parser_new (dbusdir, is_toplevel, parent);
++  else  
++#endif
+   if (!_dbus_string_get_dirname (file, &dirname))
+     {
+       _DBUS_SET_OOM (error);
+       goto failed;
+     }
+-  
+   parser = bus_config_parser_new (&dirname, is_toplevel, parent);
++  
+   if (parser == NULL)
+     {
+       _DBUS_SET_OOM (error);
+Index: bus/config-parser.c
+===================================================================
+RCS file: /cvs/dbus/dbus/bus/config-parser.c,v
+retrieving revision 1.47
+diff -u -3 -p -B -r1.47 config-parser.c
+--- bus/config-parser.c	26 Jan 2007 16:10:09 -0000	1.47
++++ bus/config-parser.c	6 Mar 2007 20:54:31 -0000
+@@ -27,6 +27,7 @@
+ #include "selinux.h"
+ #include <dbus/dbus-list.h>
+ #include <dbus/dbus-internals.h>
++#include <dbus/dbus-userdb.h>
+ #include <string.h>
+ 
+ typedef enum
+@@ -3070,10 +3071,15 @@ process_test_equiv_subdir (const DBusStr
+ 
+ static const char *test_service_dir_matches[] = 
+         {
++#ifdef DBUS_WIN
++         DBUS_DATADIR"/dbus-1/services",
++         NULL,
++#else
+          "/testusr/testlocal/testshare/dbus-1/services",
+          "/testusr/testshare/dbus-1/services",
+          DBUS_DATADIR"/dbus-1/services",
+          "/testhome/foo/.testlocal/testshare/dbus-1/services",         
++#endif 
+          NULL
+         };
+ 
+@@ -3082,11 +3088,32 @@ test_default_session_servicedirs (void)
+ {
+   DBusList *dirs;
+   DBusList *link;
++  DBusString progs;
++  const char *common_progs;
+   int i;
+ 
++  common_progs = _dbus_getenv ("CommonProgramFiles");
++  if (common_progs) 
++    {
++      if (!_dbus_string_init (&progs))
++        return FALSE;
++
++      if (!_dbus_string_append (&progs, common_progs)) 
++        {
++          _dbus_string_free (&progs);
++          return FALSE;
++        }
++
++      if (!_dbus_string_append (&progs, "/dbus-1/services")) 
++        {
++          _dbus_string_free (&progs);
++          return FALSE;
++        }
++      test_service_dir_matches[1] = _dbus_string_get_const_data(&progs);
++    }
+   dirs = NULL;
+ 
+-  printf ("Testing retriving the default session service directories\n");
++  printf ("Testing retrieving the default session service directories\n");
+   if (!_dbus_get_standard_session_servicedirs (&dirs))
+     _dbus_assert_not_reached ("couldn't get stardard dirs");
+ 
+@@ -3097,7 +3124,7 @@ test_default_session_servicedirs (void)
+       
+       printf ("    default service dir: %s\n", (char *)link->data);
+       _dbus_string_init_const (&path, (char *)link->data);
+-      if (!_dbus_string_ends_with_c_str (&path, "share/dbus-1/services"))
++      if (!_dbus_string_ends_with_c_str (&path, "dbus-1/services"))
+         {
+           printf ("error with default session service directories\n");
+           return FALSE;
+@@ -3150,6 +3177,7 @@ test_default_session_servicedirs (void)
+       return FALSE;
+     }
+     
++  _dbus_string_free (&progs);
+   return TRUE;
+ }
+ 			   
+Index: bus/connection.c
+===================================================================
+RCS file: /cvs/dbus/dbus/bus/connection.c,v
+retrieving revision 1.66
+diff -u -3 -p -B -r1.66 connection.c
+--- bus/connection.c	12 Dec 2006 21:24:07 -0000	1.66
++++ bus/connection.c	6 Mar 2007 20:54:32 -0000
+@@ -1536,7 +1536,7 @@ cancel_pending_reply (void *data)
+ {
+   CancelPendingReplyData *d = data;
+ 
+-  _dbus_verbose ("%s: d = %p\n", _DBUS_FUNCTION_NAME, d);
++  _dbus_verbose_C_S ("%s: d = %p\n", _DBUS_FUNCTION_NAME, d);
+   
+   if (!_dbus_list_remove (&d->connections->pending_replies->items,
+                           d->pending))
+@@ -1550,7 +1550,7 @@ cancel_pending_reply_data_free (void *da
+ {
+   CancelPendingReplyData *d = data;
+ 
+-  _dbus_verbose ("%s: d = %p\n", _DBUS_FUNCTION_NAME, d);
++  _dbus_verbose_C_S ("%s: d = %p\n", _DBUS_FUNCTION_NAME, d);
+   
+   /* d->pending should be either freed or still
+    * in the list of pending replies (owned by someone
+@@ -1687,7 +1687,7 @@ cancel_check_pending_reply (void *data)
+ {
+   CheckPendingReplyData *d = data;
+ 
+-  _dbus_verbose ("%s: d = %p\n", _DBUS_FUNCTION_NAME, d);
++  _dbus_verbose_C_S ("%s: d = %p\n", _DBUS_FUNCTION_NAME, d);
+   
+   _dbus_list_prepend_link (&d->connections->pending_replies->items,
+                            d->link);
+@@ -1699,7 +1699,7 @@ check_pending_reply_data_free (void *dat
+ {
+   CheckPendingReplyData *d = data;
+ 
+-  _dbus_verbose ("%s: d = %p\n", _DBUS_FUNCTION_NAME, d);
++  _dbus_verbose_C_S ("%s: d = %p\n", _DBUS_FUNCTION_NAME, d);
+   
+   if (d->link != NULL)
+     {
+Index: bus/dispatch.c
+===================================================================
+RCS file: /cvs/dbus/dbus/bus/dispatch.c,v
+retrieving revision 1.78
+diff -u -3 -p -B -r1.78 dispatch.c
+--- bus/dispatch.c	23 Oct 2006 17:25:52 -0000	1.78
++++ bus/dispatch.c	6 Mar 2007 20:54:33 -0000
+@@ -428,6 +428,11 @@ block_connection_until_message_from_bus 
+     }
+ }
+ 
++#ifdef DBUS_WIN
++#include <tools/dbus-print-message.h>
++#include <tools/dbus-print-message.c>
++#endif
++
+ static void
+ spin_connection_until_authenticated (BusContext     *context,
+                                      DBusConnection *connection)
+@@ -439,6 +444,19 @@ spin_connection_until_authenticated (Bus
+       bus_test_run_bus_loop (context, FALSE);
+       bus_test_run_clients_loop (FALSE);
+     }
++#ifdef DBUS_WIN
++  if ( dbus_connection_get_dispatch_status(connection) != DBUS_DISPATCH_COMPLETE)
++    {
++      DBusMessage *message;
++	  message = dbus_connection_pop_message (connection);
++	  printf ("spin_connection_until_authenticated failed,\n");
++	  printf ("because of a non dispatched message:\n");
++	  print_message(message, FALSE);
++	  printf ("\n");	 
++	  _dbus_assert_not_reached ("spin_connection_until_authenticated failed\n ");
++    }
++#endif
++
+   _dbus_verbose (" ... done spinning to auth connection %p\n", connection);
+ }
+ 
+@@ -2624,6 +2642,11 @@ check_segfault_service_no_auto_start (Bu
+   const char *segv_service;
+   dbus_uint32_t flags;
+   
++  _dbus_warn("TODO: dispatch.c: check_segfault_service_no_auto_start\n");
++#ifndef DBUS_WIN_FIXME
++  return TRUE;
++#endif
++
+   message = dbus_message_new_method_call (DBUS_SERVICE_DBUS,
+                                           DBUS_PATH_DBUS,
+                                           DBUS_INTERFACE_DBUS,
+@@ -2698,9 +2721,12 @@ check_segfault_service_no_auto_start (Bu
+         }
+       else
+         {
++/* no DBUS_ERROR_NO_MEMORY on windows (no have_fork_errnum)*/
++#ifndef DBUS_WIN_FIXME
+           warn_unexpected (connection, message, "not this error");
+ 
+           goto out;
++#endif
+         }
+     }
+   else
+@@ -4062,14 +4088,20 @@ bus_dispatch_test (const DBusString *tes
+       _dbus_assert_not_reached ("initial connection setup failed");
+     }
+   
++  _dbus_warn("TODO: dispatch.c create_and_hello test\n");
++#ifndef DBUS_WIN_FIXME  
+   check1_try_iterations (context, "create_and_hello",
+                          check_hello_connection);
++#endif
+   
+   check2_try_iterations (context, foo, "nonexistent_service_no_auto_start",
+                          check_nonexistent_service_no_auto_start);
+ 
++  _dbus_warn("TODO: dispatch.c segfault_service_no_auto_start test\n");
++#ifndef DBUS_WIN_FIXME
+   check2_try_iterations (context, foo, "segfault_service_no_auto_start",
+                          check_segfault_service_no_auto_start);
++#endif
+   
+   check2_try_iterations (context, foo, "existent_service_no_auto_start",
+                          check_existent_service_no_auto_start);
+@@ -4077,8 +4109,12 @@ bus_dispatch_test (const DBusString *tes
+   check2_try_iterations (context, foo, "nonexistent_service_auto_start",
+                          check_nonexistent_service_auto_start);
+   
++
++  _dbus_warn("TODO: dispatch.c segfault_service_auto_start test\n");
++#ifndef DBUS_WIN_FIXME    
+   check2_try_iterations (context, foo, "segfault_service_auto_start",
+                          check_segfault_service_auto_start);
++#endif
+ 
+   check2_try_iterations (context, foo, "shell_fail_service_auto_start",
+                          check_shell_fail_service_auto_start);
+@@ -4095,8 +4131,11 @@ bus_dispatch_test (const DBusString *tes
+   if (!check_existent_service_auto_start (context, foo))
+     _dbus_assert_not_reached ("existent service auto start failed");
+ 
++  _dbus_warn("TODO: dispatch.c check_shell_service_success_auto_start test\n");
++#ifndef DBUS_WIN_FIXME  
+   if (!check_shell_service_success_auto_start (context, foo))
+     _dbus_assert_not_reached ("shell success service auto start failed");
++#endif
+ 
+   _dbus_verbose ("Disconnecting foo, bar, and baz\n");
+ 
+@@ -4147,8 +4186,11 @@ bus_dispatch_sha1_test (const DBusString
+       _dbus_assert_not_reached ("initial connection setup failed");
+     }
+   
++  _dbus_warn("TODO: dispatch.c: create_and_hello_sha1 test\n");
++#ifndef DBUS_WIN_FIXME  
+   check1_try_iterations (context, "create_and_hello_sha1",
+                          check_hello_connection);
++#endif
+ 
+   kill_client_connection_unchecked (foo);
+ 
+Index: bus/main.c
+===================================================================
+RCS file: /cvs/dbus/dbus/bus/main.c,v
+retrieving revision 1.36
+diff -u -3 -p -B -r1.36 main.c
+--- bus/main.c	20 Dec 2006 06:18:19 -0000	1.36
++++ bus/main.c	6 Mar 2007 20:54:33 -0000
+@@ -254,6 +254,12 @@ main (int argc, char **argv)
+   dbus_bool_t print_pid;
+   int force_fork;
+ 
++#ifdef _WIN32
++	extern int _dbus_init_working_dir(char *s);
++	if (!_dbus_init_working_dir(argv[0]))
++		return 1;
++#endif
++
+   if (!_dbus_string_init (&config_file))
+     return 1;
+ 
+Index: bus/policy.c
+===================================================================
+RCS file: /cvs/dbus/dbus/bus/policy.c,v
+retrieving revision 1.24
+diff -u -3 -p -B -r1.24 policy.c
+--- bus/policy.c	12 Dec 2006 21:24:07 -0000	1.24
++++ bus/policy.c	6 Mar 2007 20:54:33 -0000
+@@ -324,9 +324,13 @@ bus_policy_create_client_policy (BusPoli
+ 
+   if (!dbus_connection_get_unix_user (connection, &uid))
+     {
++#ifdef DBUS_WIN
++		_dbus_verbose ("policy.c: dbus_connection_get_unix_user check disabled under windows\n");
++#else
+       dbus_set_error (error, DBUS_ERROR_FAILED,
+                       "No user ID known for connection, cannot determine security policy\n");
+       goto failed;
++#endif
+     }
+ 
+   if (_dbus_hash_table_get_n_entries (policy->rules_by_uid) > 0)
+Index: dbus/dbus-bus.c
+===================================================================
+RCS file: /cvs/dbus/dbus/dbus/dbus-bus.c,v
+retrieving revision 1.64
+diff -u -3 -p -B -r1.64 dbus-bus.c
+--- dbus/dbus-bus.c	28 Oct 2006 01:41:37 -0000	1.64
++++ dbus/dbus-bus.c	6 Mar 2007 20:54:33 -0000
+@@ -350,8 +350,10 @@ _dbus_bus_notify_shared_connection_disco
+ {
+   int i;
+   
++#if !defined(DBUS_WIN) && !defined(DBUS_WINCE)
++   // qt example pong says "QMutex::lock: Deadlock detected"
+   _DBUS_LOCK (bus);
+-
++#endif
+   /* We are expecting to have the connection saved in only one of these
+    * slots, but someone could in a pathological case set system and session
+    * bus to the same bus or something. Or set one of them to the starter
+@@ -366,7 +368,9 @@ _dbus_bus_notify_shared_connection_disco
+         }
+     }
+ 
++#if !defined(DBUS_WIN) && !defined(DBUS_WINCE)
+   _DBUS_UNLOCK (bus);
++#endif
+ }
+ 
+ static DBusConnection *
+Index: dbus/dbus-connection.c
+===================================================================
+RCS file: /cvs/dbus/dbus/dbus/dbus-connection.c,v
+retrieving revision 1.154
+diff -u -3 -p -B -r1.154 dbus-connection.c
+--- dbus/dbus-connection.c	15 Nov 2006 03:07:59 -0000	1.154
++++ dbus/dbus-connection.c	6 Mar 2007 20:54:40 -0000
+@@ -62,7 +62,7 @@
+ #define TRACE_LOCKS 1
+ 
+ #define CONNECTION_LOCK(connection)   do {                                      \
+-    if (TRACE_LOCKS) { _dbus_verbose ("  LOCK: %s\n", _DBUS_FUNCTION_NAME); }   \
++    if (TRACE_LOCKS) { _dbus_verbose ("  LOCK  : %s\n", _DBUS_FUNCTION_NAME); }   \
+     _dbus_mutex_lock ((connection)->mutex);                                      \
+     TOOK_LOCK_CHECK (connection);                                               \
+   } while (0)
+@@ -4718,9 +4718,9 @@ dbus_connection_get_unix_fd (DBusConnect
+   _dbus_return_val_if_fail (connection != NULL, FALSE);
+   _dbus_return_val_if_fail (connection->transport != NULL, FALSE);
+ 
+-#ifdef DBUS_WIN
++#if defined(DBUS_WIN) || defined(DBUS_WINCE)
+   /* FIXME do this on a lower level */
+-  return FALSE;
++  //return FALSE;
+ #endif
+   
+   return dbus_connection_get_socket(connection, fd);
+@@ -4790,12 +4790,12 @@ dbus_connection_get_unix_user (DBusConne
+   _dbus_return_val_if_fail (connection != NULL, FALSE);
+   _dbus_return_val_if_fail (uid != NULL, FALSE);
+ 
+-#ifdef DBUS_WIN
++#if defined(DBUS_WIN) || defined(DBUS_WINCE)
+   /* FIXME this should be done at a lower level, but it's kind of hard,
+    * just want to be sure we don't ship with this API returning
+    * some weird internal fake uid for 1.0
+    */
+-  return FALSE;
++  //return FALSE;
+ #endif
+   
+   CONNECTION_LOCK (connection);
+@@ -4829,12 +4829,12 @@ dbus_connection_get_unix_process_id (DBu
+   _dbus_return_val_if_fail (connection != NULL, FALSE);
+   _dbus_return_val_if_fail (pid != NULL, FALSE);
+ 
+-#ifdef DBUS_WIN
++#if defined(DBUS_WIN) || defined(DBUS_WINCE)
+   /* FIXME this should be done at a lower level, but it's kind of hard,
+    * just want to be sure we don't ship with this API returning
+    * some weird internal fake uid for 1.0
+    */
+-  return FALSE;
++  //return FALSE;
+ #endif
+   
+   CONNECTION_LOCK (connection);
+Index: dbus/dbus-connection.h
+===================================================================
+RCS file: /cvs/dbus/dbus/dbus/dbus-connection.h,v
+retrieving revision 1.49
+diff -u -3 -p -B -r1.49 dbus-connection.h
+--- dbus/dbus-connection.h	15 Nov 2006 03:07:59 -0000	1.49
++++ dbus/dbus-connection.h	6 Mar 2007 20:54:40 -0000
+@@ -330,6 +330,9 @@ dbus_bool_t dbus_connection_get_socket  
+  */
+ 
+ int          dbus_watch_get_fd      (DBusWatch        *watch);
++#if defined (DBUS_COMPILATION)
++int          dbus_watch_get_handle  (DBusWatch        *watch);
++#endif
+ unsigned int dbus_watch_get_flags   (DBusWatch        *watch);
+ void*        dbus_watch_get_data    (DBusWatch        *watch);
+ void         dbus_watch_set_data    (DBusWatch        *watch,
+Index: dbus/dbus-internals.c
+===================================================================
+RCS file: /cvs/dbus/dbus/dbus/dbus-internals.c,v
+retrieving revision 1.55
+diff -u -3 -p -B -r1.55 dbus-internals.c
+--- dbus/dbus-internals.c	15 Nov 2006 01:52:01 -0000	1.55
++++ dbus/dbus-internals.c	6 Mar 2007 20:54:40 -0000
+@@ -295,7 +295,7 @@ static dbus_bool_t verbose = TRUE;
+ #include <pthread.h>
+ #endif
+ 
+-static inline void
++static void
+ _dbus_verbose_init (void)
+ {
+   if (!verbose_initted)
+Index: dbus/dbus-mainloop.c
+===================================================================
+RCS file: /cvs/dbus/dbus/dbus/dbus-mainloop.c,v
+retrieving revision 1.19
+diff -u -3 -p -B -r1.19 dbus-mainloop.c
+--- dbus/dbus-mainloop.c	20 Oct 2006 03:04:59 -0000	1.19
++++ dbus/dbus-mainloop.c	6 Mar 2007 20:54:40 -0000
+@@ -90,8 +90,8 @@ typedef struct
+   Callback callback;
+   DBusTimeout *timeout;
+   DBusTimeoutFunction function;
+-  unsigned long last_tv_sec;
+-  unsigned long last_tv_usec;
++  long last_tv_sec;
++  long last_tv_usec;
+ } TimeoutCallback;
+ 
+ #define WATCH_CALLBACK(callback)   ((WatchCallback*)callback)
+@@ -598,7 +598,7 @@ _dbus_loop_iterate (DBusLoop     *loop,
+ 
+ #if MAINLOOP_SPEW
+               _dbus_verbose ("  skipping watch on fd %d as it was out of memory last time\n",
+-                             dbus_watch_get_fd (wcb->watch));
++                             dbus_watch_get_handle (wcb->watch));
+ #endif
+             }
+           else if (dbus_watch_get_enabled (wcb->watch))
+@@ -609,7 +609,7 @@ _dbus_loop_iterate (DBusLoop     *loop,
+                   
+               flags = dbus_watch_get_flags (wcb->watch);
+                   
+-              fds[n_fds].fd = dbus_watch_get_fd (wcb->watch);
++              fds[n_fds].fd = dbus_watch_get_handle (wcb->watch);
+               fds[n_fds].revents = 0;
+               fds[n_fds].events = 0;
+               if (flags & DBUS_WATCH_READABLE)
+@@ -628,7 +628,7 @@ _dbus_loop_iterate (DBusLoop     *loop,
+             {
+ #if MAINLOOP_SPEW
+               _dbus_verbose ("  skipping disabled watch on fd %d  %s\n",
+-                             dbus_watch_get_fd (wcb->watch),
++                             dbus_watch_get_handle (wcb->watch),
+                              watch_flags_to_string (dbus_watch_get_flags (wcb->watch)));
+ #endif
+             }
+@@ -640,8 +640,8 @@ _dbus_loop_iterate (DBusLoop     *loop,
+   timeout = -1;
+   if (loop->timeout_count > 0)
+     {
+-      unsigned long tv_sec;
+-      unsigned long tv_usec;
++      long tv_sec;
++      long tv_usec;
+       
+       _dbus_get_current_time (&tv_sec, &tv_usec);
+           
+@@ -710,8 +710,8 @@ _dbus_loop_iterate (DBusLoop     *loop,
+ 
+   if (loop->timeout_count > 0)
+     {
+-      unsigned long tv_sec;
+-      unsigned long tv_usec;
++      long tv_sec;
++      long tv_usec;
+ 
+       _dbus_get_current_time (&tv_sec, &tv_usec);
+ 
+@@ -883,6 +883,8 @@ _dbus_loop_quit (DBusLoop *loop)
+   
+   loop->depth -= 1;
+ 
++ _dbus_daemon_release ();
++
+   _dbus_verbose ("Quit main loop, depth %d -> %d\n",
+                  loop->depth + 1, loop->depth);
+ }
+Index: dbus/dbus-message.h
+===================================================================
+RCS file: /cvs/dbus/dbus/dbus/dbus-message.h,v
+retrieving revision 1.65
+diff -u -3 -p -B -r1.65 dbus-message.h
+--- dbus/dbus-message.h	21 Oct 2006 18:51:30 -0000	1.65
++++ dbus/dbus-message.h	6 Mar 2007 20:54:41 -0000
+@@ -34,6 +34,10 @@
+ #include <dbus/dbus-errors.h>
+ #include <stdarg.h>
+ 
++#ifdef DBUS_WINCE
++#undef interface
++#endif
++
+ DBUS_BEGIN_DECLS
+ 
+ /**
+Index: dbus/dbus-server-protected.h
+===================================================================
+RCS file: /cvs/dbus/dbus/dbus/dbus-server-protected.h,v
+retrieving revision 1.23
+diff -u -3 -p -B -r1.23 dbus-server-protected.h
+--- dbus/dbus-server-protected.h	1 Oct 2006 03:18:47 -0000	1.23
++++ dbus/dbus-server-protected.h	6 Mar 2007 20:54:42 -0000
+@@ -144,7 +144,7 @@ DBusServerListenResult _dbus_server_list
+ #define TRACE_LOCKS 0
+ 
+ #define SERVER_LOCK(server)   do {                                              \
+-    if (TRACE_LOCKS) { _dbus_verbose ("  LOCK: %s\n", _DBUS_FUNCTION_NAME); }   \
++    if (TRACE_LOCKS) { _dbus_verbose ("  LOCK  : %s\n", _DBUS_FUNCTION_NAME); }   \
+     _dbus_mutex_lock ((server)->mutex);                                          \
+     TOOK_LOCK_CHECK (server);                                                   \
+   } while (0)
+Index: dbus/dbus-server-socket.c
+===================================================================
+RCS file: /cvs/dbus/dbus/dbus/dbus-server-socket.c,v
+retrieving revision 1.3
+diff -u -3 -p -B -r1.3 dbus-server-socket.c
+--- dbus/dbus-server-socket.c	1 Oct 2006 15:36:18 -0000	1.3
++++ dbus/dbus-server-socket.c	6 Mar 2007 20:54:42 -0000
+@@ -161,7 +161,7 @@ socket_handle_watch (DBusWatch    *watch
+       int client_fd;
+       int listen_fd;
+       
+-      listen_fd = dbus_watch_get_fd (watch);
++      listen_fd = dbus_watch_get_handle (watch);
+ 
+       client_fd = _dbus_accept (listen_fd);
+       
+@@ -393,15 +393,19 @@ _dbus_server_listen_socket (DBusAddressE
+           
+       if (port == NULL)
+         {
++#if defined(DBUS_WIN) || defined(DBUS_WINCE)
++          port = "0";
++#else
+           _dbus_set_bad_address(error, "tcp", "port", NULL);
+           return DBUS_SERVER_LISTEN_BAD_ADDRESS;
++#endif
+         }
+ 
+       _dbus_string_init_const (&str, port);
+       sresult = _dbus_string_parse_int (&str, 0, &lport, NULL);
+       _dbus_string_free (&str);
+           
+-      if (sresult == FALSE || lport <= 0 || lport > 65535)
++      if (sresult == FALSE || lport < 0 || lport > 65535)
+         {
+           _dbus_set_bad_address(error, NULL, NULL, 
+                                 "Port is not an integer between 0 and 65535");
+Index: dbus/dbus-server-unix.c
+===================================================================
+RCS file: /cvs/dbus/dbus/dbus/dbus-server-unix.c,v
+retrieving revision 1.34
+diff -u -3 -p -B -r1.34 dbus-server-unix.c
+--- dbus/dbus-server-unix.c	20 Oct 2006 03:04:59 -0000	1.34
++++ dbus/dbus-server-unix.c	6 Mar 2007 20:54:42 -0000
+@@ -24,9 +24,9 @@
+ #include "dbus-internals.h"
+ #include "dbus-server-unix.h"
+ #include "dbus-server-socket.h"
+-#include "dbus-transport-unix.h"
++#include "dbus-transport.h"
+ #include "dbus-connection-internal.h"
+-#include "dbus-sysdeps-unix.h"
++#include "dbus-sysdeps-win.h"
+ #include "dbus-string.h"
+ 
+ /**
+@@ -155,6 +155,8 @@ _dbus_server_listen_platform_specific (D
+     }
+ }
+ 
++#if !defined(DBUS_WIN) && !defined(DBUS_WINCE)
++
+ /**
+  * Creates a new server listening on the given Unix domain socket.
+  *
+@@ -232,5 +234,86 @@ _dbus_server_new_for_domain_socket (cons
+   return NULL;
+ }
+ 
++
++#else /* ifndef DBUS_WIN */
++
++// FIXME: move to dbus-serevrwin.c
++
++ /**
++ * Creates a new server listening on the given Windows named pipe.
++ *
++ * @param path the path for the domain socket.
++ * @param abstract #TRUE to use abstract socket namespace
++ * @param error location to store reason for failure.
++ * @returns the new server, or #NULL on failure.
++ */
++DBusServer*
++_dbus_server_new_for_domain_socket (const char     *path,
++                                    dbus_bool_t     abstract,
++                                    DBusError      *error)
++{
++  DBusServer *server;
++  int listen_fd;
++  DBusString address;
++  char *path_copy;
++  
++  _DBUS_ASSERT_ERROR_IS_CLEAR (error);
++
++  if (!_dbus_string_init (&address))
++    {
++      _DBUS_SET_OOM (error);
++      return NULL;
++    }
++
++  if ((abstract &&
++       !_dbus_string_append (&address, "unix:abstract=")) ||
++      (!abstract &&
++       !_dbus_string_append (&address, "unix:path=")) ||
++      !_dbus_string_append (&address, path))
++    {
++      _DBUS_SET_OOM (error);
++      goto failed_0;
++    }
++
++  path_copy = _dbus_strdup (path);
++  if (path_copy == NULL)
++    {
++      _DBUS_SET_OOM (error);
++      goto failed_0;
++    }
++  
++  listen_fd = _dbus_listen_unix_socket (path, abstract, error);
++  
++  if (listen_fd < 0)
++    {
++      _DBUS_ASSERT_ERROR_IS_SET (error);
++      goto failed_1;
++    }
++  
++  _dbus_fd_set_close_on_exec (listen_fd);
++  server = _dbus_server_new_for_socket (listen_fd, &address);
++  if (server == NULL)
++    {
++      _DBUS_SET_OOM (error);
++      goto failed_2;
++    }
++
++  _dbus_server_socket_own_filename(server, path_copy);
++
++  _dbus_string_free (&address);
++  
++  return server;
++
++ failed_2:
++  _dbus_close_socket (listen_fd, NULL);
++ failed_1:
++  dbus_free (path_copy);
++ failed_0:
++  _dbus_string_free (&address);
++
++  return NULL;
++}
++
++#endif //DBUS_WIN
+ /** @} */
+ 
+Index: dbus/dbus-server.c
+===================================================================
+RCS file: /cvs/dbus/dbus/dbus/dbus-server.c,v
+retrieving revision 1.54
+diff -u -3 -p -B -r1.54 dbus-server.c
+--- dbus/dbus-server.c	21 Oct 2006 23:09:18 -0000	1.54
++++ dbus/dbus-server.c	6 Mar 2007 20:54:42 -0000
+@@ -509,8 +509,10 @@ static const struct {
+                                    DBusServer      **server_p,
+                                    DBusError        *error);
+ } listen_funcs[] = {
+-  { _dbus_server_listen_socket },
+-  { _dbus_server_listen_platform_specific }
++  { _dbus_server_listen_socket }
++#ifndef DBUS_WIN
++  , { _dbus_server_listen_platform_specific }
++#endif
+ #ifdef DBUS_BUILD_TESTS
+   , { _dbus_server_listen_debug_pipe }
+ #endif
+@@ -1114,6 +1116,13 @@ dbus_server_get_data (DBusServer   *serv
+ dbus_bool_t
+ _dbus_server_test (void)
+ {
++#if defined(DBUS_WIN) || defined(DBUS_WINCE)
++  const char *valid_addresses[] = {
++    "tcp:port=1234",
++    "tcp:host=localhost,port=1234",
++    "tcp:host=localhost,port=1234;tcp:port=5678",
++  };
++#else
+   const char *valid_addresses[] = {
+     "tcp:port=1234",
+     "unix:path=./boogie",
+@@ -1121,7 +1130,7 @@ _dbus_server_test (void)
+     "tcp:host=localhost,port=1234;tcp:port=5678",
+     "tcp:port=1234;unix:path=./boogie",
+   };
+-
++#endif
+   DBusServer *server;
+   int i;
+   
+Index: dbus/dbus-spawn.c
+===================================================================
+RCS file: /cvs/dbus/dbus/dbus/dbus-spawn.c,v
+retrieving revision 1.25
+diff -u -3 -p -B -r1.25 dbus-spawn.c
+--- dbus/dbus-spawn.c	4 Mar 2007 19:14:03 -0000	1.25
++++ dbus/dbus-spawn.c	6 Mar 2007 20:54:43 -0000
+@@ -720,7 +720,7 @@ handle_watch (DBusWatch       *watch,
+   if (condition & DBUS_WATCH_HANGUP)
+     revents |= _DBUS_POLLHUP;
+ 
+-  fd = dbus_watch_get_fd (watch);
++  fd = dbus_watch_get_handle (watch);
+ 
+   if (fd == sitter->error_pipe_from_child)
+     handle_error_pipe (sitter, revents);
+Index: dbus/dbus-sysdeps-unix.c
+===================================================================
+RCS file: /cvs/dbus/dbus/dbus/dbus-sysdeps-unix.c,v
+retrieving revision 1.19
+diff -u -3 -p -B -r1.19 dbus-sysdeps-unix.c
+--- dbus/dbus-sysdeps-unix.c	3 Mar 2007 10:36:45 -0000	1.19
++++ dbus/dbus-sysdeps-unix.c	6 Mar 2007 20:54:43 -0000
+@@ -169,6 +169,15 @@ _dbus_write_socket (int               fd
+   return _dbus_write (fd, buffer, start, len);
+ }
+ 
++int
++_dbus_write_pipe (DBusStream        pipe,
++                  const DBusString *buffer,
++                  int               start,
++                  int               len)
++{
++	return _dbus_write (pipe, buffer, start, len);
++}
++
+ /**
+  * Like _dbus_write_two() but only works on sockets and is thus
+  * available on Windows.
+@@ -1493,6 +1502,53 @@ _dbus_atomic_dec (DBusAtomic *atomic)
+ #endif
+ }
+ 
++/**
++ * Atomically increments an integer
++ *
++ * @param atomic pointer to the integer to increment
++ * @returns the value before incrementing
++ *
++ * @todo implement arch-specific faster atomic ops
++ */
++dbus_int32_t
++_dbus_atomic_inc (DBusAtomic *atomic)
++{
++#ifdef DBUS_USE_ATOMIC_INT_486
++  return atomic_exchange_and_add (atomic, 1);
++#else
++  dbus_int32_t res;
++  _DBUS_LOCK (atomic);
++  res = atomic->value;
++  atomic->value += 1;
++  _DBUS_UNLOCK (atomic);
++  return res;
++#endif
++}
++
++/**
++ * Atomically decrement an integer
++ *
++ * @param atomic pointer to the integer to decrement
++ * @returns the value before decrementing
++ *
++ * @todo implement arch-specific faster atomic ops
++ */
++dbus_int32_t
++_dbus_atomic_dec (DBusAtomic *atomic)
++{
++#ifdef DBUS_USE_ATOMIC_INT_486
++  return atomic_exchange_and_add (atomic, -1);
++#else
++  dbus_int32_t res;
++  
++  _DBUS_LOCK (atomic);
++  res = atomic->value;
++  atomic->value -= 1;
++  _DBUS_UNLOCK (atomic);
++  return res;
++#endif
++}
++
+ #ifdef DBUS_BUILD_TESTS
+ /** Gets our GID
+  * @returns process GID
+@@ -2840,4 +2896,9 @@ _dbus_get_standard_session_servicedirs (
+   return FALSE;
+ }
+ 
++// non empty implementation in the Windows code
++void _dbus_daemon_release()
++{
++}
++
+ /* tests in dbus-sysdeps-util.c */
+Index: dbus/dbus-sysdeps-util.c
+===================================================================
+RCS file: /cvs/dbus/dbus/dbus/dbus-sysdeps-util.c,v
+retrieving revision 1.10
+diff -u -3 -p -B -r1.10 dbus-sysdeps-util.c
+--- dbus/dbus-sysdeps-util.c	13 Dec 2006 01:18:07 -0000	1.10
++++ dbus/dbus-sysdeps-util.c	6 Mar 2007 20:54:43 -0000
+@@ -82,7 +82,7 @@ _dbus_sysdeps_test (void)
+   double val;
+   int pos;
+ 
+-#ifdef DBUS_WIN
++#if defined(DBUS_WIN) || defined(DBUS_WINCE)
+   check_dirname ("foo\\bar", "foo");
+   check_dirname ("foo\\\\bar", "foo");
+   check_dirname ("foo/\\/bar", "foo");
+@@ -141,6 +141,7 @@ _dbus_sysdeps_test (void)
+       exit (1);
+     }
+ 
++#ifndef DBUS_WIN_FIXME
+   _dbus_string_init_const (&str, "0xff");
+   if (!_dbus_string_parse_double (&str,
+ 				  0, &val, &pos))
+@@ -158,6 +159,8 @@ _dbus_sysdeps_test (void)
+       _dbus_warn ("_dbus_string_parse_double of \"0xff\" returned wrong position %d", pos);
+       exit (1);
+     }
++#endif
++
+ #ifdef DBUS_WIN
+   check_path_absolute ("c:/", TRUE);
+   check_path_absolute ("c:/foo", TRUE);
+Index: dbus/dbus-sysdeps.c
+===================================================================
+RCS file: /cvs/dbus/dbus/dbus/dbus-sysdeps.c,v
+retrieving revision 1.120
+diff -u -3 -p -B -r1.120 dbus-sysdeps.c
+--- dbus/dbus-sysdeps.c	1 Jan 2007 21:29:59 -0000	1.120
++++ dbus/dbus-sysdeps.c	6 Mar 2007 20:54:43 -0000
+@@ -119,11 +119,14 @@ _dbus_setenv (const char *varname,
+        * will get upset about.
+        */
+       
+-      putenv_value = malloc (len + 1);
++      putenv_value = malloc (len + 2);
+       if (putenv_value == NULL)
+         return FALSE;
+ 
+       strcpy (putenv_value, varname);
++#if defined(DBUS_WIN) || defined(DBUS_WINCE)
++      strcat (putenv_value, "=");
++#endif
+       
+       return (putenv (putenv_value) == 0);
+ #endif
+@@ -413,6 +416,10 @@ static double
+ ascii_strtod (const char *nptr,
+ 	      char      **endptr)
+ {
++  /* FIXME: The Win32 C library's strtod() doesn't handle hex.
++   * Presumably many Unixes don't either.
++   */
++
+   char *fail_pos;
+   double val;
+   struct lconv *locale_data;
+Index: dbus/dbus-sysdeps.h
+===================================================================
+RCS file: /cvs/dbus/dbus/dbus/dbus-sysdeps.h,v
+retrieving revision 1.68
+diff -u -3 -p -B -r1.68 dbus-sysdeps.h
+--- dbus/dbus-sysdeps.h	31 Dec 2006 12:16:04 -0000	1.68
++++ dbus/dbus-sysdeps.h	6 Mar 2007 20:54:43 -0000
+@@ -119,6 +119,7 @@ typedef unsigned long dbus_gid_t;
+  * 
+  */
+ 
++void        _dbus_daemon_release   (void);
+ dbus_bool_t _dbus_open_tcp_socket  (int              *fd,
+                                     DBusError        *error);
+ dbus_bool_t _dbus_close_socket     (int               fd,
+@@ -229,7 +230,7 @@ typedef struct DBusAtomic DBusAtomic;
+  */
+ struct DBusAtomic
+ {
+-#ifdef DBUS_WIN
++#if defined(DBUS_WIN) || defined(DBUS_WINCE)
+   volatile long value; /**< Value of the atomic integer. */
+ #else
+   volatile dbus_int32_t value; /**< Value of the atomic integer. */
+@@ -302,6 +303,12 @@ dbus_bool_t _dbus_path_is_absolute    (c
+ 
+ dbus_bool_t _dbus_get_standard_session_servicedirs (DBusList **dirs);
+ 
++typedef int DBusPipe;
++int _dbus_write_pipe (DBusPipe          pipe,
++                      const DBusString *buffer,
++                      int               start,
++                      int               len);
++
+ /** Opaque type for reading a directory listing */
+ typedef struct DBusDirIter DBusDirIter;
+ 
+@@ -317,6 +324,9 @@ dbus_bool_t  _dbus_check_dir_is_private_
+ 
+ void _dbus_fd_set_close_on_exec (int fd);
+ 
++int _dbus_mkdir    (const char *path,
++                    mode_t mode);
++
+ const char* _dbus_get_tmpdir      (void);
+ 
+ /**
+Index: dbus/dbus-test.c
+===================================================================
+RCS file: /cvs/dbus/dbus/dbus/dbus-test.c,v
+retrieving revision 1.44
+diff -u -3 -p -B -r1.44 dbus-test.c
+--- dbus/dbus-test.c	15 Nov 2006 03:07:59 -0000	1.44
++++ dbus/dbus-test.c	6 Mar 2007 20:54:43 -0000
+@@ -156,7 +156,9 @@ dbus_internal_do_not_use_run_tests (cons
+   
+   run_test ("hash", specific_test, _dbus_hash_test);
+ 
++#if !defined(DBUS_WIN) && !defined(DBUS_WINCE)
+   run_data_test ("spawn", specific_test, _dbus_spawn_test, test_data_dir);
++#endif
+   
+   run_data_test ("userdb", specific_test, _dbus_userdb_test, test_data_dir);
+   
+Index: dbus/dbus-threads.c
+===================================================================
+RCS file: /cvs/dbus/dbus/dbus/dbus-threads.c,v
+retrieving revision 1.36
+diff -u -3 -p -B -r1.36 dbus-threads.c
+--- dbus/dbus-threads.c	28 Oct 2006 01:41:37 -0000	1.36
++++ dbus/dbus-threads.c	6 Mar 2007 20:54:44 -0000
+@@ -810,7 +810,11 @@ dbus_fake_condvar_wake_all (DBusCondVar 
+ dbus_bool_t
+ _dbus_threads_init_debug (void)
+ {
++#if defined(DBUS_WIN) || defined(DBUS_WINCE)
++  return _dbus_threads_init_platform_specific();
++#else
+   return dbus_threads_init (&fake_functions);
++#endif
+ }
+ 
+ #endif /* DBUS_BUILD_TESTS */
+Index: dbus/dbus-transport-socket.c
+===================================================================
+RCS file: /cvs/dbus/dbus/dbus/dbus-transport-socket.c,v
+retrieving revision 1.4
+diff -u -3 -p -B -r1.4 dbus-transport-socket.c
+--- dbus/dbus-transport-socket.c	20 Oct 2006 03:05:00 -0000	1.4
++++ dbus/dbus-transport-socket.c	6 Mar 2007 20:54:44 -0000
+@@ -175,7 +175,7 @@ check_read_watch (DBusTransport *transpo
+   DBusTransportSocket *socket_transport = (DBusTransportSocket*) transport;
+   dbus_bool_t need_read_watch;
+ 
+-  _dbus_verbose ("%s: fd = %d\n",
++  _dbus_verbose (" %s: fd = %d\n",
+                  _DBUS_FUNCTION_NAME, socket_transport->fd);
+   
+   if (transport->connection == NULL)
+@@ -652,7 +652,7 @@ do_reading (DBusTransport *transport)
+   int total;
+   dbus_bool_t oom;
+ 
+-  _dbus_verbose ("%s: fd = %d\n", _DBUS_FUNCTION_NAME,
++  _dbus_verbose (" %s: fd = %d\n", _DBUS_FUNCTION_NAME,
+                  socket_transport->fd);
+   
+   /* No messages without authentication! */
+@@ -873,7 +873,7 @@ socket_handle_watch (DBusTransport *tran
+                        flags);
+       else
+         _dbus_verbose ("asked to handle watch %p on fd %d that we don't recognize\n",
+-                       watch, dbus_watch_get_fd (watch));
++                       watch, dbus_watch_get_handle (watch));
+     }
+ #endif /* DBUS_ENABLE_VERBOSE_MODE */
+ 
+@@ -1286,15 +1286,19 @@ _dbus_transport_open_socket(DBusAddressE
+           
+       if (port == NULL)
+         {
++#if defined(DBUS_WIN) || defined(DBUS_WINCE)
++          port = "0";
++#else
+           _dbus_set_bad_address (error, "tcp", "port", NULL);
+           return DBUS_TRANSPORT_OPEN_BAD_ADDRESS;
++#endif
+         }
+ 
+       _dbus_string_init_const (&str, port);
+       sresult = _dbus_string_parse_int (&str, 0, &lport, NULL);
+       _dbus_string_free (&str);
+           
+-      if (sresult == FALSE || lport <= 0 || lport > 65535)
++      if (sresult == FALSE || lport < 0 || lport > 65535)
+         {
+           _dbus_set_bad_address (error, NULL, NULL,
+                                  "Port is not an integer between 0 and 65535");
+Index: dbus/dbus-transport-socket.h
+===================================================================
+RCS file: /cvs/dbus/dbus/dbus/dbus-transport-socket.h,v
+retrieving revision 1.2
+diff -u -3 -p -B -r1.2 dbus-transport-socket.h
+--- dbus/dbus-transport-socket.h	16 Sep 2006 19:24:08 -0000	1.2
++++ dbus/dbus-transport-socket.h	6 Mar 2007 20:54:44 -0000
+@@ -25,6 +25,10 @@
+ 
+ #include <dbus/dbus-transport-protected.h>
+ 
++#if defined(DBUS_WIN) || defined(DBUS_WINCE)
++#include <dbus/dbus-sockets-win.h>
++#endif
++
+ DBUS_BEGIN_DECLS
+ 
+ DBusTransport*          _dbus_transport_new_for_socket     (int                fd,
+Index: dbus/dbus-transport-unix.c
+===================================================================
+RCS file: /cvs/dbus/dbus/dbus/dbus-transport-unix.c,v
+retrieving revision 1.55
+diff -u -3 -p -B -r1.55 dbus-transport-unix.c
+--- dbus/dbus-transport-unix.c	20 Oct 2006 03:05:00 -0000	1.55
++++ dbus/dbus-transport-unix.c	6 Mar 2007 20:54:44 -0000
+@@ -23,11 +23,16 @@
+ 
+ #include "dbus-internals.h"
+ #include "dbus-connection-internal.h"
+-#include "dbus-transport-unix.h"
+ #include "dbus-transport-socket.h"
+ #include "dbus-transport-protected.h"
+ #include "dbus-watch.h"
++
++#if !defined(DBUS_WIN) && !defined(DBUS_WINCE)
++#include "dbus-transport-unix.h"
+ #include "dbus-sysdeps-unix.h"
++#else
++#include "dbus-sysdeps-win.h"
++#endif
+ 
+ /**
+  * @defgroup DBusTransportUnix DBusTransport implementations for UNIX
+Index: dbus/dbus-transport.c
+===================================================================
+RCS file: /cvs/dbus/dbus/dbus/dbus-transport.c,v
+retrieving revision 1.54
+diff -u -3 -p -B -r1.54 dbus-transport.c
+--- dbus/dbus-transport.c	17 Oct 2006 20:52:13 -0000	1.54
++++ dbus/dbus-transport.c	6 Mar 2007 20:54:45 -0000
+@@ -310,9 +310,11 @@ static const struct {
+                                     DBusTransport   **transport_p,
+                                     DBusError        *error);
+ } open_funcs[] = {
+-  { _dbus_transport_open_socket },
+-  { _dbus_transport_open_platform_specific },
+-  { _dbus_transport_open_autolaunch }
++  { _dbus_transport_open_socket }
++#ifndef DBUS_WIN
++  , { _dbus_transport_open_platform_specific }
++#endif
++  , { _dbus_transport_open_autolaunch }
+ #ifdef DBUS_BUILD_TESTS
+   , { _dbus_transport_open_debug_pipe }
+ #endif
+@@ -496,7 +498,7 @@ _dbus_transport_get_is_authenticated (DB
+    * set it and have it only be invoked when appropriate.
+    */
+   dbus_bool_t on_windows = FALSE;
+-#ifdef DBUS_WIN
++#if defined(DBUS_WIN) || defined(DBUS_WINCE)
+   on_windows = TRUE;
+ #endif
+   
+@@ -674,7 +676,7 @@ _dbus_transport_handle_watch (DBusTransp
+   if (transport->disconnected)
+     return TRUE;
+ 
+-  if (dbus_watch_get_fd (watch) < 0)
++  if (dbus_watch_get_handle (watch) < 0)
+     {
+       _dbus_warn_check_failed ("Tried to handle an invalidated watch; this watch should have been removed\n");
+       return TRUE;
+Index: dbus/dbus-watch.c
+===================================================================
+RCS file: /cvs/dbus/dbus/dbus/dbus-watch.c,v
+retrieving revision 1.22
+diff -u -3 -p -B -r1.22 dbus-watch.c
+--- dbus/dbus-watch.c	21 Oct 2006 21:57:31 -0000	1.22
++++ dbus/dbus-watch.c	6 Mar 2007 20:54:45 -0000
+@@ -286,7 +286,7 @@ _dbus_watch_list_set_functions (DBusWatc
+             
+             _dbus_verbose ("Adding a %s watch on fd %d using newly-set add watch function\n",
+                            watch_type,
+-                           dbus_watch_get_fd (link->data));
++                           dbus_watch_get_handle (link->data));
+           }
+ #endif /* DBUS_ENABLE_VERBOSE_MODE */
+           
+@@ -302,7 +302,7 @@ _dbus_watch_list_set_functions (DBusWatc
+                                                              link2);
+                   
+                   _dbus_verbose ("Removing watch on fd %d using newly-set remove function because initial add failed\n",
+-                                 dbus_watch_get_fd (link2->data));
++                                 dbus_watch_get_handle (link2->data));
+                   
+                   (* remove_function) (link2->data, data);
+                   
+@@ -359,7 +359,7 @@ _dbus_watch_list_add_watch (DBusWatchLis
+   if (watch_list->add_watch_function != NULL)
+     {
+       _dbus_verbose ("Adding watch on fd %d\n",
+-                     dbus_watch_get_fd (watch));
++                     dbus_watch_get_handle (watch));
+       
+       if (!(* watch_list->add_watch_function) (watch,
+                                                watch_list->watch_data))
+@@ -390,7 +390,7 @@ _dbus_watch_list_remove_watch  (DBusWatc
+   if (watch_list->remove_watch_function != NULL)
+     {
+       _dbus_verbose ("Removing watch on fd %d\n",
+-                     dbus_watch_get_fd (watch));
++                     dbus_watch_get_handle (watch));
+       
+       (* watch_list->remove_watch_function) (watch,
+                                              watch_list->watch_data);
+@@ -422,7 +422,7 @@ _dbus_watch_list_toggle_watch (DBusWatch
+   if (watch_list->watch_toggled_function != NULL)
+     {
+       _dbus_verbose ("Toggling watch %p on fd %d to %d\n",
+-                     watch, dbus_watch_get_fd (watch), watch->enabled);
++                     watch, dbus_watch_get_handle (watch), watch->enabled);
+       
+       (* watch_list->watch_toggled_function) (watch,
+                                               watch_list->watch_data);
+@@ -490,10 +490,32 @@ _dbus_watch_set_handler (DBusWatch      
+  * @returns the file descriptor to watch.
+  */
+ int
++dbus_watch_get_handle (DBusWatch *watch)
++{
++  return watch->fd;
++}
++
++#if defined(DBUS_WIN) || defined(DBUS_WINCE)
++// never used by the dbus code
++#include "dbus-sysdeps-win.h"
++int 
++dbus_watch_get_fd (DBusWatch *watch)
++{
++	DBusSocket *p;
++	if (watch->fd != -1) {
++	    _dbus_handle_to_socket(watch->fd,&p);
++	    return p->fd;
++	}
++	else
++		return -1;
++}
++#else
++int
+ dbus_watch_get_fd (DBusWatch *watch)
+ {
+   return watch->fd;
+ }
++#endif
+ 
+ /**
+  * Gets flags from DBusWatchFlags indicating
+@@ -546,7 +568,7 @@ dbus_watch_set_data (DBusWatch        *w
+                      DBusFreeFunction  free_data_function)
+ {
+   _dbus_verbose ("Setting watch fd %d data to data = %p function = %p from data = %p function = %p\n",
+-                 dbus_watch_get_fd (watch),
++                 dbus_watch_get_handle (watch),
+                  data, free_data_function, watch->data, watch->free_data_function);
+   
+   if (watch->free_data_function != NULL)
+Index: test/test-segfault.c
+===================================================================
+RCS file: /cvs/dbus/dbus/test/test-segfault.c,v
+retrieving revision 1.4
+diff -u -3 -p -B -r1.4 test-segfault.c
+--- test/test-segfault.c	30 Nov 2005 19:32:26 -0000	1.4
++++ test/test-segfault.c	6 Mar 2007 20:54:45 -0000
+@@ -1,9 +1,26 @@
+ /* This is simply a process that segfaults */
++#include <config.h>
+ #include <stdlib.h>
+ #include <signal.h>
+ 
++#ifdef DBUS_WIN
++#define RLIMIT_CORE	4		/* max core file size */
++typedef unsigned long rlim_t;
++struct rlimit {
++	rlim_t	rlim_cur;
++	rlim_t	rlim_max;
++};
++static int getrlimit (int __resource, struct rlimit *__rlp) {
++  return -1;
++}
++static int setrlimit (int __resource, const struct rlimit *__rlp) {
++  return -1;
++}
++#else
+ #include <sys/time.h>
+ #include <sys/resource.h>
++#endif
++
+ 
+ int
+ main (int argc, char **argv)
+Index: test/test-utils.c
+===================================================================
+RCS file: /cvs/dbus/dbus/test/test-utils.c,v
+retrieving revision 1.8
+diff -u -3 -p -B -r1.8 test-utils.c
+--- test/test-utils.c	1 Oct 2006 15:36:18 -0000	1.8
++++ test/test-utils.c	6 Mar 2007 20:54:45 -0000
+@@ -1,5 +1,7 @@
+ #include "test-utils.h"
+ 
++void _dbus_connection_close_internal (DBusConnection *connection);
++
+ typedef struct
+ {
+   DBusLoop *loop;



More information about the dbus-commit mailing list