tdehw: code restructuring for tdestoragedevice.

1. added disk helper source files
2. removed WITH_UDISKS2, WITH_UDISK, WITH_UDEVIL defines. The respective code is always included
3. order of execution for mount/umount activities: udisks2, udisk, udevil, pmount.

Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
pull/36/head
Michele Calgaro 5 years ago
parent c76553c4fb
commit 7214a7b6b5

@ -92,9 +92,6 @@ OPTION( WITH_HAL "Enable HAL support" OFF )
OPTION( WITH_DEVKITPOWER "Enable DeviceKit Power support" OFF ) OPTION( WITH_DEVKITPOWER "Enable DeviceKit Power support" OFF )
OPTION( WITH_LOGINDPOWER "Enable Logind/Systemd Power support" OFF ) OPTION( WITH_LOGINDPOWER "Enable Logind/Systemd Power support" OFF )
OPTION( WITH_UPOWER "Enable uPower support" ${WITH_ALL_OPTIONS} ) OPTION( WITH_UPOWER "Enable uPower support" ${WITH_ALL_OPTIONS} )
OPTION( WITH_UDISKS "Enable uDisks support" ${WITH_ALL_OPTIONS} )
OPTION( WITH_UDISKS2 "Enable uDisks2 support" ${WITH_ALL_OPTIONS} )
OPTION( WITH_UDEVIL "Enable udevil support" ${WITH_ALL_OPTIONS} )
OPTION( WITH_CONSOLEKIT "Enable ConsoleKit support" ${WITH_ALL_OPTIONS} ) OPTION( WITH_CONSOLEKIT "Enable ConsoleKit support" ${WITH_ALL_OPTIONS} )
OPTION( WITH_NETWORK_MANAGER_BACKEND "Enable network-manager support" OFF ) OPTION( WITH_NETWORK_MANAGER_BACKEND "Enable network-manager support" OFF )
OPTION( WITH_SUDO_TDESU_BACKEND "Use sudo as backend for tdesu (default is su)" OFF ) OPTION( WITH_SUDO_TDESU_BACKEND "Use sudo as backend for tdesu (default is su)" OFF )

@ -17,13 +17,6 @@ if( NOT DBUS_SYSTEM_BUS )
set( DBUS_SYSTEM_BUS "unix:path=/var/run/dbus/system_bus_socket" CACHE INTERNAL "" FORCE ) set( DBUS_SYSTEM_BUS "unix:path=/var/run/dbus/system_bus_socket" CACHE INTERNAL "" FORCE )
endif() endif()
if( WITH_TDEHWLIB_DAEMONS OR WITH_HAL OR WITH_DEVKITPOWER OR WITH_UPOWER OR WITH_UDISKS OR WITH_UDISKS2 OR
WITH_NETWORK_MANAGER_BACKEND OR WITH_CONSOLEKIT )
list( APPEND TDEHW_CUSTOM_INCLUDE_DIRS ${DBUS_TQT_INCLUDE_DIRS} )
list( APPEND TDEHW_CUSTOM_LIBRARY_DIRS ${DBUS_TQT_LIBRARY_DIRS} )
list( APPEND TDEHW_CUSTOM_LIBRARIES ${DBUS_TQT_LIBRARIES} )
endif( )
if( WITH_TDEHWLIB_DAEMONS ) if( WITH_TDEHWLIB_DAEMONS )
add_definitions( -DWITH_TDEHWLIB_DAEMONS ) add_definitions( -DWITH_TDEHWLIB_DAEMONS )
endif( ) endif( )
@ -44,18 +37,6 @@ if( WITH_UPOWER )
add_definitions( -DWITH_UPOWER ) add_definitions( -DWITH_UPOWER )
endif( ) endif( )
if( WITH_UDISKS )
add_definitions( -DWITH_UDISKS )
endif( )
if( WITH_UDISKS2 )
add_definitions( -DWITH_UDISKS2 )
endif( )
if( WITH_UDEVIL )
add_definitions( -DWITH_UDEVIL )
endif( )
if( WITH_CONSOLEKIT ) if( WITH_CONSOLEKIT )
add_definitions( -DWITH_CONSOLEKIT ) add_definitions( -DWITH_CONSOLEKIT )
endif( ) endif( )
@ -92,14 +73,17 @@ include_directories(
${CMAKE_SOURCE_DIR}/tdecore ${CMAKE_SOURCE_DIR}/tdecore
${CMAKE_SOURCE_DIR}/dcop ${CMAKE_SOURCE_DIR}/dcop
${CMAKE_BINARY_DIR}/tdeio/kssl ${CMAKE_BINARY_DIR}/tdeio/kssl
${DBUS_TQT_INCLUDE_DIRS}
${TDEHW_CUSTOM_INCLUDE_DIRS} ${TDEHW_CUSTOM_INCLUDE_DIRS}
) )
link_directories( link_directories(
${TQT_LIBRARY_DIRS} ${TQT_LIBRARY_DIRS}
${DBUS_TQT_LIBRARY_DIRS}
${TDEHW_CUSTOM_LIBRARY_DIRS} ${TDEHW_CUSTOM_LIBRARY_DIRS}
) )
##### headers ################################### ##### headers ###################################
install( FILES tdehardwaredevices.h tdenetworkconnections.h tdegenericdevice.h install( FILES tdehardwaredevices.h tdenetworkconnections.h tdegenericdevice.h
@ -120,10 +104,11 @@ set( ${target}_SRCS
tdemainspowerdevice.cpp tdenetworkdevice.cpp tdebacklightdevice.cpp tdemainspowerdevice.cpp tdenetworkdevice.cpp tdebacklightdevice.cpp
tdemonitordevice.cpp tdesensordevice.cpp tderootsystemdevice.cpp tdemonitordevice.cpp tdesensordevice.cpp tderootsystemdevice.cpp
tdeeventdevice.cpp tdeinputdevice.cpp tdecryptographiccarddevice.cpp tdeeventdevice.cpp tdeinputdevice.cpp tdecryptographiccarddevice.cpp
disksHelper.cpp
) )
tde_add_library( ${target} STATIC_PIC AUTOMOC tde_add_library( ${target} STATIC_PIC AUTOMOC
SOURCES ${${target}_SRCS} SOURCES ${${target}_SRCS}
LINK udev ${TDENM_LIBRARIES} ${TDEUPOWER_LIBRARIES} LINK udev ${TDENM_LIBRARIES} ${TDEUPOWER_LIBRARIES} ${DBUS_TQT_LIBRARIES}
${TDEHW_CUSTOM_LIBRARIES} ${TDEHW_CUSTOM_LIBRARIES}
) )

@ -0,0 +1,301 @@
/* This file is part of the TDE libraries
Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
(C) 2013 Golubev Alexander <fatzer2@gmail.com>
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., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include "disksHelper.h"
#include "tdestoragedevice.h"
#include <tqdbusdata.h>
#include <tqdbusmessage.h>
#include <tqdbusproxy.h>
#include <tqdbusvariant.h>
#include <tqdbusconnection.h>
#include <tqdbuserror.h>
#include <tqdbusdatamap.h>
#include <tqdbusobjectpath.h>
#include "tqdbusdatalist.h"
//-------------------------------
// UDisks
//-------------------------------
bool ejectDriveUDisks(TDEStorageDevice* sdevice) {
TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
if (dbusConn.isConnected()) {
TQString blockDeviceString = sdevice->deviceNode();
blockDeviceString.replace("/dev/", "");
blockDeviceString.replace("-", "_2d");
blockDeviceString = "/org/freedesktop/UDisks/devices/" + blockDeviceString;
// Eject the drive!
TQT_DBusError error;
TQT_DBusProxy driveControl("org.freedesktop.UDisks", blockDeviceString, "org.freedesktop.UDisks.Device", dbusConn);
if (driveControl.canSend()) {
TQValueList<TQT_DBusData> params;
TQT_DBusDataList options;
params << TQT_DBusData::fromList(options);
TQT_DBusMessage reply = driveControl.sendWithReply("DriveEject", params, &error);
if (error.isValid()) {
// Error!
printf("[ERROR][tdehwlib] ejectDriveUDisks: %s\n", error.name().ascii()); fflush(stdout);
return false;
}
else {
return true;
}
}
}
return false;
}
int mountDriveUDisks(TQString deviceNode, TQString fileSystemType, TQStringList mountOptions, TQString* errStr) {
TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
if (dbusConn.isConnected()) {
TQString blockDeviceString = deviceNode;
blockDeviceString.replace("/dev/", "");
blockDeviceString.replace("-", "_2d");
blockDeviceString = "/org/freedesktop/UDisks/devices/" + blockDeviceString;
// Mount the drive!
TQT_DBusError error;
TQT_DBusProxy driveControl("org.freedesktop.UDisks", blockDeviceString, "org.freedesktop.UDisks.Device", dbusConn);
if (driveControl.canSend()) {
TQValueList<TQT_DBusData> params;
params << TQT_DBusData::fromString(fileSystemType);
params << TQT_DBusData::fromList(TQT_DBusDataList(mountOptions));
TQT_DBusMessage reply = driveControl.sendWithReply("FilesystemMount", params, &error);
if (error.isValid()) {
// Error!
if (error.name() == "org.freedesktop.DBus.Error.ServiceUnknown") {
// Service not installed or unavailable
return -2;
}
if (errStr) {
*errStr = error.name() + ": " + error.message();
}
else {
printf("[ERROR][tdehwlib] mountDriveUDisks: %s\n", error.name().ascii()); fflush(stdout);
}
return -1;
}
else {
return 0;
}
}
else {
return -2;
}
}
return -2;
}
int unMountDriveUDisks(TQString deviceNode, TQStringList unMountOptions, TQString* errStr) {
TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
if (dbusConn.isConnected()) {
TQString blockDeviceString = deviceNode;
blockDeviceString.replace("/dev/", "");
blockDeviceString.replace("-", "_2d");
blockDeviceString = "/org/freedesktop/UDisks/devices/" + blockDeviceString;
// Mount the drive!
TQT_DBusError error;
TQT_DBusProxy driveControl("org.freedesktop.UDisks", blockDeviceString, "org.freedesktop.UDisks.Device", dbusConn);
if (driveControl.canSend()) {
TQValueList<TQT_DBusData> params;
params << TQT_DBusData::fromList(TQT_DBusDataList(unMountOptions));
TQT_DBusMessage reply = driveControl.sendWithReply("FilesystemUnmount", params, &error);
if (error.isValid()) {
// Error!
if (error.name() == "org.freedesktop.DBus.Error.ServiceUnknown") {
// Service not installed or unavailable
return -2;
}
if (errStr) {
*errStr = error.name() + ": " + error.message();
}
else {
printf("[ERROR][tdehwlib] unMountDriveUDisks: %s\n", error.name().ascii()); fflush(stdout);
}
return -1;
}
else {
return 0;
}
}
else {
return -2;
}
}
return -2;
}
//-------------------------------
// UDisks2
//-------------------------------
bool ejectDriveUDisks2(TDEStorageDevice* sdevice) {
TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
if (dbusConn.isConnected()) {
TQString blockDeviceString = sdevice->deviceNode();
blockDeviceString.replace("/dev/", "");
blockDeviceString.replace("-", "_2d");
blockDeviceString = "/org/freedesktop/UDisks2/block_devices/" + blockDeviceString;
TQT_DBusProxy hardwareControl("org.freedesktop.UDisks2", blockDeviceString, "org.freedesktop.DBus.Properties", dbusConn);
if (hardwareControl.canSend()) {
// get associated udisks2 drive path
TQT_DBusError error;
TQValueList<TQT_DBusData> params;
params << TQT_DBusData::fromString("org.freedesktop.UDisks2.Block") << TQT_DBusData::fromString("Drive");
TQT_DBusMessage reply = hardwareControl.sendWithReply("Get", params, &error);
if (error.isValid()) {
// Error!
printf("[ERROR][tdehwlib] ejectDriveUDisks2: %s\n", error.name().ascii()); fflush(stdout);
return false;
}
else {
if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
TQT_DBusObjectPath driveObjectPath = reply[0].toVariant().value.toObjectPath();
if (!driveObjectPath.isValid()) {
return false;
}
error = TQT_DBusError();
TQT_DBusProxy driveInformation("org.freedesktop.UDisks2", driveObjectPath, "org.freedesktop.DBus.Properties", dbusConn);
// can eject?
TQValueList<TQT_DBusData> params;
params << TQT_DBusData::fromString("org.freedesktop.UDisks2.Drive") << TQT_DBusData::fromString("Ejectable");
TQT_DBusMessage reply = driveInformation.sendWithReply("Get", params, &error);
if (error.isValid()) {
// Error!
printf("[ERROR][tdehwlib] ejectDriveUDisks2: %s\n", error.name().ascii()); fflush(stdout);
return false;
}
if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
bool ejectable = reply[0].toVariant().value.toBool();
if (!ejectable) {
return false;
}
// Eject the drive!
TQT_DBusProxy driveControl("org.freedesktop.UDisks2", driveObjectPath, "org.freedesktop.UDisks2.Drive", dbusConn);
TQValueList<TQT_DBusData> params;
TQT_DBusDataMap<TQString> options(TQT_DBusData::Variant);
params << TQT_DBusData::fromStringKeyMap(options);
TQT_DBusMessage reply = driveControl.sendWithReply("Eject", params, &error);
if (error.isValid()) {
// Error!
printf("[ERROR][tdehwlib] ejectDriveUDisks2: %s\n", error.name().ascii()); fflush(stdout);
return false;
}
else {
return true;
}
}
}
}
}
}
return false;
}
int mountDriveUDisks2(TQString deviceNode, TQString fileSystemType, TQString mountOptions, TQString* errStr) {
TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
if (dbusConn.isConnected()) {
TQString blockDeviceString = deviceNode;
blockDeviceString.replace("/dev/", "");
blockDeviceString.replace("-", "_2d");
blockDeviceString = "/org/freedesktop/UDisks2/block_devices/" + blockDeviceString;
// Mount the drive!
TQT_DBusError error;
TQT_DBusProxy driveControl("org.freedesktop.UDisks2", blockDeviceString, "org.freedesktop.UDisks2.Filesystem", dbusConn);
if (driveControl.canSend()) {
TQValueList<TQT_DBusData> params;
TQMap<TQString, TQT_DBusData> optionsMap;
if (fileSystemType != "") {
optionsMap["fstype"] = (TQT_DBusData::fromString(fileSystemType)).getAsVariantData();
}
optionsMap["options"] = (TQT_DBusData::fromString(mountOptions)).getAsVariantData();
params << TQT_DBusData::fromStringKeyMap(TQT_DBusDataMap<TQString>(optionsMap));
TQT_DBusMessage reply = driveControl.sendWithReply("Mount", params, &error);
if (error.isValid()) {
// Error!
if (error.name() == "org.freedesktop.DBus.Error.ServiceUnknown") {
// Service not installed or unavailable
return -2;
}
if (errStr) {
*errStr = error.name() + ": " + error.message();
}
else {
printf("[ERROR][tdehwlib] mountDriveUDisks2: %s\n", error.name().ascii()); fflush(stdout);
}
return -1;
}
else {
return 0;
}
}
else {
return -2;
}
}
return -2;
}
int unMountDriveUDisks2(TQString deviceNode, TQString unMountOptions, TQString* errStr) {
TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
if (dbusConn.isConnected()) {
TQString blockDeviceString = deviceNode;
blockDeviceString.replace("/dev/", "");
blockDeviceString.replace("-", "_2d");
blockDeviceString = "/org/freedesktop/UDisks2/block_devices/" + blockDeviceString;
// Mount the drive!
TQT_DBusError error;
TQT_DBusProxy driveControl("org.freedesktop.UDisks2", blockDeviceString, "org.freedesktop.UDisks2.Filesystem", dbusConn);
if (driveControl.canSend()) {
TQValueList<TQT_DBusData> params;
TQMap<TQString, TQT_DBusData> optionsMap;
optionsMap["options"] = (TQT_DBusData::fromString(unMountOptions)).getAsVariantData();
params << TQT_DBusData::fromStringKeyMap(TQT_DBusDataMap<TQString>(optionsMap));
TQT_DBusMessage reply = driveControl.sendWithReply("Unmount", params, &error);
if (error.isValid()) {
// Error!
if (error.name() == "org.freedesktop.DBus.Error.ServiceUnknown") {
// Service not installed or unavailable
return -2;
}
if (errStr) {
*errStr = error.name() + ": " + error.message();
}
else {
printf("[ERROR][tdehwlib] unMountDriveUDisks2: %s\n", error.name().ascii()); fflush(stdout);
}
return -1;
}
else {
return 0;
}
}
else {
return -2;
}
}
return -2;
}

@ -0,0 +1,36 @@
/* This file is part of the TDE libraries
Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
(C) 2013 Golubev Alexander <fatzer2@gmail.com>
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., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef _DISKS_HELPER_H
#define _DISKS_HELPER_H
#include <stdlib.h>
class TDEStorageDevice;
class TQString;
class TQStringList;
bool ejectDriveUDisks(TDEStorageDevice* sdevice);
bool ejectDriveUDisks2(TDEStorageDevice* sdevice);
int mountDriveUDisks(TQString deviceNode, TQString fileSystemType, TQStringList mountOptions, TQString* errStr = NULL);
int mountDriveUDisks2(TQString deviceNode, TQString fileSystemType, TQString mountOptions, TQString* errStr = NULL);
int unMountDriveUDisks(TQString deviceNode, TQStringList unMountOptions, TQString* errStr = NULL);
int unMountDriveUDisks2(TQString deviceNode, TQString unMountOptions, TQString* errStr = NULL);
#endif

@ -35,8 +35,8 @@
#include "kiconloader.h" #include "kiconloader.h"
#include "tdetempfile.h" #include "tdetempfile.h"
#include "kstandarddirs.h" #include "kstandarddirs.h"
#include "tdehardwaredevices.h" #include "tdehardwaredevices.h"
#include "disksHelper.h"
#include "config.h" #include "config.h"
@ -55,21 +55,6 @@
#endif #endif
#endif #endif
// uDisks2 integration
#if defined(WITH_UDISKS) || defined(WITH_UDISKS2)
#include <tqdbusdata.h>
#include <tqdbusmessage.h>
#include <tqdbusproxy.h>
#include <tqdbusvariant.h>
#include <tqdbusconnection.h>
#include <tqdbuserror.h>
#include <tqdbusdatamap.h>
#include <tqdbusobjectpath.h>
#endif // defined(WITH_UDISKS) || defined(WITH_UDISKS2)
#if defined(WITH_UDISKS)
#include "tqdbusdatalist.h"
#endif // ddefined(WITH_UDISKS)
TDEStorageDevice::TDEStorageDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn), m_mediaInserted(true), m_cryptDevice(NULL) { TDEStorageDevice::TDEStorageDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn), m_mediaInserted(true), m_cryptDevice(NULL) {
m_diskType = TDEDiskDeviceType::Null; m_diskType = TDEDiskDeviceType::Null;
m_diskStatus = TDEDiskDeviceStatus::Null; m_diskStatus = TDEDiskDeviceStatus::Null;
@ -322,282 +307,7 @@ bool TDEStorageDevice::lockDriveMedia(bool lock) {
} }
} }
bool ejectDriveUDisks(TDEStorageDevice* sdevice) {
#ifdef WITH_UDISKS
TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
if (dbusConn.isConnected()) {
TQString blockDeviceString = sdevice->deviceNode();
blockDeviceString.replace("/dev/", "");
blockDeviceString.replace("-", "_2d");
blockDeviceString = "/org/freedesktop/UDisks/devices/" + blockDeviceString;
// Eject the drive!
TQT_DBusError error;
TQT_DBusProxy driveControl("org.freedesktop.UDisks", blockDeviceString, "org.freedesktop.UDisks.Device", dbusConn);
if (driveControl.canSend()) {
TQValueList<TQT_DBusData> params;
TQT_DBusDataList options;
params << TQT_DBusData::fromList(options);
TQT_DBusMessage reply = driveControl.sendWithReply("DriveEject", params, &error);
if (error.isValid()) {
// Error!
printf("[ERROR][tdehwlib] ejectDriveUDisks: %s\n", error.name().ascii()); fflush(stdout);
return false;
}
else {
return true;
}
}
}
#endif // WITH_UDISKS
return false;
}
bool ejectDriveUDisks2(TDEStorageDevice* sdevice) {
#ifdef WITH_UDISKS2
TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
if (dbusConn.isConnected()) {
TQString blockDeviceString = sdevice->deviceNode();
blockDeviceString.replace("/dev/", "");
blockDeviceString.replace("-", "_2d");
blockDeviceString = "/org/freedesktop/UDisks2/block_devices/" + blockDeviceString;
TQT_DBusProxy hardwareControl("org.freedesktop.UDisks2", blockDeviceString, "org.freedesktop.DBus.Properties", dbusConn);
if (hardwareControl.canSend()) {
// get associated udisks2 drive path
TQT_DBusError error;
TQValueList<TQT_DBusData> params;
params << TQT_DBusData::fromString("org.freedesktop.UDisks2.Block") << TQT_DBusData::fromString("Drive");
TQT_DBusMessage reply = hardwareControl.sendWithReply("Get", params, &error);
if (error.isValid()) {
// Error!
printf("[ERROR][tdehwlib] ejectDriveUDisks2: %s\n", error.name().ascii()); fflush(stdout);
return false;
}
else {
if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
TQT_DBusObjectPath driveObjectPath = reply[0].toVariant().value.toObjectPath();
if (!driveObjectPath.isValid()) {
return false;
}
error = TQT_DBusError();
TQT_DBusProxy driveInformation("org.freedesktop.UDisks2", driveObjectPath, "org.freedesktop.DBus.Properties", dbusConn);
// can eject?
TQValueList<TQT_DBusData> params;
params << TQT_DBusData::fromString("org.freedesktop.UDisks2.Drive") << TQT_DBusData::fromString("Ejectable");
TQT_DBusMessage reply = driveInformation.sendWithReply("Get", params, &error);
if (error.isValid()) {
// Error!
printf("[ERROR][tdehwlib] ejectDriveUDisks2: %s\n", error.name().ascii()); fflush(stdout);
return false;
}
if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
bool ejectable = reply[0].toVariant().value.toBool();
if (!ejectable) {
return false;
}
// Eject the drive!
TQT_DBusProxy driveControl("org.freedesktop.UDisks2", driveObjectPath, "org.freedesktop.UDisks2.Drive", dbusConn);
TQValueList<TQT_DBusData> params;
TQT_DBusDataMap<TQString> options(TQT_DBusData::Variant);
params << TQT_DBusData::fromStringKeyMap(options);
TQT_DBusMessage reply = driveControl.sendWithReply("Eject", params, &error);
if (error.isValid()) {
// Error!
printf("[ERROR][tdehwlib] ejectDriveUDisks2: %s\n", error.name().ascii()); fflush(stdout);
return false;
}
else {
return true;
}
}
}
}
}
}
#endif // WITH_UDISKS2
return false;
}
int mountDriveUDisks(TQString deviceNode, TQString fileSystemType, TQStringList mountOptions, TQString* errStr = NULL) {
#ifdef WITH_UDISKS
TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
if (dbusConn.isConnected()) {
TQString blockDeviceString = deviceNode;
blockDeviceString.replace("/dev/", "");
blockDeviceString.replace("-", "_2d");
blockDeviceString = "/org/freedesktop/UDisks/devices/" + blockDeviceString;
// Mount the drive!
TQT_DBusError error;
TQT_DBusProxy driveControl("org.freedesktop.UDisks", blockDeviceString, "org.freedesktop.UDisks.Device", dbusConn);
if (driveControl.canSend()) {
TQValueList<TQT_DBusData> params;
params << TQT_DBusData::fromString(fileSystemType);
params << TQT_DBusData::fromList(TQT_DBusDataList(mountOptions));
TQT_DBusMessage reply = driveControl.sendWithReply("FilesystemMount", params, &error);
if (error.isValid()) {
// Error!
if (error.name() == "org.freedesktop.DBus.Error.ServiceUnknown") {
// Service not installed or unavailable
return -2;
}
if (errStr) {
*errStr = error.name() + ": " + error.message();
}
else {
printf("[ERROR][tdehwlib] mountDriveUDisks: %s\n", error.name().ascii()); fflush(stdout);
}
return -1;
}
else {
return 0;
}
}
else {
return -2;
}
}
#endif // WITH_UDISKS
return -2;
}
int mountDriveUDisks2(TQString deviceNode, TQString fileSystemType, TQString mountOptions, TQString* errStr = NULL) {
#ifdef WITH_UDISKS2
TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
if (dbusConn.isConnected()) {
TQString blockDeviceString = deviceNode;
blockDeviceString.replace("/dev/", "");
blockDeviceString.replace("-", "_2d");
blockDeviceString = "/org/freedesktop/UDisks2/block_devices/" + blockDeviceString;
// Mount the drive!
TQT_DBusError error;
TQT_DBusProxy driveControl("org.freedesktop.UDisks2", blockDeviceString, "org.freedesktop.UDisks2.Filesystem", dbusConn);
if (driveControl.canSend()) {
TQValueList<TQT_DBusData> params;
TQMap<TQString, TQT_DBusData> optionsMap;
if (fileSystemType != "") {
optionsMap["fstype"] = (TQT_DBusData::fromString(fileSystemType)).getAsVariantData();
}
optionsMap["options"] = (TQT_DBusData::fromString(mountOptions)).getAsVariantData();
params << TQT_DBusData::fromStringKeyMap(TQT_DBusDataMap<TQString>(optionsMap));
TQT_DBusMessage reply = driveControl.sendWithReply("Mount", params, &error);
if (error.isValid()) {
// Error!
if (error.name() == "org.freedesktop.DBus.Error.ServiceUnknown") {
// Service not installed or unavailable
return -2;
}
if (errStr) {
*errStr = error.name() + ": " + error.message();
}
else {
printf("[ERROR][tdehwlib] mountDriveUDisks2: %s\n", error.name().ascii()); fflush(stdout);
}
return -1;
}
else {
return 0;
}
}
else {
return -2;
}
}
#endif // WITH_UDISKS2
return -2;
}
int unMountDriveUDisks(TQString deviceNode, TQStringList unMountOptions, TQString* errStr = NULL) {
#ifdef WITH_UDISKS
TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
if (dbusConn.isConnected()) {
TQString blockDeviceString = deviceNode;
blockDeviceString.replace("/dev/", "");
blockDeviceString.replace("-", "_2d");
blockDeviceString = "/org/freedesktop/UDisks/devices/" + blockDeviceString;
// Mount the drive!
TQT_DBusError error;
TQT_DBusProxy driveControl("org.freedesktop.UDisks", blockDeviceString, "org.freedesktop.UDisks.Device", dbusConn);
if (driveControl.canSend()) {
TQValueList<TQT_DBusData> params;
params << TQT_DBusData::fromList(TQT_DBusDataList(unMountOptions));
TQT_DBusMessage reply = driveControl.sendWithReply("FilesystemUnmount", params, &error);
if (error.isValid()) {
// Error!
if (error.name() == "org.freedesktop.DBus.Error.ServiceUnknown") {
// Service not installed or unavailable
return -2;
}
if (errStr) {
*errStr = error.name() + ": " + error.message();
}
else {
printf("[ERROR][tdehwlib] unMountDriveUDisks: %s\n", error.name().ascii()); fflush(stdout);
}
return -1;
}
else {
return 0;
}
}
else {
return -2;
}
}
#endif // WITH_UDISKS
return -2;
}
int unMountDriveUDisks2(TQString deviceNode, TQString unMountOptions, TQString* errStr = NULL) {
#ifdef WITH_UDISKS2
TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
if (dbusConn.isConnected()) {
TQString blockDeviceString = deviceNode;
blockDeviceString.replace("/dev/", "");
blockDeviceString.replace("-", "_2d");
blockDeviceString = "/org/freedesktop/UDisks2/block_devices/" + blockDeviceString;
// Mount the drive!
TQT_DBusError error;
TQT_DBusProxy driveControl("org.freedesktop.UDisks2", blockDeviceString, "org.freedesktop.UDisks2.Filesystem", dbusConn);
if (driveControl.canSend()) {
TQValueList<TQT_DBusData> params;
TQMap<TQString, TQT_DBusData> optionsMap;
optionsMap["options"] = (TQT_DBusData::fromString(unMountOptions)).getAsVariantData();
params << TQT_DBusData::fromStringKeyMap(TQT_DBusDataMap<TQString>(optionsMap));
TQT_DBusMessage reply = driveControl.sendWithReply("Unmount", params, &error);
if (error.isValid()) {
// Error!
if (error.name() == "org.freedesktop.DBus.Error.ServiceUnknown") {
// Service not installed or unavailable
return -2;
}
if (errStr) {
*errStr = error.name() + ": " + error.message();
}
else {
printf("[ERROR][tdehwlib] unMountDriveUDisks2: %s\n", error.name().ascii()); fflush(stdout);
}
return -1;
}
else {
return 0;
}
}
else {
return -2;
}
}
#endif // WITH_UDISKS2
return -2;
}
bool TDEStorageDevice::ejectDrive() { bool TDEStorageDevice::ejectDrive() {
#ifdef WITH_UDISKS2
if (!(TDEGlobal::dirs()->findExe("udisksctl").isEmpty())) { if (!(TDEGlobal::dirs()->findExe("udisksctl").isEmpty())) {
if (ejectDriveUDisks2(this)) { if (ejectDriveUDisks2(this)) {
return true; return true;
@ -607,9 +317,6 @@ bool TDEStorageDevice::ejectDrive() {
fflush(stdout); fflush(stdout);
} }
} }
#endif // WITH_UDISKS2
#ifdef WITH_UDISKS
if (!(TDEGlobal::dirs()->findExe("udisks").isEmpty())) { if (!(TDEGlobal::dirs()->findExe("udisks").isEmpty())) {
if (ejectDriveUDisks(this)) { if (ejectDriveUDisks(this)) {
return true; return true;
@ -619,7 +326,6 @@ bool TDEStorageDevice::ejectDrive() {
fflush(stdout); fflush(stdout);
} }
} }
#endif // WITH_UDISKS
if (!(TDEGlobal::dirs()->findExe("eject").isEmpty())) { if (!(TDEGlobal::dirs()->findExe("eject").isEmpty())) {
TQString command = TQString("eject -v '%1' 2>&1").arg(deviceNode()); TQString command = TQString("eject -v '%1' 2>&1").arg(deviceNode());
@ -994,24 +700,20 @@ TQString TDEStorageDevice::mountPath() {
} }
TQString TDEStorageDevice::mountDevice(TQString mediaName, TDEStorageMountOptions mountOptions, TQString* errRet, int* retcode) { TQString TDEStorageDevice::mountDevice(TQString mediaName, TDEStorageMountOptions mountOptions, TQString* errRet, int* retcode) {
// Device is already mounted
if (!mountPath().isNull()) {
return mountPath();
}
int internal_retcode; int internal_retcode;
if (!retcode) { if (!retcode) {
retcode = &internal_retcode; retcode = &internal_retcode;
} }
TQString ret = mountPath();
// Device is already mounted
if (!ret.isNull()) {
return ret;
}
TQString command;
TQString devNode = deviceNode(); TQString devNode = deviceNode();
devNode.replace("'", "'\\''"); devNode.replace("'", "'\\''");
mediaName.replace("'", "'\\''"); mediaName.replace("'", "'\\''");
#if defined(WITH_UDEVIL) || defined(WITH_UDISKS2) || defined(WITH_UDISKS)
// Prepare filesystem options for mount // Prepare filesystem options for mount
TQStringList udisksOptions; TQStringList udisksOptions;
TQString optionString; TQString optionString;
@ -1068,109 +770,70 @@ TQString TDEStorageDevice::mountDevice(TQString mediaName, TDEStorageMountOption
if (!optionString.isEmpty()) { if (!optionString.isEmpty()) {
optionString.remove(0, 1); optionString.remove(0, 1);
} }
#endif // defined(WITH_UDEVIL) || defined(WITH_UDISKS2) || defined(WITH_UDISKS)
#ifdef WITH_UDEVIL
if(command.isEmpty()) {
// Use 'udevil' command, if available
TQString udevilProg = TDEGlobal::dirs()->findExe("udevil");
if (!udevilProg.isEmpty()) {
TQString fileSystemType;
if (mountOptions.contains("filesystem") && !mountOptions["filesystem"].isEmpty()) {
fileSystemType = TQString("-t %1").arg(mountOptions["filesystem"]);
}
TQString mountpoint; // Try to use UDISKS v2 via DBUS, if available
if (mountOptions.contains("mountpoint") TQString errorString;
&& !mountOptions["mountpoint"].isEmpty() TQString fileSystemType;
&& (mountOptions["mountpoint"] != "/media/")) {
mountpoint = mountOptions["mountpoint"];
mountpoint.replace("'", "'\\''");
}
else {
mountpoint = TQString("/media/%1").arg(mediaName);
}
command = TQString("udevil mount %1 -o '%2' '%3' '%4' 2>&1").arg(fileSystemType).arg(optionString).arg(devNode).arg(mountpoint); if (mountOptions.contains("filesystem") && !mountOptions["filesystem"].isEmpty()) {
} fileSystemType = mountOptions["filesystem"];
} }
#endif // WITH_UDEVIL
#ifdef WITH_UDISKS2
if(command.isEmpty()) {
// Try to use UDISKS v2 via DBUS, if available
TQString errorString;
TQString fileSystemType;
if (mountOptions.contains("filesystem") && !mountOptions["filesystem"].isEmpty()) { int uDisks2Ret = mountDriveUDisks2(devNode, fileSystemType, optionString, &errorString);
fileSystemType = mountOptions["filesystem"]; if (uDisks2Ret == 0) {
} // Update internal mount data
TDEGlobal::hardwareDevices()->processModifiedMounts();
int uDisks2Ret = mountDriveUDisks2(devNode, fileSystemType, optionString, &errorString); return mountPath();
if (uDisks2Ret == 0) { }
// Update internal mount data else if (uDisks2Ret == -1) {
TDEGlobal::hardwareDevices()->processModifiedMounts(); if (errRet) {
*errRet = errorString;
ret = mountPath();
return ret;
} }
else if (uDisks2Ret == -1) { // Update internal mount data
if (errRet) { TDEGlobal::hardwareDevices()->processModifiedMounts();
*errRet = errorString; return mountPath();
} }
// Update internal mount data
TDEGlobal::hardwareDevices()->processModifiedMounts();
ret = mountPath(); // The UDISKS v2 DBUS service was either not available or was unusable
return ret; // Try to use UDISKS v1 via DBUS, if available
} int uDisksRet = mountDriveUDisks(devNode, fileSystemType, udisksOptions, &errorString);
else { if (uDisksRet == 0) {
// The UDISKS v2 DBUS service was either not available or was unusable; try another method... // Update internal mount data
command = TQString::null; TDEGlobal::hardwareDevices()->processModifiedMounts();
return mountPath();
}
else if (uDisksRet == -1) {
if (errRet) {
*errRet = errorString;
} }
// Update internal mount data
TDEGlobal::hardwareDevices()->processModifiedMounts();
return mountPath();
} }
#endif // WITH_UDISKS2
#ifdef WITH_UDISKS
if(command.isEmpty()) {
// Try to use UDISKS v1 via DBUS, if available
TQString errorString;
TQString fileSystemType;
// The UDISKS v1 DBUS service was either not available or was unusable
// Use 'udevil' command, if available
TQString command = TQString::null;
TQString udevilProg = TDEGlobal::dirs()->findExe("udevil");
if (!udevilProg.isEmpty()) {
if (mountOptions.contains("filesystem") && !mountOptions["filesystem"].isEmpty()) { if (mountOptions.contains("filesystem") && !mountOptions["filesystem"].isEmpty()) {
fileSystemType = mountOptions["filesystem"]; fileSystemType = TQString("-t %1").arg(mountOptions["filesystem"]);
} }
TQString mountpoint;
int uDisksRet = mountDriveUDisks(devNode, fileSystemType, udisksOptions, &errorString); if (mountOptions.contains("mountpoint") && !mountOptions["mountpoint"].isEmpty() &&
if (uDisksRet == 0) { (mountOptions["mountpoint"] != "/media/")) {
// Update internal mount data mountpoint = mountOptions["mountpoint"];
TDEGlobal::hardwareDevices()->processModifiedMounts(); mountpoint.replace("'", "'\\''");
ret = mountPath();
return ret;
}
else if (uDisksRet == -1) {
if (errRet) {
*errRet = errorString;
}
// Update internal mount data
TDEGlobal::hardwareDevices()->processModifiedMounts();
ret = mountPath();
return ret;
} }
else { else {
// The UDISKS v1 DBUS service was either not available or was unusable; try another method... mountpoint = TQString("/media/%1").arg(mediaName);
command = TQString::null;
} }
command = TQString("udevil mount %1 -o '%2' '%3' '%4' 2>&1")
.arg(fileSystemType).arg(optionString).arg(devNode).arg(mountpoint);
} }
#endif // WITH_UDISKS
// If 'udevil' was not found, use 'pmount' command if available
if(command.isEmpty()) { if(command.isEmpty()) {
// Use 'pmount' command, if available
TQString pmountProg = TDEGlobal::dirs()->findExe("pmount"); TQString pmountProg = TDEGlobal::dirs()->findExe("pmount");
if (!pmountProg.isEmpty()) { if (!pmountProg.isEmpty()) {
// Create dummy password file // Create dummy password file
@ -1203,9 +866,8 @@ TQString TDEStorageDevice::mountDevice(TQString mediaName, TDEStorageMountOption
} }
TQString mountpoint; TQString mountpoint;
if (mountOptions.contains("mountpoint") if (mountOptions.contains("mountpoint") && !mountOptions["mountpoint"].isEmpty() &&
&& !mountOptions["mountpoint"].isEmpty() (mountOptions["mountpoint"] != "/media/")) {
&& (mountOptions["mountpoint"] != "/media/")) {
mountpoint = mountOptions["mountpoint"]; mountpoint = mountOptions["mountpoint"];
mountpoint.replace("'", "'\\''"); mountpoint.replace("'", "'\\''");
} }
@ -1216,7 +878,8 @@ TQString TDEStorageDevice::mountDevice(TQString mediaName, TDEStorageMountOption
TQString passFileName = passwordFile.name(); TQString passFileName = passwordFile.name();
passFileName.replace("'", "'\\''"); passFileName.replace("'", "'\\''");
command = TQString("pmount -p '%1' %2 '%3' '%4' 2>&1").arg(passFileName).arg(optionString).arg(devNode).arg(mountpoint); command = TQString("pmount -p '%1' %2 '%3' '%4' 2>&1")
.arg(passFileName).arg(optionString).arg(devNode).arg(mountpoint);
} }
} }
@ -1224,7 +887,7 @@ TQString TDEStorageDevice::mountDevice(TQString mediaName, TDEStorageMountOption
if (errRet) { if (errRet) {
*errRet = i18n("No supported mounting methods were detected on your system"); *errRet = i18n("No supported mounting methods were detected on your system");
} }
return ret; return mountPath();
} }
FILE *exepipe = popen(command.local8Bit(), "r"); FILE *exepipe = popen(command.local8Bit(), "r");
@ -1241,10 +904,7 @@ TQString TDEStorageDevice::mountDevice(TQString mediaName, TDEStorageMountOption
// Update internal mount data // Update internal mount data
TDEGlobal::hardwareDevices()->processModifiedMounts(); TDEGlobal::hardwareDevices()->processModifiedMounts();
return mountPath();
ret = mountPath();
return ret;
} }
TQString TDEStorageDevice::mountEncryptedDevice(TQString passphrase, TQString mediaName, TDEStorageMountOptions mountOptions, TQString* errRet, int* retcode) { TQString TDEStorageDevice::mountEncryptedDevice(TQString passphrase, TQString mediaName, TDEStorageMountOptions mountOptions, TQString* errRet, int* retcode) {
@ -1274,15 +934,15 @@ TQString TDEStorageDevice::mountEncryptedDevice(TQString passphrase, TQString me
if (mountOptions["ro"] == "true") { if (mountOptions["ro"] == "true") {
optionString.append(" -r"); optionString.append(" -r");
} }
if (mountOptions["atime"] != "true") { if (mountOptions["atime"] != "true") {
optionString.append(" -A"); optionString.append(" -A");
} }
if (mountOptions["utf8"] == "true") { if (mountOptions["utf8"] == "true") {
optionString.append(" -c utf8"); optionString.append(" -c utf8");
} }
if (mountOptions["sync"] == "true") { if (mountOptions["sync"] == "true") {
optionString.append(" -s"); optionString.append(" -s");
} }
@ -1323,6 +983,10 @@ TQString TDEStorageDevice::mountEncryptedDevice(TQString passphrase, TQString me
} }
bool TDEStorageDevice::unmountDevice(TQString* errRet, int* retcode) { bool TDEStorageDevice::unmountDevice(TQString* errRet, int* retcode) {
if (mountPath().isNull()) {
return true;
}
int internal_retcode; int internal_retcode;
if (!retcode) { if (!retcode) {
retcode = &internal_retcode; retcode = &internal_retcode;
@ -1331,77 +995,50 @@ bool TDEStorageDevice::unmountDevice(TQString* errRet, int* retcode) {
TQString mountpoint = mountPath(); TQString mountpoint = mountPath();
TQString devNode = deviceNode(); TQString devNode = deviceNode();
if (mountpoint.isNull()) {
return true;
}
mountpoint.replace("'", "'\\''"); mountpoint.replace("'", "'\\''");
TQString command; // Try to use UDISKS v2 via DBUS, if available
TQString errorString;
#ifdef WITH_UDEVIL int unMountUDisks2Ret = unMountDriveUDisks2(devNode, TQString::null, &errorString);
if(command.isEmpty() && if (unMountUDisks2Ret == 0) {
!(TDEGlobal::dirs()->findExe("udevil").isEmpty())) { // Update internal mount data
command = TQString("udevil umount '%1' 2>&1").arg(mountpoint); TDEGlobal::hardwareDevices()->processModifiedMounts();
return true;
} }
#endif // WITH_UDEVIL else if (unMountUDisks2Ret == -1) {
if (errRet) {
#ifdef WITH_UDISKS2 *errRet = errorString;
if(command.isEmpty()) {
// Try to use UDISKS v2 via DBUS, if available
TQString errorString;
int unMountUDisks2Ret = unMountDriveUDisks2(devNode, TQString::null, &errorString);
if (unMountUDisks2Ret == 0) {
// Update internal mount data
TDEGlobal::hardwareDevices()->processModifiedMounts();
return true;
}
else if (unMountUDisks2Ret == -1) {
if (errRet) {
*errRet = errorString;
}
// Update internal mount data
TDEGlobal::hardwareDevices()->processModifiedMounts();
return false;
}
else {
// The UDISKS v2 DBUS service was either not available or was unusable; try another method...
command = TQString::null;
} }
// Update internal mount data
TDEGlobal::hardwareDevices()->processModifiedMounts();
return false;
} }
#endif // WITH_UDISKS2
#ifdef WITH_UDISKS
if(command.isEmpty()) {
// Try to use UDISKS v1 via DBUS, if available
TQString errorString;
int unMountUDisksRet = unMountDriveUDisks(devNode, TQStringList(), &errorString);
if (unMountUDisksRet == 0) {
// Update internal mount data
TDEGlobal::hardwareDevices()->processModifiedMounts();
return true; // The UDISKS v2 DBUS service was either not available or was unusable
// Try to use UDISKS v1 via DBUS, if available
int unMountUDisksRet = unMountDriveUDisks(devNode, TQStringList(), &errorString);
if (unMountUDisksRet == 0) {
// Update internal mount data
TDEGlobal::hardwareDevices()->processModifiedMounts();
return true;
}
else if (unMountUDisksRet == -1) {
if (errRet) {
*errRet = errorString;
} }
else if (unMountUDisksRet == -1) { // Update internal mount data
if (errRet) { TDEGlobal::hardwareDevices()->processModifiedMounts();
*errRet = errorString; return false;
} }
// Update internal mount data
TDEGlobal::hardwareDevices()->processModifiedMounts();
return false; // The UDISKS v1 DBUS service was either not available or was unusable
} // Try to use udevil, if available
else { TQString command;
// The UDISKS v1 DBUS service was either not available or was unusable; try another method... if(!(TDEGlobal::dirs()->findExe("udevil").isEmpty())) {
command = TQString::null; command = TQString("udevil umount '%1' 2>&1").arg(mountpoint);
}
} }
#endif // WITH_UDISKS
// If 'udevil' was not found, use 'pmount' command if available
if(command.isEmpty() && if(command.isEmpty() &&
!(TDEGlobal::dirs()->findExe("pumount").isEmpty())) { !(TDEGlobal::dirs()->findExe("pumount").isEmpty())) {
command = TQString("pumount '%1' 2>&1").arg(mountpoint); command = TQString("pumount '%1' 2>&1").arg(mountpoint);

@ -1668,18 +1668,13 @@ bool FileProtocol::pmount(const TQString &dev)
TQString mountProg; TQString mountProg;
TQCString buffer; TQCString buffer;
#ifdef WITH_UDISKS2
// Use 'udisksctl' (UDISKS2) if available // Use 'udisksctl' (UDISKS2) if available
if (mountProg.isEmpty()) { mountProg = TDEGlobal::dirs()->findExe("udisksctl");
mountProg = TDEGlobal::dirs()->findExe("udisksctl"); if (!mountProg.isEmpty()) {
if (!mountProg.isEmpty()) { buffer.sprintf( "%s mount -b %s", TQFile::encodeName(mountProg).data(),
buffer.sprintf( "%s mount -b %s", TQFile::encodeName(mountProg).data(), TQFile::encodeName(TDEProcess::quote(dev)).data() );
TQFile::encodeName(TDEProcess::quote(dev)).data() ); }
}
}
#endif // WITH_UDISKS2
#ifdef WITH_UDISKS
// Use 'udisks' (UDISKS1) if available // Use 'udisks' (UDISKS1) if available
if (mountProg.isEmpty()) { if (mountProg.isEmpty()) {
mountProg = TDEGlobal::dirs()->findExe("udisks"); mountProg = TDEGlobal::dirs()->findExe("udisks");
@ -1688,7 +1683,6 @@ bool FileProtocol::pmount(const TQString &dev)
TQFile::encodeName(TDEProcess::quote(dev)).data() ); TQFile::encodeName(TDEProcess::quote(dev)).data() );
} }
} }
#endif // WITH_UDISKS
// Use 'pmount', if available // Use 'pmount', if available
if (mountProg.isEmpty()) { if (mountProg.isEmpty()) {
@ -1735,18 +1729,13 @@ bool FileProtocol::pumount(const TQString &point)
TQString umountProg; TQString umountProg;
TQCString buffer; TQCString buffer;
#ifdef WITH_UDISKS2
// Use 'udisksctl' (UDISKS2), if available // Use 'udisksctl' (UDISKS2), if available
if (umountProg.isEmpty()) { umountProg = TDEGlobal::dirs()->findExe("udisksctl");
umountProg = TDEGlobal::dirs()->findExe("udisksctl"); if (!umountProg.isEmpty()) {
if (!umountProg.isEmpty()) { buffer.sprintf( "%s unmount -b %s", TQFile::encodeName(umountProg).data(),
buffer.sprintf( "%s unmount -b %s", TQFile::encodeName(umountProg).data(), TQFile::encodeName(TDEProcess::quote(dev)).data() );
TQFile::encodeName(TDEProcess::quote(dev)).data() ); }
}
}
#endif // WITH_UDISKS2
#ifdef WITH_UDISKS
// Use 'udisks' (UDISKS1), if available // Use 'udisks' (UDISKS1), if available
if (umountProg.isEmpty()) { if (umountProg.isEmpty()) {
umountProg = TDEGlobal::dirs()->findExe("udisks"); umountProg = TDEGlobal::dirs()->findExe("udisks");
@ -1755,7 +1744,6 @@ bool FileProtocol::pumount(const TQString &point)
TQFile::encodeName(TDEProcess::quote(dev)).data() ); TQFile::encodeName(TDEProcess::quote(dev)).data() );
} }
} }
#endif // WITH_UDISKS
// Use 'pumount', if available // Use 'pumount', if available
if (umountProg.isEmpty()) { if (umountProg.isEmpty()) {

Loading…
Cancel
Save