[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/solid/solid/backends/hal
From:       Kevin Ottens <ervin () kde ! org>
Date:       2008-08-13 16:34:54
Message-ID: 1218645294.883115.22199.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 846530 by ervin:

Call eject only when HAL tells us we're supposed to (like for iPods for
instance).
Approved by [ade] our Minority Platforms Overlord.

BUG: 156284


 M  +24 -0     halstorageaccess.cpp  


--- trunk/KDE/kdelibs/solid/solid/backends/hal/halstorageaccess.cpp #846529:846530
@@ -20,6 +20,7 @@
 #include "halstorageaccess.h"
 
 #include <QtCore/QDebug>
+#include <QtCore/QProcess>
 #include <QtDBus/QDBusConnection>
 #include <QtDBus/QDBusInterface>
 #include <QtDBus/QDBusReply>
@@ -124,6 +125,29 @@
     } else if (m_teardownInProgress) {
         m_teardownInProgress = false;
         emit teardownDone(Solid::NoError, QVariant(), m_device->udi());
+
+        HalDevice drive(m_device->property("block.storage_device").toString());
+        if (drive.property("storage.requires_eject").toBool()) {
+
+            QString devnode = m_device->property("block.device").toString();
+
+#if defined(Q_OS_OPENBSD)
+            QString program = "cdio";
+            QStringList args;
+            args << "-f" << devnode << "eject";
+#elif defined(Q_OS_FREEBSD) || defined(Q_OS_NETBSD)
+            devnode.replace("/dev/", "").replace("([0-9]).", "\\1");
+            QString program = "cdcontrol";
+            QStringList args;
+            args << "-f" << devnode << "eject";
+#else
+            QString program = "eject";
+            QStringList args;
+            args << devnode;
+#endif
+
+            QProcess::startDetached(program, args);
+        }
     }
 }
 
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic