Applied kubuntu patch to kioslaves to allow it to work with the new hal/dbus, bug...
authorMarcus D. Hanwell <cryos@gentoo.org>
Sun, 2 Oct 2005 14:20:19 +0000 (14:20 +0000)
committerMarcus D. Hanwell <cryos@gentoo.org>
Sun, 2 Oct 2005 14:20:19 +0000 (14:20 +0000)
Package-Manager: portage-2.0.52-r1

kde-base/kdebase-kioslaves/ChangeLog
kde-base/kdebase-kioslaves/Manifest
kde-base/kdebase-kioslaves/files/digest-kdebase-kioslaves-3.4.2-r1 [new file with mode: 0644]
kde-base/kdebase-kioslaves/files/kubuntu_23_hal_api.diff [new file with mode: 0644]
kde-base/kdebase-kioslaves/kdebase-kioslaves-3.4.2-r1.ebuild [new file with mode: 0644]

index cb77837fe8b3a7ba0b37213d3fd0e38b84ec1a2e..bf3b09c29c86aa3a76efa5f76c75b26fba393131 100644 (file)
@@ -1,6 +1,13 @@
 # ChangeLog for kde-base/kdebase-kioslaves
 # Copyright 1999-2005 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/kde-base/kdebase-kioslaves/ChangeLog,v 1.24 2005/09/24 13:41:06 flameeyes Exp $
+# $Header: /var/cvsroot/gentoo-x86/kde-base/kdebase-kioslaves/ChangeLog,v 1.25 2005/10/02 14:20:19 cryos Exp $
+
+*kdebase-kioslaves-3.4.2-r1 (02 Oct 2005)
+
+  02 Oct 2005; Marcus D. Hanwell <cryos@gentoo.org>
+  +files/kubuntu_23_hal_api.diff, +kdebase-kioslaves-3.4.2-r1.ebuild:
+  Applied kubuntu patch to kioslaves to allow it to work with the new
+  hal/dbus, bug 105553.
 
   24 Sep 2005; Diego Pettenò <flameeyes@gentoo.org>
   -kdebase-kioslaves-3.5_alpha1.ebuild:
index 935daf7cba9e82ef8230211abd7fab2862d8f3cc..9d9731dc15f895b43f5764297acbcbca9772acc9 100644 (file)
@@ -2,22 +2,25 @@
 Hash: SHA1
 
 MD5 3196f5d7edade715c6861def61990244 kdebase-kioslaves-3.4.1.ebuild 895
-MD5 905699f5d72415ca005d2a915cb4731c kdebase-kioslaves-3.4.1-r1.ebuild 962
+MD5 3546ce29e18a72f945adb6c2d2e4ae39 kdebase-kioslaves-3.4.2-r1.ebuild 1222
 MD5 791911a906312e610e13bcb5ea564c40 kdebase-kioslaves-3.5_beta1.ebuild 1018
-MD5 3a5054612ce3f7071ca33d062b8d107d ChangeLog 4054
+MD5 905699f5d72415ca005d2a915cb4731c kdebase-kioslaves-3.4.1-r1.ebuild 962
 MD5 baa5d6bb5f0bda49ce3e96283732ca46 kdebase-kioslaves-3.4.2.ebuild 1096
+MD5 d69d7b879d550578a90ea411f07561d8 ChangeLog 4310
 MD5 acc03a4b12bb0433a57e95bd253b9501 metadata.xml 156
-MD5 b22a687fe2e8cf06cd5147f1ec68efb7 files/digest-kdebase-kioslaves-3.4.1-r1 212
-MD5 00c42877b616c0d2c5df33a6eaecbfdd files/configure-fix-kdebase-openexr.patch 703
-MD5 b50fc512a289fe7a1ef658080cb0a0b3 files/digest-kdebase-kioslaves-3.5_beta1 69
 MD5 51057f5a3aacb159e8d4cc4af02b00e6 files/kdebase-3.4.1-configure.patch 1916
+MD5 b50fc512a289fe7a1ef658080cb0a0b3 files/digest-kdebase-kioslaves-3.5_beta1 69
+MD5 b22a687fe2e8cf06cd5147f1ec68efb7 files/digest-kdebase-kioslaves-3.4.1 212
 MD5 7deca5e51240260b2976fbbe9326ed6d files/digest-kdebase-kioslaves-3.4.2 287
+MD5 93db6ab96c0cf4d8f28be96dfa7d8f16 files/kubuntu_23_hal_api.diff 36061
 MD5 dfb258d599bf770949dff416197af77f files/kdebase-3.5-configure-openexr.patch 780
-MD5 b22a687fe2e8cf06cd5147f1ec68efb7 files/digest-kdebase-kioslaves-3.4.1 212
+MD5 00c42877b616c0d2c5df33a6eaecbfdd files/configure-fix-kdebase-openexr.patch 703
+MD5 b22a687fe2e8cf06cd5147f1ec68efb7 files/digest-kdebase-kioslaves-3.4.1-r1 212
+MD5 7deca5e51240260b2976fbbe9326ed6d files/digest-kdebase-kioslaves-3.4.2-r1 287
 -----BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.2 (GNU/Linux)
+Version: GnuPG v1.4.1 (GNU/Linux)
 
-iD8DBQFDNVeRj5H05b2HAEkRArFAAJ93VxbQg9XTZmBzW62oJrKnhIksHQCfT4AM
-G0ZO3Ar/J6hQOk4C/kp4IOg=
-=RWMs
+iD8DBQFDP+y6ntT9W3vfTuoRApUBAJ90B02YPt+gulwdTwQvGTkVHhzlCACeMyMw
+S4mRwJjXiN8yv+Vs3NAj9yQ=
+=N/UJ
 -----END PGP SIGNATURE-----
diff --git a/kde-base/kdebase-kioslaves/files/digest-kdebase-kioslaves-3.4.2-r1 b/kde-base/kdebase-kioslaves/files/digest-kdebase-kioslaves-3.4.2-r1
new file mode 100644 (file)
index 0000000..a5f92d1
--- /dev/null
@@ -0,0 +1,4 @@
+MD5 c88659e558ca98dc45377bf8ddfc26c9 kdebase-3.4.0.tar.bz2 22670772
+MD5 3b99262a66edd3c9ad86220ad6cf6579 kdebase-3.4.0-3.4.1.tar.xdelta 1089415
+MD5 7fc67dd6be199ef3208bfc0200a900aa kdebase-3.4.1-3.4.2.tar.xdelta 928157
+MD5 0ea16eb7185ef014d8bd4da4f4530272 kdebase-3.4.2.tar.bz2 22466433
diff --git a/kde-base/kdebase-kioslaves/files/kubuntu_23_hal_api.diff b/kde-base/kdebase-kioslaves/files/kubuntu_23_hal_api.diff
new file mode 100644 (file)
index 0000000..709b8db
--- /dev/null
@@ -0,0 +1,1064 @@
+--- kdebase-3.4.1/kioslave/media/configure.in.in       2005-05-23 12:14:18.000000000 +0000
++++ kdebase-3.4.1/kioslave/media/configure.in.in       2005-06-26 09:44:24.000000000 +0000
+@@ -12,100 +12,100 @@
+ AC_ARG_WITH(hal,AC_HELP_STRING([--with-hal],[Enable HAL support  [default=check]]),[hal_test="$withval"],[hal_test="yes"])
+ 
+ if test "x$hal_test" = "xyes" ; then
+-  
+-########### Check for the HAL, version 0.4.x
+-  
+-  AC_MSG_CHECKING(for the HAL 0.4)
+-  
++
++########### Check for the HAL
++
++  AC_MSG_CHECKING(for the HAL)
++
+   hal_inc=NOTFOUND
+   hal_lib=NOTFOUND
+   hal=NOTFOUND
+-  
+-  search_incs="$kde_includes /usr/include /usr/local/include /usr/include/hal /usr/local/include/hal"
++
++  search_incs="$kde_includes /usr/include /usr/include/hal /usr/local/include /usr/local/include/hal"
+   AC_FIND_FILE(libhal.h libhal-storage.h, $search_incs, hal_incdir)
+-  
++
+   if [test -r $hal_incdir/libhal.h] && [test -r $hal_incdir/libhal-storage.h] ; then
+     HAL_INCS="-I$hal_incdir"
+     hal_inc=FOUND
+   fi
+-  
++
++  if test -r $hal_incdir/libhal-storage.h ; then
++    hal_storage_version=4
++    grep LibHalVolume $hal_incdir/libhal-storage.h \
++    > /dev/null 2>&1 && hal_storage_version=5
++    if test $hal_storage_version = 4 ; then
++      AC_DEFINE(HAL_0_4, , [HAL API version 0.4])
++    fi
++  fi
++
+   search_libs="$kde_libraries /usr/lib /usr/local/lib"
+   AC_FIND_FILE(libhal.so libhal-storage.so, $search_libs, hal_libdir)
+-  
++
+   if [test -r $hal_libdir/libhal.so] && [test -r $hal_libdir/libhal-storage.so] ; then
+     HAL_LIBS="-L$hal_libdir -lhal -lhal-storage"
+     hal_lib=FOUND
+   fi
+-  
+-  if test -r $hal_incdir/libhal.h ; then
+-    hal_version=5
+-    grep LibHalFunctions $hal_incdir/libhal.h \
+-    > /dev/null 2>&1 && hal_version=4
+-    if test $hal_version = 5 ; then
+-      hal_lib=NOT_FOUND
+-    fi
+-  fi
+-                              
+-  
++
++
+   if [test $hal_inc = FOUND] && [test $hal_lib = FOUND] ; then
+       AC_MSG_RESULT(headers $hal_incdir  libraries $hal_libdir)
+       hal=FOUND
+   else
+       AC_MSG_RESULT(searched but not found)
+   fi
+-  
++
+   AC_SUBST(HAL_INCS)
+   AC_SUBST(HAL_LIBS)
+-  
+-  
++
++
+ ########### Check for DBus
+-  
++
+   AC_MSG_CHECKING(for DBus)
+-  
++
+   dbus_inc=NOTFOUND
+   dbus_lib=NOTFOUND
+   dbus=NOTFOUND
+-  
+-  search_incs="$kde_includes /usr/include /usr/local/include /usr/include/dbus-1.0 /usr/local/include/dbus-1.0"
++
++  search_incs="$kde_includes /usr/include /usr/include/dbus-1.0 /usr/local/include /usr/local/include/dbus-1.0"
+   AC_FIND_FILE(dbus/dbus.h, $search_incs, dbus_incdir)
+-  
++
+   search_incs_arch_deps="$kde_includes /usr/lib/dbus-1.0/include /usr/local/lib/dbus-1.0/include"
+   AC_FIND_FILE(dbus/dbus-arch-deps.h, $search_incs_arch_deps, dbus_incdir_arch_deps)
+-  
++
+   if [test -r $dbus_incdir/dbus/dbus.h] && [test -r $dbus_incdir_arch_deps/dbus/dbus-arch-deps.h] ; then
+     DBUS_INCS="-I$dbus_incdir -I$dbus_incdir_arch_deps"
+     dbus_inc=FOUND
+   fi
+-  
++
+   search_libs="$kde_libraries /usr/lib /usr/local/lib"
+   AC_FIND_FILE(libdbus-1.so, $search_libs, dbus_libdir)
+-  
++
+   if test -r $dbus_libdir/libdbus-1.so ; then
+     DBUS_LIBS="-L$dbus_libdir -ldbus-1"
+     dbus_lib=FOUND
+   fi
+-  
++
+   if [test $dbus_inc = FOUND] && [test $dbus_lib = FOUND] ; then
+     AC_MSG_RESULT(headers $dbus_incdir $dbus_incdir_arch_deps  libraries $dbus_libdir)
+     dbus=FOUND
+   else
+     AC_MSG_RESULT(searched but not found)
+   fi
+-  
++
+   AC_SUBST(DBUS_INCS)
+   AC_SUBST(DBUS_LIBS)
+-  
++
+ ########### Check for DBus-Qt bindings
+-  
++
+   AC_MSG_CHECKING(for DBus-Qt bindings)
+-  
++
+   dbusqt_inc=NOTFOUND
+   dbusqt_lib=NOTFOUND
+   dbusqt=NOTFOUND
+-  
+-  search_incs="$kde_includes /usr/include /usr/local/include /usr/include/dbus-1.0 /usr/local/include/dbus-1.0"
++
++  search_incs="$kde_includes /usr/include /usr/include/dbus-1.0 /usr/local/include /usr/local/include/dbus-1.0"
+   AC_FIND_FILE(dbus/connection.h, $search_incs, dbusqt_incdir)
+-  
++
+   if test -r $dbusqt_incdir/dbus/connection.h ; then
+     have_qt_patch=0
+     grep dbus_connection_setup_with_qt_main $dbusqt_incdir/dbus/connection.h \
+@@ -115,15 +115,15 @@
+       dbusqt_inc=FOUND
+     fi
+   fi
+-  
++
+   search_libs="$kde_libraries /usr/lib /usr/local/lib"
+   AC_FIND_FILE(libdbus-qt-1.so, $search_libs, dbusqt_libdir)
+-  
++
+   if test -r $dbusqt_libdir/libdbus-qt-1.so ; then
+     DBUSQT_LIBS="-L$dbusqt_libdir -ldbus-qt-1"
+     dbusqt_lib=FOUND
+   fi
+-  
++
+   if [test $dbusqt_inc = FOUND] && [test $dbusqt_lib = FOUND] ; then
+     AC_MSG_RESULT(headers $dbusqt_incdir libraries $dbusqt_libdir)
+     dbusqt=FOUND
+--- kdebase-3.4.1/kioslave/media/kdedmodule/Makefile.am        2005-05-23 12:14:18.000000000 +0000
++++ kdebase-3.4.1/kioslave/media/kdedmodule/Makefile.am        2005-06-30 08:14:14.000000000 +0000
+@@ -22,7 +22,7 @@
+ 
+ noinst_LTLIBRARIES = $(LINUXCDPOLLING_LIB) $(HALBACKEND_LIB)
+ 
+-kded_mediamanager_la_SOURCES = mediamanager.cpp mediamanager.skel medialist.cpp backendbase.cpp fstabbackend.cpp removablebackend.cpp mediadirnotify.cpp mediadirnotify.skel
++kded_mediamanager_la_SOURCES = mediamanager.cpp mediamanager.skel medialist.cpp backendbase.cpp fstabbackend.cpp haladdition.cpp removablebackend.cpp mediadirnotify.cpp mediadirnotify.skel
+ kded_mediamanager_la_LDFLAGS = $(all_libraries) -module -avoid-version
+ kded_mediamanager_la_LIBADD = $(LIB_KSYCOCA) ../libmediacommon/libmediacommon.la $(HALBACKEND_LIB) $(LINUXCDPOLLING_LIB)
+ 
+--- kdebase-3.4.1/kioslave/media/kdedmodule/mediamanager.cpp   2005-05-23 12:14:18.000000000 +0000
++++ kdebase-3.4.1/kioslave/media/kdedmodule/mediamanager.cpp   2005-06-30 08:14:33.000000000 +0000
+@@ -31,6 +31,7 @@
+ 
+ #ifdef COMPILE_HALBACKEND
+ #include "halbackend.h"
++#include "haladdition.h"
+ #endif //COMPILE_HALBACKEND
+ 
+ #ifdef COMPILE_LINUXCDPOLLING
+@@ -60,8 +61,10 @@
+ 
+ #ifdef COMPILE_HALBACKEND
+       HALBackend* halBackend = new HALBackend(m_mediaList, this);
+-      if (halBackend->InitHal())
++      if (halBackend->InitHal()) {
+               m_backends.append( halBackend );
++              m_backends.append( new HalAddition(m_mediaList) );
++      }
+       else
+       {
+               delete halBackend;
+--- /dev/null  2005-06-16 20:07:09.000000000 +0000
++++ kdebase-3.4.1/kioslave/media/kdedmodule/haladdition.h      2005-07-03 20:29:20.000000000 +0000
+@@ -0,0 +1,49 @@
++/* This file is part of the KDE Project
++   Copyright (c) 2004 Kévin Ottens <ervin ipsquad net>
++
++   This library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Library General Public
++   License version 2 as published by the Free Software Foundation.
++
++   This library 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
++   Library General Public License for more details.
++
++   You should have received a copy of the GNU Library General Public License
++   along with this library; see the file COPYING.LIB.  If not, write to
++   the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++   Boston, MA 02111-1307, USA.
++*/
++
++#ifndef _HALADDITION_H_
++#define _HALADDITION_H_
++
++#include "backendbase.h"
++
++#include <qobject.h>
++#include <qstringlist.h>
++#include <kmountpoint.h>
++
++class HalAddition : public QObject, public BackendBase
++{
++Q_OBJECT
++
++public:
++      HalAddition(MediaList &list);
++      virtual ~HalAddition() {};
++
++      static void guess(const QString &devNode, const QString &mountPoint,
++                          const QString &fsType, bool mounted,
++                          QString &mimeType, QString &iconName,
++                        QString &label);
++private slots:
++      void slotDirty(const QString &path);
++
++private:
++      void handleMtabChange();
++        QStringList m_mtabIds;
++              
++};
++
++#endif
+--- /dev/null  2005-06-16 20:07:09.000000000 +0000
++++ kdebase-3.4.1/kioslave/media/kdedmodule/haladdition.cpp    2005-07-03 21:08:11.000000000 +0000
+@@ -0,0 +1,155 @@
++/* This file is part of the KDE Project
++   Copyright (c) 2004 Kévin Ottens <ervin ipsquad net>
++
++   This library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Library General Public
++   License version 2 as published by the Free Software Foundation.
++
++   This library 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
++   Library General Public License for more details.
++
++   You should have received a copy of the GNU Library General Public License
++   along with this library; see the file COPYING.LIB.  If not, write to
++   the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++   Boston, MA 02111-1307, USA.
++*/
++
++#include "haladdition.h"
++
++#include <klocale.h>
++#include <kdirwatch.h>
++#include <kurl.h>
++#include <kstandarddirs.h>
++
++#ifdef _OS_SOLARIS_
++#define MTAB "/etc/mnttab"
++#else
++#define MTAB "/etc/mtab"
++#endif
++
++
++HalAddition::HalAddition(MediaList &list)
++      : QObject(), BackendBase(list)
++{
++      KDirWatch::self()->addFile(MTAB);
++
++      connect( KDirWatch::self(), SIGNAL( dirty(const QString&) ),
++               this, SLOT( slotDirty(const QString&) ) );
++
++      handleMtabChange();
++
++      KDirWatch::self()->startScan();
++}
++
++void HalAddition::slotDirty(const QString &path)
++{
++      if (path==MTAB)
++      {
++              handleMtabChange();
++      }
++}
++
++void HalAddition::handleMtabChange()
++{
++      QStringList new_mtabIds;
++      KMountPoint::List mtab = KMountPoint::currentMountPoints();
++
++      KMountPoint::List::iterator it = mtab.begin();
++      KMountPoint::List::iterator end = mtab.end();
++
++      for (; it!=end; ++it)
++      {
++              QString dev = (*it)->mountedFrom();
++              QString mp = (*it)->mountPoint();
++              QString fs = (*it)->mountType();
++
++              if ( mp == "/"
++                || mp.find("/media/floppy") != -1
++                || mp.find("/media/zip") != -1
++                || mp.find("/media/jaz") != -1
++                 ) 
++              {
++                      QString device;
++                      const Medium *medium;
++                      
++                      device = dev;
++                      device.replace("/dev/", "");
++
++                      if (medium = m_mediaList.findByName(device))
++                      {
++                              QString mime, icon, label;
++                              guess(dev, mp, fs, true, mime, icon, label);
++                              m_mediaList.changeMediumState(medium->id(), dev, mp, fs, true, mime, icon, medium->label());
++                              new_mtabIds += device;
++                      }
++              }
++      }
++        
++      QStringList::iterator it2 = m_mtabIds.begin();
++      QStringList::iterator end2 = m_mtabIds.end();
++
++      for (; it2!=end2; ++it2)
++      {
++              if ( !new_mtabIds.contains(*it2) )
++              {
++                      const Medium *medium;
++
++                      if (medium = m_mediaList.findByName(*it2))
++                      {
++                              QString dev = medium->deviceNode();
++                              QString mp = medium->mountPoint();
++                              QString fs = medium->fsType();
++                              QString mime, icon, label;
++                              
++                              guess(dev, mp, fs, false, mime, icon, label);
++                              m_mediaList.changeMediumState(medium->id(), false, mime, icon, medium->label());
++                      }
++              }
++      }
++      m_mtabIds = new_mtabIds;
++}
++
++void HalAddition::guess(const QString &devNode, const QString &mountPoint,
++                         const QString &fsType, bool mounted,
++                         QString &mimeType, QString &iconName, QString &label)
++{
++      if ( devNode.find("fd")!=-1 )
++      {
++              if ( devNode.find("360")!=-1 || devNode.find("1200")!=-1 )
++              {
++                      mimeType = "media/floppy5";
++              }
++              else
++              {
++                      mimeType = "media/floppy";
++              }
++              label = i18n("Floppy");
++      }
++      else if ( mountPoint.find("zip")!=-1
++             || mountPoint.find("jaz")!=-1
++             // FREEBSD SPECIFIC
++             || devNode.find("/afd")!=-1
++              )
++      {
++              mimeType = "media/zip";
++              label = i18n("Zip Disk");
++      }
++      else
++      {
++              mimeType = "media/hdd";
++              label = i18n("Harddisk");
++      }
++
++      QString tmp = devNode;
++      if ( tmp.startsWith("/dev/") )
++      {
++              tmp = tmp.mid(5);
++      }
++      label+= " (" + tmp + ")";
++      mimeType+= (mounted ? "_mounted" : "_unmounted");
++      iconName = QString::null;
++}
++
++#include "haladdition.moc"
+--- kdebase-3.4.1/kioslave/media/kdedmodule/halbackend.cpp     2005-05-23 12:14:18.000000000 +0000
++++ kdebase-3.4.1/kioslave/media/kdedmodule/halbackend.cpp     2005-07-03 20:23:51.000000000 +0000
+@@ -1,5 +1,5 @@
+ /* This file is part of the KDE Project
+-   Copyright (c) 2004 Jérôme Lodewyck <lodewyck@clipper.ens.fr>
++   Copyright (c) 2004 - 2005 Jérôme Lodewyck <lodewyck@clipper.ens.fr>
+ 
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Library General Public
+@@ -19,11 +19,13 @@
+ #include "halbackend.h"
+ #include "linuxcdpolling.h"
+ 
++#include <stdlib.h>
++
+ #include <klocale.h>
+ #include <kurl.h>
+ #include <kdebug.h>
+ 
+-#define MOUNT_SUFFIX  (hal_volume_is_mounted(halVolume) ? QString("_mounted") : QString("_unmounted"))
++#define MOUNT_SUFFIX  (libhal_volume_is_mounted(halVolume) ? QString("_mounted") : QString("_unmounted"))
+ 
+ /* Static instance of this class, for static HAL callbacks */
+ static HALBackend* s_HALBackend;
+@@ -33,9 +35,9 @@
+ {
+       char*   _ppt_string;
+       QString _ppt_QString;
+-      _ppt_string = hal_device_get_property_string(ctx, udi, key);
++      _ppt_string = libhal_device_get_property_string(ctx, udi, key, NULL);
+       _ppt_QString = QString(_ppt_string ? _ppt_string : "");
+-      hal_free_string(_ppt_string);
++      libhal_free_string(_ppt_string);
+       return _ppt_QString;
+ }
+ 
+@@ -55,14 +57,24 @@
+ {
+       /* Close HAL connection */
+       if (m_halContext)
++      {
++              #ifdef HAL_0_4
+               hal_shutdown(m_halContext);
++              #else
++              libhal_ctx_shutdown(m_halContext, NULL);
++              libhal_ctx_free(m_halContext);
++              #endif
++      }
+       if (m_halStoragePolicy)
+-              hal_storage_policy_free(m_halStoragePolicy);
++              libhal_storage_policy_free(m_halStoragePolicy);
++
++      /** @todo empty media list ? */
+ }
+ 
+ /* Connect to the HAL */
+ bool HALBackend::InitHal()
+ {
++#ifdef HAL_0_4 /* HAL API 0.4 */
+       /* libhal initialization */
+       m_halFunctions.main_loop_integration    = HALBackend::hal_main_loop_integration;
+       m_halFunctions.device_added                             = HALBackend::hal_device_added;
+@@ -75,19 +87,72 @@
+       m_halContext = hal_initialize(&m_halFunctions, FALSE);
+       if (!m_halContext)
+       {
+-              kdDebug()<<"Failed to initialize HAL!"<<endl;
++              kdDebug() << "Failed to initialize HAL!" << endl;
+               return false;
+       }
+ 
+       /** @todo customize watch policy */
+-      if (hal_device_property_watch_all(m_halContext))
++      kdDebug() << "Watch properties" << endl;
++      if (libhal_device_property_watch_all(m_halContext, NULL))
++      {
++              kdDebug() << "Failed to watch HAL properties!" << endl;
++              return false;
++      }
++#else /* HAL API >= 0.5 */
++      kdDebug() << "Context new" << endl;
++      m_halContext = libhal_ctx_new();
++      if (!m_halContext)
+       {
+-              kdDebug()<<"Failed to watch HAL properties!"<<endl;
++              kdDebug() << "Failed to initialize HAL!" << endl;
++              return false;
++      }
++
++      // Main loop integration
++      kdDebug() << "Main loop integration" << endl;
++      DBusError error;
++      dbus_error_init(&error);
++      DBusConnection *dbus_connection = dbus_bus_get(DBUS_BUS_SYSTEM, &error);
++      if (dbus_error_is_set(&error)) {
++              dbus_error_free(&error);
++              libhal_ctx_free(m_halContext);
++              m_halContext = NULL;
+               return false;
+       }
++      MainLoopIntegration(dbus_connection);
++      libhal_ctx_set_dbus_connection(m_halContext, dbus_connection);
++
++      // HAL callback functions
++      kdDebug() << "Callback functions" << endl;
++      libhal_ctx_set_device_added(m_halContext, HALBackend::hal_device_added);
++      libhal_ctx_set_device_removed(m_halContext, HALBackend::hal_device_removed);
++      libhal_ctx_set_device_new_capability (m_halContext, NULL);
++      libhal_ctx_set_device_lost_capability (m_halContext, NULL);
++      libhal_ctx_set_device_property_modified (m_halContext, HALBackend::hal_device_property_modified);
++      libhal_ctx_set_device_condition(m_halContext, HALBackend::hal_device_condition);
++
++      kdDebug() << "Context Init" << endl;
++      if (!libhal_ctx_init(m_halContext, &error))
++      {
++              if (dbus_error_is_set(&error))
++                      dbus_error_free(&error);
++              libhal_ctx_free(m_halContext);
++              m_halContext = NULL;
++              kdDebug() << "Failed to init HAL context!" << endl;
++              return false;
++      }
++
++      /** @todo customize watch policy */
++      kdDebug() << "Watch properties" << endl;
++      if (!libhal_device_property_watch_all(m_halContext, &error))
++      {
++              kdDebug() << "Failed to watch HAL properties!" << endl;
++              return false;
++      }
++#endif
+ 
+       /* libhal-storage initialization */
+-      m_halStoragePolicy = hal_storage_policy_new();
++      kdDebug() << "Storage Policy" << endl;
++      m_halStoragePolicy = libhal_storage_policy_new();
+       /** @todo define libhal-storage icon policy */
+ 
+       /* List devices at startup */
+@@ -97,8 +162,10 @@
+ /* List devices (at startup)*/
+ bool HALBackend::ListDevices()
+ {
++      kdDebug() << "ListDevices" << endl;
++
+       int numDevices;
+-      char** halDeviceList = hal_get_all_devices(m_halContext, &numDevices);
++      char** halDeviceList = libhal_get_all_devices(m_halContext, &numDevices, NULL);
+ 
+       if (!halDeviceList)
+               return false;
+@@ -116,7 +183,7 @@
+ {
+       /* We don't deal with devices that do not expose their capabilities.
+       If we don't check this, we will get a lot of warning messages from libhal */
+-      if (!hal_device_property_exists(m_halContext, udi, "info.capabilities"))
++      if (!libhal_device_property_exists(m_halContext, udi, "info.capabilities", NULL))
+               return;
+ 
+       /* If the device is already listed, do not process.
+@@ -126,17 +193,18 @@
+               return;
+ 
+       /* Add volume block devices */
+-      if (hal_device_query_capability(m_halContext, udi, "volume"))
++      if (libhal_device_query_capability(m_halContext, udi, "volume", NULL))
+       {
+               /* We only list volume that have a filesystem or volume that have an audio track*/
+               if ( (hal_device_get_property_QString(m_halContext, udi, "volume.fsusage") != "filesystem") &&
+-                   (!hal_device_get_property_bool(m_halContext, udi, "volume.disc.has_audio")) )
++                   (!libhal_device_get_property_bool(m_halContext, udi, "volume.disc.has_audio", NULL)) )
+                       return;
+               /* Query drive udi */
+               QString driveUdi = hal_device_get_property_QString(m_halContext, udi, "block.storage_device");
+               /* We don't list floppy volumes because we list floppy drives */
+               if ((hal_device_get_property_QString(m_halContext, driveUdi.ascii(), "storage.drive_type") == "floppy") ||
+-                  (hal_device_get_property_QString(m_halContext, driveUdi.ascii(), "storage.drive_type") == "zip"))
++                  (hal_device_get_property_QString(m_halContext, driveUdi.ascii(), "storage.drive_type") == "zip") ||
++                  (hal_device_get_property_QString(m_halContext, driveUdi.ascii(), "storage.drive_type") == "jaz"))
+                       return;
+ 
+               /** @todo check exclusion list **/
+@@ -148,11 +216,12 @@
+ 
+               return;
+       }
+-
++      
+       /* Floppy & zip drives */
+-      if (hal_device_query_capability(m_halContext, udi, "storage"))
++      if (libhal_device_query_capability(m_halContext, udi, "storage", NULL))
+               if ((hal_device_get_property_QString(m_halContext, udi, "storage.drive_type") == "floppy") ||
+-                  (hal_device_get_property_QString(m_halContext, udi, "storage.drive_type") == "zip"))
++                  (hal_device_get_property_QString(m_halContext, udi, "storage.drive_type") == "zip") ||
++                  (hal_device_get_property_QString(m_halContext, udi, "storage.drive_type") == "jaz"))
+               {
+                       /* Create medium */
+                       Medium* medium = new Medium(udi, "");
+@@ -162,7 +231,7 @@
+               }
+ 
+       /* Camera handled by gphoto2*/
+-      if (hal_device_query_capability(m_halContext, udi, "camera"))
++      if (libhal_device_query_capability(m_halContext, udi, "camera", NULL))
+ 
+               {
+                       /* Create medium */
+@@ -180,9 +249,14 @@
+ 
+ void HALBackend::ModifyDevice(const char *udi, const char* key)
+ {
+-      Q_UNUSED(udi);
++      const char* mediumUdi = findMediumUdiFromUdi(udi);
++      if (!mediumUdi)
++              return;
++      ResetProperties(mediumUdi); 
++
+       Q_UNUSED(key);
+ /*
++      Q_UNUSED(udi);
+       TODO: enable this when the watch policy is written
+ */
+ }
+@@ -229,8 +303,8 @@
+               return medium->id().ascii();
+ 
+       /* Hard part : this is a volume whose drive is registered */
+-      if (hal_device_property_exists(m_halContext, udi, "info.capabilities"))
+-              if (hal_device_query_capability(m_halContext, udi, "volume"))
++      if (libhal_device_property_exists(m_halContext, udi, "info.capabilities", NULL))
++              if (libhal_device_query_capability(m_halContext, udi, "volume", NULL))
+               {
+                       QString driveUdi = hal_device_get_property_QString(m_halContext, udi, "block.storage_device");
+                       return findMediumUdiFromUdi(driveUdi.ascii());
+@@ -244,11 +318,11 @@
+       kdDebug() << "HALBackend::setProperties" << endl;
+ 
+       Medium* m = new Medium(mediumUdi, "");
+-      if (hal_device_query_capability(m_halContext, mediumUdi, "volume"))
++      if (libhal_device_query_capability(m_halContext, mediumUdi, "volume", NULL))
+               setVolumeProperties(m);
+-      if (hal_device_query_capability(m_halContext, mediumUdi, "storage"))
++      if (libhal_device_query_capability(m_halContext, mediumUdi, "storage", NULL))
+               setFloppyProperties(m);
+-      if (hal_device_query_capability(m_halContext, mediumUdi, "camera"))
++      if (libhal_device_query_capability(m_halContext, mediumUdi, "camera", NULL))
+               setCameraProperties(m);
+ 
+       m_mediaList.changeMediumState(*m);
+@@ -262,34 +336,35 @@
+ 
+       const char* udi = medium->id().ascii();
+       /* Check if the device still exists */
+-      if (!hal_device_exists(m_halContext, udi))
++      if (!libhal_device_exists(m_halContext, udi, NULL))
+                       return;
+ 
+       /* Get device information from libhal-storage */
+-      HalVolume* halVolume = hal_volume_from_udi(m_halContext, udi);
++      LibHalVolume* halVolume = libhal_volume_from_udi(m_halContext, udi);
+       if (!halVolume)
+               return;
+-
+-      QString driveUdi = hal_volume_get_storage_device_udi(halVolume);
+-      HalDrive*  halDrive  = hal_drive_from_udi(m_halContext, driveUdi.ascii());
++      QString driveUdi = libhal_volume_get_storage_device_udi(halVolume);
++      LibHalDrive*  halDrive  = libhal_drive_from_udi(m_halContext, driveUdi.ascii());
+ 
+       medium->setName(
+-              generateName(hal_volume_get_device_file(halVolume)) );
++              generateName(libhal_volume_get_device_file(halVolume)) );
+ 
+       medium->mountableState(
+-              hal_volume_get_device_file(halVolume),          /* Device node */
+-              hal_volume_get_mount_point(halVolume),          /* Mount point */
+-              hal_volume_get_fstype(halVolume),                       /* Filesystem type */
+-              hal_volume_is_mounted(halVolume) );                     /* Mounted ? */
++              libhal_volume_get_device_file(halVolume),               /* Device node */
++              libhal_volume_get_mount_point(halVolume),               /* Mount point */
++              libhal_volume_get_fstype(halVolume),                    /* Filesystem type */
++              libhal_volume_is_mounted(halVolume) );                  /* Mounted ? */
+ 
+       QString mimeType;
+-      if (hal_volume_is_disc(halVolume))
++      if (libhal_volume_is_disc(halVolume))
+       {
+               mimeType = "media/cdrom" + MOUNT_SUFFIX;
+ 
+-              HalVolumeDiscType discType = hal_volume_get_disc_type(halVolume);
+-              if ((discType == HAL_VOLUME_DISC_TYPE_CDR) || (discType == HAL_VOLUME_DISC_TYPE_CDRW))
+-                      if (hal_volume_disc_is_blank(halVolume))
++              LibHalVolumeDiscType discType = libhal_volume_get_disc_type(halVolume);
++              if ((discType == LIBHAL_VOLUME_DISC_TYPE_CDROM) ||
++                  (discType == LIBHAL_VOLUME_DISC_TYPE_CDR) ||
++                      (discType == LIBHAL_VOLUME_DISC_TYPE_CDRW))
++                      if (libhal_volume_disc_is_blank(halVolume))
+                       {
+                               mimeType = "media/blankcd";
+                               medium->unmountableState("");
+@@ -297,10 +372,10 @@
+                       else
+                               mimeType = "media/cdwriter" + MOUNT_SUFFIX;
+ 
+-              if ((discType == HAL_VOLUME_DISC_TYPE_DVDROM) || (discType == HAL_VOLUME_DISC_TYPE_DVDRAM) ||
+-                      (discType == HAL_VOLUME_DISC_TYPE_DVDR) || (discType == HAL_VOLUME_DISC_TYPE_DVDRW) ||
+-                      (discType == HAL_VOLUME_DISC_TYPE_DVDPLUSR) || (discType == HAL_VOLUME_DISC_TYPE_DVDPLUSRW) )
+-                      if (hal_volume_disc_is_blank(halVolume))
++              if ((discType == LIBHAL_VOLUME_DISC_TYPE_DVDROM) || (discType == LIBHAL_VOLUME_DISC_TYPE_DVDRAM) ||
++                      (discType == LIBHAL_VOLUME_DISC_TYPE_DVDR) || (discType == LIBHAL_VOLUME_DISC_TYPE_DVDRW) ||
++                      (discType == LIBHAL_VOLUME_DISC_TYPE_DVDPLUSR) || (discType == LIBHAL_VOLUME_DISC_TYPE_DVDPLUSRW) )
++                      if (libhal_volume_disc_is_blank(halVolume))
+                       {
+                               mimeType = "media/blankdvd";
+                               medium->unmountableState("");
+@@ -308,16 +383,16 @@
+                       else
+                               mimeType = "media/dvd" + MOUNT_SUFFIX;
+ 
+-              if (hal_volume_disc_has_audio(halVolume) && !hal_volume_disc_has_data(halVolume))
++              if (libhal_volume_disc_has_audio(halVolume) && !libhal_volume_disc_has_data(halVolume))
+               {
+                       mimeType = "media/audiocd";
+-                      medium->unmountableState( "audiocd:/?device=" + QString(hal_volume_get_device_file(halVolume)) );
++                      medium->unmountableState( "audiocd:/?device=" + QString(libhal_volume_get_device_file(halVolume)) );
+               }
+ 
+               medium->setIconName(QString::null);
+-              
++
+               /* check if the disc id a vcd or a video dvd */
+-              DiscType type = LinuxCDPolling::identifyDiscType(hal_volume_get_device_file(halVolume));
++              DiscType type = LinuxCDPolling::identifyDiscType(libhal_volume_get_device_file(halVolume));
+               switch (type)
+               {
+                 case DiscType::VCD:
+@@ -334,44 +409,48 @@
+       else
+       {
+               mimeType = "media/hdd" + MOUNT_SUFFIX;
+-              if (hal_drive_is_hotpluggable(halDrive))
+-              {               
++              if (libhal_drive_is_hotpluggable(halDrive))
++              {
+                       mimeType = "media/removable" + MOUNT_SUFFIX;
+                       medium->needMounting();
+-                      switch (hal_drive_get_type(halDrive)) {
+-                      case HAL_DRIVE_TYPE_COMPACT_FLASH:
++                      switch (libhal_drive_get_type(halDrive)) {
++                      case LIBHAL_DRIVE_TYPE_COMPACT_FLASH:
+                               medium->setIconName("compact_flash" + MOUNT_SUFFIX);
+                               break;
+-                      case HAL_DRIVE_TYPE_MEMORY_STICK:
++                      case LIBHAL_DRIVE_TYPE_MEMORY_STICK:
+                               medium->setIconName("memory_stick" + MOUNT_SUFFIX);
+                               break;
+-                      case HAL_DRIVE_TYPE_SMART_MEDIA:
++                      case LIBHAL_DRIVE_TYPE_SMART_MEDIA:
+                               medium->setIconName("smart_media" + MOUNT_SUFFIX);
+                               break;
+-                      case HAL_DRIVE_TYPE_SD_MMC:
++                      case LIBHAL_DRIVE_TYPE_SD_MMC:
+                               medium->setIconName("sd_mmc" + MOUNT_SUFFIX);
+                               break;
+-                      case HAL_DRIVE_TYPE_PORTABLE_AUDIO_PLAYER:
++                      case LIBHAL_DRIVE_TYPE_PORTABLE_AUDIO_PLAYER:
+                               medium->setIconName(QString::null); //FIXME need icon
+                               break;
+-                      case HAL_DRIVE_TYPE_CAMERA:
++                      case LIBHAL_DRIVE_TYPE_CAMERA:
+                               medium->setIconName("camera" + MOUNT_SUFFIX);
+-                              break;                  
+-                      case HAL_DRIVE_TYPE_TAPE:
++                              break;
++                      case LIBHAL_DRIVE_TYPE_TAPE:
+                               medium->setIconName(QString::null); //FIXME need icon
+-                              break;                  
+-                      default:        
++                              break;
++                      default:
+                               medium->setIconName(QString::null);
+                       };
+               };
+       }
+       medium->setMimeType(mimeType);
+ 
+-      medium->setLabel(QString::fromUtf8( hal_volume_policy_compute_display_name(halDrive,
+-              halVolume, m_halStoragePolicy) ) );
++      char* name = libhal_volume_policy_compute_display_name(halDrive, halVolume, m_halStoragePolicy);
++      //char* name = libhal_drive_policy_compute_display_name(halDrive, halVolume, m_halStoragePolicy);
++      QString volume_name = QString::fromUtf8(name);
++      QString media_name = volume_name;
++      medium->setLabel(media_name);
++      free(name);
+ 
+-      hal_drive_free(halDrive);
+-      hal_volume_free(halVolume);
++      libhal_drive_free(halDrive);
++      libhal_volume_free(halVolume);
+ }
+ 
+ // Handle floppies and zip drives
+@@ -381,34 +460,34 @@
+ 
+       const char* udi = medium->id().ascii();
+       /* Check if the device still exists */
+-      if (!hal_device_exists(m_halContext, udi))
++      if (!libhal_device_exists(m_halContext, udi, NULL))
+               return;
+ 
+-      HalDrive*  halDrive  = hal_drive_from_udi(m_halContext, udi);
++      LibHalDrive*  halDrive  = libhal_drive_from_udi(m_halContext, udi);
+       if (!halDrive)
+               return;
+       int numVolumes;
+-      char** volumes = hal_drive_find_all_volumes(m_halContext, halDrive, &numVolumes);
+-      HalVolume* halVolume = NULL;
++      char** volumes = libhal_drive_find_all_volumes(m_halContext, halDrive, &numVolumes);
++      LibHalVolume* halVolume = NULL;
+       kdDebug() << " found " << numVolumes << " volumes" << endl;
+       if (numVolumes)
+-              halVolume = hal_volume_from_udi(m_halContext, volumes[0]);
++              halVolume = libhal_volume_from_udi(m_halContext, volumes[0]);
+ 
+       medium->setName(
+-              generateName(hal_drive_get_device_file(halDrive)) );
++              generateName(libhal_drive_get_device_file(halDrive)) );
+ 
+       if (halVolume)
+       {
+               medium->mountableState(
+-                      hal_volume_get_device_file(halVolume),          /* Device node */
+-                      hal_volume_get_mount_point(halVolume),          /* Mount point */
+-                      hal_volume_get_fstype(halVolume),                       /* Filesystem type */
+-                      hal_volume_is_mounted(halVolume) );                     /* Mounted ? */
++                      libhal_volume_get_device_file(halVolume),               /* Device node */
++                      libhal_volume_get_mount_point(halVolume),               /* Mount point */
++                      libhal_volume_get_fstype(halVolume),                    /* Filesystem type */
++                      libhal_volume_is_mounted(halVolume) );                  /* Mounted ? */
+       }
+       else
+       {
+               medium->mountableState(
+-                      hal_drive_get_device_file(halDrive),            /* Device node */
++                      libhal_drive_get_device_file(halDrive),         /* Device node */
+                       "",                                                                                     /* Mount point */
+                       "",                                                                                     /* Filesystem type */
+                       false );                                                                        /* Mounted ? */
+@@ -421,7 +500,7 @@
+               else
+                       medium->setMimeType("media/floppy_unmounted");
+       }
+-      
++
+       if (hal_device_get_property_QString(m_halContext, udi, "storage.drive_type") == "zip")
+       {
+               if (halVolume)
+@@ -429,14 +508,29 @@
+               else
+                       medium->setMimeType("media/zip_unmounted");
+       }
+-      
++
+       medium->setIconName(QString::null);
+ 
+-      medium->setLabel(QString::fromUtf8( hal_drive_policy_compute_display_name(halDrive,
+-              halVolume, m_halStoragePolicy) ) );
++      QString media_name;
++      if (halVolume)
++      {
++              char* name = libhal_drive_policy_compute_display_name(halDrive, halVolume, m_halStoragePolicy);
++              QString volume_name = QString::fromUtf8(name);
++              media_name = volume_name;
++              free(name);
++      }
++      else
++      {
++              char* name = libhal_drive_policy_compute_display_name(halDrive, halVolume, m_halStoragePolicy);
++              QString drive_name =  QString::fromUtf8(name);
++              media_name = drive_name;
++              free(name);
++      }
++      medium->setLabel(media_name);
+ 
+-      hal_drive_free(halDrive);
+-      hal_volume_free(halVolume);
++      free(volumes);
++      libhal_drive_free(halDrive);
++      libhal_volume_free(halVolume);
+ }
+ 
+ void HALBackend::setCameraProperties(Medium* medium)
+@@ -445,7 +539,7 @@
+ 
+       const char* udi = medium->id().ascii();
+       /* Check if the device still exists */
+-      if (!hal_device_exists(m_halContext, udi))
++      if (!libhal_device_exists(m_halContext, udi, NULL))
+               return;
+ 
+       /** @todo find name */
+@@ -467,6 +561,7 @@
+ ** HAL CALL-BACKS                        **
+ ******************************************/
+ 
++#ifdef HAL_0_4
+ void HALBackend::hal_main_loop_integration(LibHalContext *ctx,
+                       DBusConnection *dbus_connection)
+ {
+@@ -474,6 +569,7 @@
+       Q_UNUSED(ctx);
+       s_HALBackend->MainLoopIntegration(dbus_connection);
+ }
++#endif
+ 
+ void HALBackend::hal_device_added(LibHalContext *ctx, const char *udi)
+ {
+@@ -498,8 +594,15 @@
+       Q_UNUSED(is_added);
+       s_HALBackend->ModifyDevice(udi, key);
+ }
++
+ void HALBackend::hal_device_condition(LibHalContext *ctx, const char *udi,
+-                      const char *condition_name, DBusMessage *message)
++                      const char *condition_name,
++                      #ifdef HAL_0_4
++                      DBusMessage *message
++                      #else
++                      const char* message
++                      #endif
++                      )
+ {
+       kdDebug() << "HALBackend::hal_device_condition " << udi << " -- " << condition_name << endl;
+       Q_UNUSED(ctx);
+--- kdebase-3.4.1/kioslave/media/kdedmodule/halbackend.h       2005-05-23 12:14:18.000000000 +0000
++++ kdebase-3.4.1/kioslave/media/kdedmodule/halbackend.h       2005-06-30 08:20:11.000000000 +0000
+@@ -35,6 +35,8 @@
+ #include <qstringlist.h>
+ #include <qstring.h>
+ 
++#include <config.h>
++
+ /* We acknowledge the the dbus API is unstable */
+ #define DBUS_API_SUBJECT_TO_CHANGE
+ /* DBus-Qt bindings */
+@@ -43,6 +45,65 @@
+ #include <libhal.h>
+ #include <libhal-storage.h>
+ 
++/* The HAL API changed between 0.4 and 0.5 series.
++These defines enable backward compatibility */
++#ifdef HAL_0_4
++      // libhal-storage 0.4 API
++      #define LibHalStoragePolicy                             HalStoragePolicy
++      #define LibHalDrive                                             HalDrive
++      #define LibHalVolume                                    HalVolume
++      #define LibHalVolumeDiscType                    HalVolumeDiscType
++      #define libhal_storage_policy_free              hal_storage_policy_free
++      #define libhal_storage_policy_new               hal_storage_policy_new
++      #define libhal_drive_from_udi                   hal_drive_from_udi
++      #define libhal_drive_find_all_volumes   hal_drive_find_all_volumes
++      #define libhal_drive_get_type                   hal_drive_get_type
++      #define libhal_drive_get_device_file    hal_drive_get_device_file
++      #define libhal_drive_free                               hal_drive_free
++      #define libhal_drive_policy_compute_display_name        hal_drive_policy_compute_display_name
++      #define libhal_drive_is_hotpluggable    hal_drive_is_hotpluggable
++      #define libhal_volume_from_udi                  hal_volume_from_udi
++      #define libhal_volume_get_device_file   hal_volume_get_device_file
++      #define libhal_volume_get_mount_point   hal_volume_get_mount_point
++      #define libhal_volume_get_fstype                hal_volume_get_fstype
++      #define libhal_volume_is_mounted                hal_volume_is_mounted
++      #define libhal_volume_get_disc_type             hal_volume_get_disc_type
++      #define libhal_volume_free                              hal_volume_free
++      #define libhal_volume_policy_compute_display_name       hal_volume_policy_compute_display_name
++      #define libhal_volume_disc_has_data             hal_volume_disc_has_data
++      #define libhal_volume_disc_has_audio    hal_volume_disc_has_audio
++      #define libhal_volume_disc_is_blank             hal_volume_disc_is_blank
++      #define libhal_volume_is_disc                   hal_volume_is_disc
++      #define libhal_volume_get_storage_device_udi    hal_volume_get_storage_device_udi
++      #define LIBHAL_VOLUME_DISC_TYPE_CDROM           HAL_VOLUME_DISC_TYPE_CDROM
++      #define LIBHAL_VOLUME_DISC_TYPE_CDR                     HAL_VOLUME_DISC_TYPE_CDR
++      #define LIBHAL_VOLUME_DISC_TYPE_CDRW            HAL_VOLUME_DISC_TYPE_CDRW
++      #define LIBHAL_VOLUME_DISC_TYPE_DVDROM          HAL_VOLUME_DISC_TYPE_DVDROM
++      #define LIBHAL_VOLUME_DISC_TYPE_DVDRAM          HAL_VOLUME_DISC_TYPE_DVDRAM
++      #define LIBHAL_VOLUME_DISC_TYPE_DVDR            HAL_VOLUME_DISC_TYPE_DVDR
++      #define LIBHAL_VOLUME_DISC_TYPE_DVDRW           HAL_VOLUME_DISC_TYPE_DVDRW
++      #define LIBHAL_VOLUME_DISC_TYPE_DVDPLUSR        HAL_VOLUME_DISC_TYPE_DVDPLUSR
++      #define LIBHAL_VOLUME_DISC_TYPE_DVDPLUSRW       HAL_VOLUME_DISC_TYPE_DVDPLUSRW
++      #define LIBHAL_DRIVE_TYPE_COMPACT_FLASH                 HAL_DRIVE_TYPE_COMPACT_FLASH
++      #define LIBHAL_DRIVE_TYPE_MEMORY_STICK                  HAL_DRIVE_TYPE_MEMORY_STICK
++      #define LIBHAL_DRIVE_TYPE_SMART_MEDIA                   HAL_DRIVE_TYPE_SMART_MEDIA
++      #define LIBHAL_DRIVE_TYPE_SD_MMC                                HAL_DRIVE_TYPE_SD_MMC
++      #define LIBHAL_DRIVE_TYPE_PORTABLE_AUDIO_PLAYER HAL_DRIVE_TYPE_PORTABLE_AUDIO_PLAYER
++      #define LIBHAL_DRIVE_TYPE_CAMERA                                HAL_DRIVE_TYPE_CAMERA
++      #define LIBHAL_DRIVE_TYPE_TAPE                                  HAL_DRIVE_TYPE_TAPE
++
++      // libhal 0.4 API
++      #define libhal_free_string hal_free_string
++      #define libhal_device_exists(ctx, udi, error) hal_device_exists(ctx, udi)
++      #define libhal_device_property_watch_all(ctx, error) hal_device_property_watch_all(ctx)
++      #define libhal_get_all_devices(ctx, num_devices, error) hal_get_all_devices(ctx, num_devices)
++      #define libhal_device_property_exists(ctx, udi, key, error) hal_device_property_exists(ctx, udi, key)
++      #define libhal_device_get_property_bool(ctx, udi, key, error) hal_device_get_property_bool(ctx, udi, key)
++      #define libhal_device_get_property_string(ctx, udi, key, error) hal_device_get_property_string(ctx, udi, key)
++      #define libhal_device_query_capability(ctx, udi, capability, error) hal_device_query_capability(ctx, udi, capability)
++#endif
++
++
+ /**
+ * A handy function to query a hal string
+ *
+@@ -137,12 +198,14 @@
+ 
+ /* Hal call-backs -- from gvm*/
+ public:
++#ifdef HAL_0_4
+       /** Invoked by libhal for integration with our mainloop.
+       *
+       *  @param  ctx                 LibHal context
+       *  @param  dbus_connection     D-BUS connection to integrate
+       */
+       static void hal_main_loop_integration(LibHalContext *ctx, DBusConnection *dbus_connection);
++#endif
+ 
+       /** Invoked when a device is added to the Global Device List.
+       *
+@@ -175,7 +238,13 @@
+       *  @param  message             D-BUS message with variable parameters depending on condition
+       */
+       static void hal_device_condition(LibHalContext *ctx, const char *udi,
+-                              const char *condition_name, DBusMessage *message);
++                              const char *condition_name,
++                              #ifdef HAL_0_4
++                              DBusMessage *message
++                              #else
++                              const char* message
++                              #endif
++                              );
+ 
+ /* HAL and DBus structures */
+ private:
+@@ -184,15 +253,17 @@
+       */
+       LibHalContext*          m_halContext;
+ 
++#ifdef HAL_0_4
+       /**
+       * Structure defining the hal callback function for devices events
+       */
+       LibHalFunctions         m_halFunctions;
++#endif
+ 
+       /**
+       * libhal-storage HAL policy, e.g. for icon names
+       */
+-      HalStoragePolicy*       m_halStoragePolicy;
++      LibHalStoragePolicy*    m_halStoragePolicy;
+ 
+       /**
+       * The DBus-Qt bindings connection for mainloop integration
diff --git a/kde-base/kdebase-kioslaves/kdebase-kioslaves-3.4.2-r1.ebuild b/kde-base/kdebase-kioslaves/kdebase-kioslaves-3.4.2-r1.ebuild
new file mode 100644 (file)
index 0000000..d608adf
--- /dev/null
@@ -0,0 +1,30 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/kde-base/kdebase-kioslaves/kdebase-kioslaves-3.4.2-r1.ebuild,v 1.1 2005/10/02 14:20:19 cryos Exp $
+
+KMNAME=kdebase
+KMMODULE=kioslave
+MAXKDEVER=$PV
+KM_DEPRANGE="$PV $MAXKDEVER"
+inherit kde-meta eutils
+
+DESCRIPTION="kioslave: the kde VFS framework - kioslave plugins present a filesystem-like view of arbitrary data"
+KEYWORDS="~alpha ~amd64 ~ppc ~ppc64 ~sparc ~x86"
+IUSE="hal ldap samba openexr"
+DEPEND="ldap? ( net-nds/openldap )
+       samba? ( >=net-fs/samba-3.0.1 )
+       >=dev-libs/cyrus-sasl-2
+       hal? ( >=sys-apps/dbus
+              >=sys-apps/hal )
+       openexr? ( media-libs/openexr )"
+RDEPEND="${DEPEND}
+       $(deprange 3.4.1 $MAXKDEVER kde-base/kdialog)"  # for the kdeeject script used by the devices/mounthelper ioslave
+# for --with-samba
+PATCHES="${FILESDIR}/kdebase-3.4.1-configure.patch"
+# for --with-openexr
+PATCHES="$PATCHES $FILESDIR/configure-fix-kdebase-openexr.patch"
+# Use the kubuntu patch to allow the kioslave to work with the new hal/dbus
+PATCHES="${PATCHES} ${FILESDIR}/kubuntu_23_hal_api.diff"
+
+myconf="$myconf `use_with ldap` `use_with samba` `use_with hal` `use_with openexr`"
+