--- configure.orig	2009-07-18 21:14:47.000000000 -0400
+++ configure	2009-07-18 21:14:47.000000000 -0400
@@ -818,6 +818,8 @@ XMLTO
 HALD_OS_LIBS
 BLKID_LIBS
 BLKID_CFLAGS
+VOLUME_ID_LIBS
+VOLUME_ID_CFLAGS
 GLIB_LIBS
 GLIB_CFLAGS
 DBUS_LIBS
@@ -847,6 +849,9 @@ HAVE_GPERF
 GPERF
 HAVE_CONKIT_FALSE
 HAVE_CONKIT_TRUE
+LIBUSB20_LIBS
+HAVE_LIBUSB20_FALSE
+HAVE_LIBUSB20_TRUE
 HALD_BACKEND
 HALD_COMPILE_SOLARIS_FALSE
 HALD_COMPILE_SOLARIS_TRUE
@@ -1101,6 +1106,8 @@ DBUS_CFLAGS
 DBUS_LIBS
 GLIB_CFLAGS
 GLIB_LIBS
+VOLUME_ID_CFLAGS
+VOLUME_ID_LIBS
 BLKID_CFLAGS
 BLKID_LIBS'
 
@@ -1825,6 +1832,10 @@ Some influential environment variables:
   DBUS_LIBS   linker flags for DBUS, overriding pkg-config
   GLIB_CFLAGS C compiler flags for GLIB, overriding pkg-config
   GLIB_LIBS   linker flags for GLIB, overriding pkg-config
+  VOLUME_ID_CFLAGS
+              C compiler flags for VOLUME_ID, overriding pkg-config
+  VOLUME_ID_LIBS
+              linker flags for VOLUME_ID, overriding pkg-config
   BLKID_CFLAGS
               C compiler flags for BLKID, overriding pkg-config
   BLKID_LIBS  linker flags for BLKID, overriding pkg-config
@@ -2794,6 +2805,7 @@ fi
 glib_module="glib-2.0 >= 2.10.0 gobject-2.0 > 2.10.0 dbus-glib-1 >= 0.61"
 dbus_module="dbus-1 >= 0.61"
 blkid_module="blkid >= 1.43"
+volume_id_module="libvolume_id >= 0.77"
 polkit_module="polkit >= 0.5"
 
 # libtool versioning - this applies to libhal and libhal-storage
@@ -19129,6 +19141,9 @@ else
 fi
 
 
+USE_LIBUSB20=no
+USE_LIBUSB=no
+LIBUSB20_LIBS=""
 
 # Check whether --with-backend was given.
 if test "${with_backend+set}" = set; then
@@ -19186,6 +19201,184 @@ else
 fi
 
 
+if test "x$HALD_BACKEND" = "xfreebsd"; then
+    { $as_echo "$as_me:$LINENO: checking for libusb20_dev_get_info in -lusb20" >&5
+$as_echo_n "checking for libusb20_dev_get_info in -lusb20... " >&6; }
+if test "${ac_cv_lib_usb20_libusb20_dev_get_info+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lusb20  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char libusb20_dev_get_info ();
+int
+main ()
+{
+return libusb20_dev_get_info ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_usb20_libusb20_dev_get_info=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_usb20_libusb20_dev_get_info=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_usb20_libusb20_dev_get_info" >&5
+$as_echo "$ac_cv_lib_usb20_libusb20_dev_get_info" >&6; }
+if test "x$ac_cv_lib_usb20_libusb20_dev_get_info" = x""yes; then
+  USE_LIBUSB20=yes
+else
+  USE_LIBUSB20=no
+fi
+
+fi
+if test "x$USE_LIBUSB20" = "xno"; then
+    { $as_echo "$as_me:$LINENO: checking for libusb20_dev_get_info in -lusb" >&5
+$as_echo_n "checking for libusb20_dev_get_info in -lusb... " >&6; }
+if test "${ac_cv_lib_usb_libusb20_dev_get_info+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lusb  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char libusb20_dev_get_info ();
+int
+main ()
+{
+return libusb20_dev_get_info ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_usb_libusb20_dev_get_info=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_usb_libusb20_dev_get_info=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_usb_libusb20_dev_get_info" >&5
+$as_echo "$ac_cv_lib_usb_libusb20_dev_get_info" >&6; }
+if test "x$ac_cv_lib_usb_libusb20_dev_get_info" = x""yes; then
+  USE_LIBUSB=yes
+else
+  USE_LIBUSB=no
+fi
+
+fi
+ if test "x$USE_LIBUSB20" = "xyes"; then
+  HAVE_LIBUSB20_TRUE=
+  HAVE_LIBUSB20_FALSE='#'
+else
+  HAVE_LIBUSB20_TRUE='#'
+  HAVE_LIBUSB20_FALSE=
+fi
+
+ if test "x$USE_LIBUSB" = "xyes"; then
+  HAVE_LIBUSB20_TRUE=
+  HAVE_LIBUSB20_FALSE='#'
+else
+  HAVE_LIBUSB20_TRUE='#'
+  HAVE_LIBUSB20_FALSE=
+fi
+
+if test "x$USE_LIBUSB20" = "xyes"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIBUSB20 1
+_ACEOF
+
+    LIBUSB20_LIBS="-lusb20"
+elif test "x$USE_LIBUSB" = "xyes"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIBUSB20 1
+_ACEOF
+
+    LIBUSB20_LIBS="-lusb"
+fi
+
 
 
 cat >>confdefs.h <<_ACEOF
@@ -19943,8 +20136,132 @@ fi
 { $as_echo "$as_me:$LINENO: result: $have_glib_2_14" >&5
 $as_echo "$have_glib_2_14" >&6; }
 
+case "$host" in
+*-*-freebsd*)
+
+pkg_failed=no
+{ $as_echo "$as_me:$LINENO: checking for VOLUME_ID" >&5
+$as_echo_n "checking for VOLUME_ID... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$VOLUME_ID_CFLAGS"; then
+        pkg_cv_VOLUME_ID_CFLAGS="$VOLUME_ID_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"\$volume_id_module\"") >&5
+  ($PKG_CONFIG --exists --print-errors "$volume_id_module") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_VOLUME_ID_CFLAGS=`$PKG_CONFIG --cflags "$volume_id_module" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$VOLUME_ID_LIBS"; then
+        pkg_cv_VOLUME_ID_LIBS="$VOLUME_ID_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"\$volume_id_module\"") >&5
+  ($PKG_CONFIG --exists --print-errors "$volume_id_module") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_VOLUME_ID_LIBS=`$PKG_CONFIG --libs "$volume_id_module" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        VOLUME_ID_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$volume_id_module"`
+        else
+	        VOLUME_ID_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$volume_id_module"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$VOLUME_ID_PKG_ERRORS" >&5
+
+	{ { $as_echo "$as_me:$LINENO: error: Package requirements ($volume_id_module) were not met:
+
+$VOLUME_ID_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables VOLUME_ID_CFLAGS
+and VOLUME_ID_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&5
+$as_echo "$as_me: error: Package requirements ($volume_id_module) were not met:
+
+$VOLUME_ID_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables VOLUME_ID_CFLAGS
+and VOLUME_ID_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&2;}
+   { (exit 1); exit 1; }; }
+elif test $pkg_failed = untried; then
+	{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables VOLUME_ID_CFLAGS
+and VOLUME_ID_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables VOLUME_ID_CFLAGS
+and VOLUME_ID_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+else
+	VOLUME_ID_CFLAGS=$pkg_cv_VOLUME_ID_CFLAGS
+	VOLUME_ID_LIBS=$pkg_cv_VOLUME_ID_LIBS
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+	:
+fi
+
+
+	;;
+*)
+	;;
+esac
+
 # blkid
 case "$host" in
+*-*-freebsd*)
+	;;
 *-*-solaris*)
 	;;
 *)
@@ -21441,6 +21758,20 @@ $as_echo "$as_me: error: conditional \"H
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
+if test -z "${HAVE_LIBUSB20_TRUE}" && test -z "${HAVE_LIBUSB20_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_LIBUSB20\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"HAVE_LIBUSB20\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${HAVE_LIBUSB20_TRUE}" && test -z "${HAVE_LIBUSB20_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_LIBUSB20\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"HAVE_LIBUSB20\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
 if test -z "${HAVE_CONKIT_TRUE}" && test -z "${HAVE_CONKIT_FALSE}"; then
   { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_CONKIT\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
