diff -rupN hal.orig/Makefile hal/Makefile
--- hal.orig/Makefile 2008-03-27 00:58:21.000000000 -0400
+++ hal/Makefile 2008-03-27 00:43:37.000000000 -0400
@@ -8,7 +8,7 @@
PORTNAME= hal
DISTVERSION= 0.5.11rc2
-PORTREVISION= 4
+PORTREVISION= 5
CATEGORIES= sysutils
MASTER_SITES= http://hal.freedesktop.org/releases/
@@ -102,6 +102,9 @@ post-patch:
post-install:
${MKDIR} ${DATADIR}/dist
${INSTALL_DATA} ${WRKSRC}/hal.conf ${DATADIR}/dist
+ ${MKDIR} ${PREFIX}/share/hal/fdi/policy/10osvendor
+ ${INSTALL_DATA} ${FILESDIR}/10-mouse-sysmouse.fdi \
+ ${PREFIX}/share/hal/fdi/policy/10osvendor
@${SETENV} PKG_PREFIX=${PREFIX} PACKAGE_BUILDING=${PACKAGE_BUILDING} \
${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
.if !defined(PACKAGE_BUILDING) && defined(NEEDS_MEDIA)
diff -rupN hal.orig/files/10-mouse-sysmouse.fdi hal/files/10-mouse-sysmouse.fdi
--- hal.orig/files/10-mouse-sysmouse.fdi 1969-12-31 18:00:00.000000000 -0600
+++ hal/files/10-mouse-sysmouse.fdi 2008-03-27 00:53:30.000000000 -0400
@@ -0,0 +1,8 @@
+
+
+
+
+ hald-addon-mouse-sysmouse
+
+
+
diff -rupN hal.orig/files/patch-fdi_policy_10osvendor_10-x11-input.fdi hal/files/patch-fdi_policy_10osvendor_10-x11-input.fdi
--- hal.orig/files/patch-fdi_policy_10osvendor_10-x11-input.fdi 1969-12-31 18:00:00.000000000 -0600
+++ hal/files/patch-fdi_policy_10osvendor_10-x11-input.fdi 2008-03-27 13:48:39.000000000 -0400
@@ -0,0 +1,18 @@
+--- fdi/policy/10osvendor/10-x11-input.fdi.orig 2008-03-27 13:42:31.000000000 -0400
++++ fdi/policy/10osvendor/10-x11-input.fdi 2008-03-27 13:48:06.000000000 -0400
+@@ -1,15 +1,6 @@
+
+
+
+-
+-
+- mouse
+-
+- evdev
+-
+-
+-
+
+
diff -rupN hal.orig/files/patch-hald_freebsd_addons_Makefile.in hal/files/patch-hald_freebsd_addons_Makefile.in
--- hal.orig/files/patch-hald_freebsd_addons_Makefile.in 1969-12-31 18:00:00.000000000 -0600
+++ hal/files/patch-hald_freebsd_addons_Makefile.in 2008-03-27 00:49:15.000000000 -0400
@@ -0,0 +1,92 @@
+--- hald/freebsd/addons/Makefile.in.orig 2008-03-27 00:45:50.000000000 -0400
++++ hald/freebsd/addons/Makefile.in 2008-03-27 00:48:15.000000000 -0400
+@@ -33,7 +33,8 @@ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+ @HALD_COMPILE_FREEBSD_TRUE@libexec_PROGRAMS = \
+-@HALD_COMPILE_FREEBSD_TRUE@ hald-addon-storage$(EXEEXT)
++@HALD_COMPILE_FREEBSD_TRUE@ hald-addon-storage$(EXEEXT) \
++@HALD_COMPILE_FREEBSD_TRUE@ hald-addon-mouse-sysmouse$(EXEEXT)
+ subdir = hald/freebsd/addons
+ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+@@ -47,6 +48,15 @@ CONFIG_CLEAN_FILES =
+ am__installdirs = "$(DESTDIR)$(libexecdir)"
+ libexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+ PROGRAMS = $(libexec_PROGRAMS)
++am_hald_addon_mouse_sysmouse_OBJECTS = \
++ hald_addon_mouse_sysmouse-addon-mouse.$(OBJEXT)
++hald_addon_mouse_sysmouse_OBJECTS = \
++ $(am_hald_addon_mouse_sysmouse_OBJECTS)
++hald_addon_mouse_sysmouse_DEPENDENCIES = $(top_builddir)/hald/freebsd/libprobe/libhald_freebsd_probe.la
++hald_addon_mouse_sysmouse_LINK = $(LIBTOOL) --tag=CC \
++ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
++ $(hald_addon_mouse_sysmouse_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
++ $(LDFLAGS) -o $@
+ am_hald_addon_storage_OBJECTS = addon-storage.$(OBJEXT)
+ hald_addon_storage_OBJECTS = $(am_hald_addon_storage_OBJECTS)
+ hald_addon_storage_DEPENDENCIES = $(top_builddir)/hald/freebsd/libprobe/libhald_freebsd_probe.la
+@@ -62,8 +72,10 @@ CCLD = $(CC)
+ LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+-SOURCES = $(hald_addon_storage_SOURCES)
+-DIST_SOURCES = $(hald_addon_storage_SOURCES)
++SOURCES = $(hald_addon_mouse_sysmouse_SOURCES) \
++ $(hald_addon_storage_SOURCES)
++DIST_SOURCES = $(hald_addon_mouse_sysmouse_SOURCES) \
++ $(hald_addon_storage_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+@@ -227,6 +239,11 @@ hald_addon_storage_SOURCES = addon-stora
+ hald_addon_storage_LDADD = \
+ $(top_builddir)/hald/freebsd/libprobe/libhald_freebsd_probe.la
+
++hald_addon_mouse_sysmouse_SOURCES = addon-mouse.c
++hald_addon_mouse_sysmouse_CFLAGS = $(AM_CPPFLAGS) @GLIB_CFLAGS@
++hald_addon_mouse_sysmouse_LDADD = @GLIB_LIBS@ \
++ $(top_builddir)/hald/freebsd/libprobe/libhald_freebsd_probe.la
++
+ all: all-am
+
+ .SUFFIXES:
+@@ -288,6 +305,9 @@ clean-libexecPROGRAMS:
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
++hald-addon-mouse-sysmouse$(EXEEXT): $(hald_addon_mouse_sysmouse_OBJECTS) $(hald_addon_mouse_sysmouse_DEPENDENCIES)
++ @rm -f hald-addon-mouse-sysmouse$(EXEEXT)
++ $(hald_addon_mouse_sysmouse_LINK) $(hald_addon_mouse_sysmouse_OBJECTS) $(hald_addon_mouse_sysmouse_LDADD) $(LIBS)
+ hald-addon-storage$(EXEEXT): $(hald_addon_storage_OBJECTS) $(hald_addon_storage_DEPENDENCIES)
+ @rm -f hald-addon-storage$(EXEEXT)
+ $(LINK) $(hald_addon_storage_OBJECTS) $(hald_addon_storage_LDADD) $(LIBS)
+@@ -299,6 +319,7 @@ distclean-compile:
+ -rm -f *.tab.c
+
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/addon-storage.Po@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hald_addon_mouse_sysmouse-addon-mouse.Po@am__quote@
+
+ .c.o:
+ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@@ -321,6 +342,20 @@ distclean-compile:
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
++hald_addon_mouse_sysmouse-addon-mouse.o: addon-mouse.c
++@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_mouse_sysmouse_CFLAGS) $(CFLAGS) -MT hald_addon_mouse_sysmouse-addon-mouse.o -MD -MP -MF $(DEPDIR)/hald_addon_mouse_sysmouse-addon-mouse.Tpo -c -o hald_addon_mouse_sysmouse-addon-mouse.o `test -f 'addon-mouse.c' || echo '$(srcdir)/'`addon-mouse.c
++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/hald_addon_mouse_sysmouse-addon-mouse.Tpo $(DEPDIR)/hald_addon_mouse_sysmouse-addon-mouse.Po
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='addon-mouse.c' object='hald_addon_mouse_sysmouse-addon-mouse.o' libtool=no @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_mouse_sysmouse_CFLAGS) $(CFLAGS) -c -o hald_addon_mouse_sysmouse-addon-mouse.o `test -f 'addon-mouse.c' || echo '$(srcdir)/'`addon-mouse.c
++
++hald_addon_mouse_sysmouse-addon-mouse.obj: addon-mouse.c
++@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_mouse_sysmouse_CFLAGS) $(CFLAGS) -MT hald_addon_mouse_sysmouse-addon-mouse.obj -MD -MP -MF $(DEPDIR)/hald_addon_mouse_sysmouse-addon-mouse.Tpo -c -o hald_addon_mouse_sysmouse-addon-mouse.obj `if test -f 'addon-mouse.c'; then $(CYGPATH_W) 'addon-mouse.c'; else $(CYGPATH_W) '$(srcdir)/addon-mouse.c'; fi`
++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/hald_addon_mouse_sysmouse-addon-mouse.Tpo $(DEPDIR)/hald_addon_mouse_sysmouse-addon-mouse.Po
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='addon-mouse.c' object='hald_addon_mouse_sysmouse-addon-mouse.obj' libtool=no @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hald_addon_mouse_sysmouse_CFLAGS) $(CFLAGS) -c -o hald_addon_mouse_sysmouse-addon-mouse.obj `if test -f 'addon-mouse.c'; then $(CYGPATH_W) 'addon-mouse.c'; else $(CYGPATH_W) '$(srcdir)/addon-mouse.c'; fi`
++
+ mostlyclean-libtool:
+ -rm -f *.lo
+
diff -rupN hal.orig/files/patch-hald_freebsd_addons_addon-mouse.c hal/files/patch-hald_freebsd_addons_addon-mouse.c
--- hal.orig/files/patch-hald_freebsd_addons_addon-mouse.c.orig 2008-03-27 20:10:27.000000000 -0400
+++ hal/files/patch-hald_freebsd_addons_addon-mouse.c 2008-03-27 20:16:26.000000000 -0400
@@ -0,0 +1,183 @@
+--- hald/freebsd/addons/addon-mouse.c.orig 2008-03-27 20:10:36.000000000 -0400
++++ hald/freebsd/addons/addon-mouse.c 2008-03-27 20:14:47.000000000 -0400
+@@ -0,0 +1,180 @@
++/***************************************************************************
++ * CVSID: $Id$
++ *
++ * addon-mouse.c : poll mice to disable moused(8) owned devices
++ *
++ * Copyright (C) 2008 Joe Marcus Clarke
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
++ *
++ **************************************************************************/
++
++#ifdef HAVE_CONFIG_H
++# include
++#endif
++
++#include
++#include
++#include
++#include
++#include
++
++#include "libhal/libhal.h"
++
++#include "../libprobe/hfp.h"
++
++#define CMD "/usr/bin/fstat %s"
++
++#define MOUSE_DRIVER "mouse"
++#define MOUSED_PROC_NAME "moused"
++
++static struct
++{
++ const struct timespec update_interval;
++ char *device_file;
++ struct timespec next_update;
++} addon = { { 2, 0 } };
++
++static void
++poll_for_moused (void)
++{
++ char **lines;
++ char *output;
++ char *cmd;
++ char *driver;
++ int i;
++ gboolean found = FALSE;
++
++ cmd = g_strdup_printf(CMD, addon.device_file);
++
++ if (! g_spawn_command_line_sync (cmd, &output, NULL, NULL, NULL))
++ {
++ g_free(cmd);
++ goto done;
++ }
++ g_free(cmd);
++
++ if (! output || strlen(output) == 0)
++ goto done;
++
++ lines = g_strsplit(output, "\n", 0);
++ if (g_strv_length(lines) < 2)
++ {
++ g_strfreev(lines);
++ goto done;
++ }
++
++ for (i = 1; lines[i]; i++)
++ {
++ char **fields;
++ guint len;
++ guint j;
++
++ fields = g_strsplit_set(lines[i], " ", 0);
++ len = g_strv_length(fields);
++ if (len < 2)
++ {
++ g_strfreev(fields);
++ continue;
++ }
++ for (j = 1; j < len && fields[j] && *fields[j] == '\0'; j++)
++ ;
++ if (j < len && fields[j] && ! strcmp(fields[j], MOUSED_PROC_NAME))
++ {
++ found = TRUE;
++ g_strfreev(fields);
++ continue;
++ }
++ g_strfreev(fields);
++ }
++
++ g_strfreev(lines);
++
++ driver = libhal_device_get_property_string(hfp_ctx, hfp_udi, "input.x11_driver", &hfp_error);
++ dbus_error_free(&hfp_error);
++
++done:
++ g_free(output);
++ if (found && driver)
++ libhal_device_remove_property(hfp_ctx, hfp_udi, "input.x11_driver", &hfp_error);
++ else if (! (found || driver))
++ libhal_device_set_property_string(hfp_ctx, hfp_udi, "input.x11_driver", MOUSE_DRIVER, &hfp_error);
++
++ dbus_error_free(&hfp_error);
++ g_free(driver);
++
++ hfp_clock_gettime(&addon.next_update);
++ hfp_timespecadd(&addon.next_update, &addon.update_interval);
++}
++
++int
++main (int argc, char **argv)
++{
++ DBusConnection *connection;
++
++ if (! hfp_init(argc, argv))
++ goto end;
++
++ addon.device_file = getenv("HAL_PROP_FREEBSD_DEVICE_FILE");
++ if (! addon.device_file)
++ goto end;
++
++ setproctitle("%s", addon.device_file);
++
++ if (! libhal_device_addon_is_ready(hfp_ctx, hfp_udi, &hfp_error))
++ goto end;
++ dbus_error_free(&hfp_error);
++
++ connection = libhal_ctx_get_dbus_connection(hfp_ctx);
++ assert(connection != NULL);
++
++ while (TRUE)
++ {
++ /* process dbus traffic until update interval has elapsed */
++ while (TRUE)
++ {
++ struct timespec now;
++
++ hfp_clock_gettime(&now);
++ if (hfp_timespeccmp(&now, &addon.next_update, <))
++ {
++ struct timespec timeout;
++
++ timeout = addon.next_update;
++ hfp_timespecsub(&timeout, &now);
++
++ if (timeout.tv_sec < 0) /* current time went backwards */
++ timeout = addon.update_interval;
++
++ dbus_connection_read_write_dispatch(connection, timeout.tv_sec * 1000 + timeout.tv_nsec / 1000000);
++ if (! dbus_connection_get_is_connected(connection))
++ goto end;
++ }
++ else
++ break;
++ }
++
++ if (g_file_test(addon.device_file, G_FILE_TEST_EXISTS))
++ poll_for_moused();
++ else
++ {
++ hfp_clock_gettime(&addon.next_update);
++ hfp_timespecadd(&addon.next_update, &addon.update_interval);
++ }
++ }
++
++ end:
++ return 0;
++}
diff -rupN hal.orig/files/patch-hald_freebsd_clock hal/files/patch-hald_freebsd_clock
--- hal.orig/files/patch-hald_freebsd_clock 1969-12-31 18:00:00.000000000 -0600
+++ hal/files/patch-hald_freebsd_clock 2008-03-27 00:12:37.000000000 -0400
@@ -0,0 +1,175 @@
+--- hald/freebsd/libprobe/hfp.c.orig 2008-03-17 17:25:17.000000000 -0400
++++ hald/freebsd/libprobe/hfp.c 2008-03-26 12:07:32.000000000 -0400
+@@ -216,55 +216,59 @@ hfp_getenv_bool (const char *variable)
+ }
+
+ void
+-hfp_gettimeofday (struct timeval *t)
++hfp_clock_gettime (struct timespec *t)
+ {
+ int status;
+
+ assert(t != NULL);
+
+- status = gettimeofday(t, NULL);
++#ifdef CLOCK_MONOTONIC_FAST
++ status = clock_gettime(CLOCK_MONOTONIC_FAST, t);
++#else
++ status = clock_gettime(CLOCK_MONOTONIC, t);
++#endif
+ assert(status == 0);
+ }
+
+-/* timeval functions from sys/kern/kern_time.c */
++/* timespec functions from sys/kern/kern_time.c */
+
+ static void
+-hfp_timevalfix (struct timeval *t)
++hfp_timespecfix (struct timespec *t)
+ {
+ assert(t != NULL);
+
+- if (t->tv_usec < 0)
++ if (t->tv_nsec < 0)
+ {
+ t->tv_sec--;
+- t->tv_usec += 1000000;
++ t->tv_nsec += 1000000000;
+ }
+- if (t->tv_usec >= 1000000)
++ if (t->tv_nsec >= 1000000000)
+ {
+ t->tv_sec++;
+- t->tv_usec -= 1000000;
++ t->tv_nsec -= 1000000000;
+ }
+ }
+
+ void
+-hfp_timevaladd (struct timeval *t1, const struct timeval *t2)
++hfp_timespecadd (struct timespec *t1, const struct timespec *t2)
+ {
+ assert(t1 != NULL);
+ assert(t2 != NULL);
+
+ t1->tv_sec += t2->tv_sec;
+- t1->tv_usec += t2->tv_usec;
++ t1->tv_nsec += t2->tv_nsec;
+
+- hfp_timevalfix(t1);
++ hfp_timespecfix(t1);
+ }
+
+ void
+-hfp_timevalsub (struct timeval *t1, const struct timeval *t2)
++hfp_timespecsub (struct timespec *t1, const struct timespec *t2)
+ {
+ assert(t1 != NULL);
+ assert(t2 != NULL);
+
+ t1->tv_sec -= t2->tv_sec;
+- t1->tv_usec -= t2->tv_usec;
++ t1->tv_nsec -= t2->tv_nsec;
+
+- hfp_timevalfix(t1);
++ hfp_timespecfix(t1);
+ }
+--- hald/freebsd/libprobe/hfp.h.orig 2008-03-17 17:25:17.000000000 -0400
++++ hald/freebsd/libprobe/hfp.h 2008-03-26 12:05:36.000000000 -0400
+@@ -29,8 +29,8 @@
+ #endif
+
+ #include
++#include
+ #include
+-#include
+
+ #include "libhal/libhal.h"
+
+@@ -84,14 +84,14 @@ void volume_id_log (const char *format,
+
+ boolean hfp_getenv_bool (const char *variable);
+
+-void hfp_gettimeofday (struct timeval *t);
+-void hfp_timevaladd (struct timeval *t1, const struct timeval *t2);
+-void hfp_timevalsub (struct timeval *t1, const struct timeval *t2);
++void hfp_clock_gettime (struct timespec *t);
++void hfp_timespecadd (struct timespec *t1, const struct timespec *t2);
++void hfp_timespecsub (struct timespec *t1, const struct timespec *t2);
+
+ /* from sys/time.h (_KERNEL) */
+-#define hfp_timevalcmp(t1, t2, cmp) \
++#define hfp_timespeccmp(t1, t2, cmp) \
+ (((t1)->tv_sec == (t2)->tv_sec \
+- ? ((t1)->tv_usec cmp (t2)->tv_usec) \
++ ? ((t1)->tv_nsec cmp (t2)->tv_nsec) \
+ : ((t1)->tv_sec cmp (t2)->tv_sec)))
+
+ #endif /* _HFP_H */
+--- hald/freebsd/addons/addon-storage.c.orig 2008-03-26 12:05:36.000000000 -0400
++++ hald/freebsd/addons/addon-storage.c 2008-03-26 12:05:36.000000000 -0400
+@@ -38,13 +38,13 @@
+
+ static struct
+ {
+- const struct timeval update_interval;
++ const struct timespec update_interval;
+ char *device_file;
+ char *parent;
+ boolean is_cdrom;
+ boolean is_scsi_removable;
+ boolean had_media;
+- struct timeval next_update;
++ struct timespec next_update;
+ } addon = { { 2, 0 } };
+
+ /* see MMC-3 Working Draft Revision 10 */
+@@ -144,8 +144,8 @@ hf_addon_storage_update (void)
+ }
+ }
+
+- hfp_gettimeofday(&addon.next_update);
+- hfp_timevaladd(&addon.next_update, &addon.update_interval);
++ hfp_clock_gettime(&addon.next_update);
++ hfp_timespecadd(&addon.next_update, &addon.update_interval);
+
+ return has_media;
+ }
+@@ -280,20 +280,20 @@ main (int argc, char **argv)
+ /* process dbus traffic until update interval has elapsed */
+ while (TRUE)
+ {
+- struct timeval now;
++ struct timespec now;
+
+- hfp_gettimeofday(&now);
+- if (hfp_timevalcmp(&now, &addon.next_update, <))
++ hfp_clock_gettime(&now);
++ if (hfp_timespeccmp(&now, &addon.next_update, <))
+ {
+- struct timeval timeout;
++ struct timespec timeout;
+
+ timeout = addon.next_update;
+- hfp_timevalsub(&timeout, &now);
++ hfp_timespecsub(&timeout, &now);
+
+ if (timeout.tv_sec < 0) /* current time went backwards */
+ timeout = addon.update_interval;
+
+- dbus_connection_read_write_dispatch(connection, timeout.tv_sec * 1000 + timeout.tv_usec / 1000);
++ dbus_connection_read_write_dispatch(connection, timeout.tv_sec * 1000 + timeout.tv_nsec / 1000000);
+ if (! dbus_connection_get_is_connected(connection))
+ goto end;
+ }
+@@ -311,8 +311,8 @@ main (int argc, char **argv)
+ }
+ else
+ {
+- hfp_gettimeofday(&addon.next_update);
+- hfp_timevaladd(&addon.next_update, &addon.update_interval);
++ hfp_clock_gettime(&addon.next_update);
++ hfp_timespecadd(&addon.next_update, &addon.update_interval);
+ }
+ }
+
diff -rupN hal.orig/pkg-plist hal/pkg-plist
--- hal.orig/pkg-plist 2008-03-27 00:58:21.000000000 -0400
+++ hal/pkg-plist 2008-03-27 00:52:58.000000000 -0400
@@ -61,6 +61,7 @@ libexec/hal/scripts/hal-system-power-sus
libexec/hal/scripts/hal-system-wol-enable
libexec/hal/scripts/hal-system-wol-enabled
libexec/hal/scripts/hal-system-wol-supported
+libexec/hald-addon-mouse-sysmouse
libexec/hald-addon-storage
libexec/hald-generate-fdi-cache
libexec/hald-probe-hiddev
@@ -78,6 +79,7 @@ sbin/hald
%%DATADIR%%/fdi/policy/10osvendor/10-dockstation.fdi
%%DATADIR%%/fdi/policy/10osvendor/10-input-policy.fdi
%%DATADIR%%/fdi/policy/10osvendor/10-laptop-panel-mgmt-policy.fdi
+%%DATADIR%%/fdi/policy/10osvendor/10-mouse-sysmouse.fdi
%%DATADIR%%/fdi/policy/10osvendor/10-power-mgmt-policy.fdi
%%DATADIR%%/fdi/policy/10osvendor/10-rfkill-switch.fdi
%%DATADIR%%/fdi/policy/10osvendor/10-tabletPCs.fdi