summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus D. Hanwell <cryos@gentoo.org>2005-10-02 14:20:19 +0000
committerMarcus D. Hanwell <cryos@gentoo.org>2005-10-02 14:20:19 +0000
commite65d01d6ef511bc1149409df994350f0876b1084 (patch)
tree96ba51735936c14df9c01285aed5c2994f0b1e99 /kde-base
parentMark 2.0.0 stable on ia64 (diff)
downloadgentoo-2-e65d01d6ef511bc1149409df994350f0876b1084.tar.gz
gentoo-2-e65d01d6ef511bc1149409df994350f0876b1084.tar.bz2
gentoo-2-e65d01d6ef511bc1149409df994350f0876b1084.zip
Applied kubuntu patch to kioslaves to allow it to work with the new hal/dbus, bug 105553.
(Portage version: 2.0.52-r1)
Diffstat (limited to 'kde-base')
-rw-r--r--kde-base/kdebase-kioslaves/ChangeLog9
-rw-r--r--kde-base/kdebase-kioslaves/Manifest25
-rw-r--r--kde-base/kdebase-kioslaves/files/digest-kdebase-kioslaves-3.4.2-r14
-rw-r--r--kde-base/kdebase-kioslaves/files/kubuntu_23_hal_api.diff1064
-rw-r--r--kde-base/kdebase-kioslaves/kdebase-kioslaves-3.4.2-r1.ebuild30
5 files changed, 1115 insertions, 17 deletions
diff --git a/kde-base/kdebase-kioslaves/ChangeLog b/kde-base/kdebase-kioslaves/ChangeLog
index cb77837fe8b3..bf3b09c29c86 100644
--- a/kde-base/kdebase-kioslaves/ChangeLog
+++ b/kde-base/kdebase-kioslaves/ChangeLog
@@ -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:
diff --git a/kde-base/kdebase-kioslaves/Manifest b/kde-base/kdebase-kioslaves/Manifest
index 935daf7cba9e..462bcd810034 100644
--- a/kde-base/kdebase-kioslaves/Manifest
+++ b/kde-base/kdebase-kioslaves/Manifest
@@ -1,23 +1,16 @@
------BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA1
-
MD5 3196f5d7edade715c6861def61990244 kdebase-kioslaves-3.4.1.ebuild 895
-MD5 905699f5d72415ca005d2a915cb4731c kdebase-kioslaves-3.4.1-r1.ebuild 962
+MD5 94bbd07645f8c867c9457d6050517a09 kdebase-kioslaves-3.4.2-r1.ebuild 1231
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 3a5054612ce3f7071ca33d062b8d107d ChangeLog 4054
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
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.2 (GNU/Linux)
-
-iD8DBQFDNVeRj5H05b2HAEkRArFAAJ93VxbQg9XTZmBzW62oJrKnhIksHQCfT4AM
-G0ZO3Ar/J6hQOk4C/kp4IOg=
-=RWMs
------END PGP SIGNATURE-----
+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
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
index 000000000000..a5f92d1d76f9
--- /dev/null
+++ b/kde-base/kdebase-kioslaves/files/digest-kdebase-kioslaves-3.4.2-r1
@@ -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
index 000000000000..709b8db9c555
--- /dev/null
+++ b/kde-base/kdebase-kioslaves/files/kubuntu_23_hal_api.diff
@@ -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
index 000000000000..d608adfa16f2
--- /dev/null
+++ b/kde-base/kdebase-kioslaves/kdebase-kioslaves-3.4.2-r1.ebuild
@@ -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`"
+