DBus Daemon for Windows CE/Windows Mobile 6.5
=============================================

Bugs in upstream for any window version:
* MoveFileExA < 0 result check bug
* double dbus_free somewhere I forgot where (check in -ugly)
* alignment issue
* CreateProcess process information handle leak
* _dbus_getsid NULL vs INVALID_HANDLE_VALUE
* win_account_to_sid

Customisation
=============

1) At installation, the following registry value should be set to the
installation directory of the dbus installation (the directory
containing the bin, etc, share folders):

HKLM\Software\freedesktop\DBus\Install Directory

2) Instead of environment variable DBUS_VERBOSE, use
HKLM\Software\freedesktop\DBus\Verbose

2) The keyring directory is MYDOCUMENTS\dbus-keyrings, not
HOMEPATH\.dbus-keyrings.


Compilation
===========

./configure --host=arm-mingw32ce CPPFLAGS=-I/path/to/expat/include LDFLAGS=-L/path/to/expat/lib

A recent version of libtool is required, with this change:

2010-02-28  Pierre Ossman  <ossman@ossman.lkpg.cendio.se>  (tiny change)
            Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

       Fix deplibs check fallback for 64-bit Windows and Windows CE.
       * libltdl/m4/libtool.m4 (_LT_CHECK_MAGIC_METHOD): Accept file formats
       'pe-arm-wince' and 'pe-x86-64'.  Add note about consistency with ...
       * libltdl/config/ltmain.m4sh (func_win32_libid): ... the respective
       pattern here; sync pattern from the former.
       * tests/deplibs-mingw.at (deplibs without file command): New
       file, new test.
       * Makefile.am (TESTSUITE_AT): Update.
       * NEWS: Update.


MB vs WCHAR
===========

Windows CE only supports the Unicode interface, while DBus Daemon uses
the Multi-Byte interface on Windows by default.  The glue code does
not support multibyte in all cases.  In particular, the _mbsrchr
function is not correctly implemented.  It could be correctly
implemented, or dbus daemon could use the wchar interface more
consistently on all Windows targets.  For now, the Windows CE port
will only work for filesystems without some weird characters in file
names.  Is this a serious limitation?


Known Issues
============

Autolaunch is broken so far.

Environment variables are faked.  Some are punted to the registry, but
in any case they can not be used reliably for IPC.

The test suite is not ported yet.

dbus-pipe.c:
 * Uses libc file descriptors.  Needed for --print-address and
   --print-pid which probably don't work yet.

dbus-sysdeps-win.c:
 * Backtraces have been disabled.
 * _dbus_fd_set_close_on_exec Not supported, maybe we should disable
   the warning.
 * SearchPathA: Uses HKLM\\Software\\freedesktop\\DBus\\Install Directory
   to locate binaries.
