diff options
author | Michele Calgaro <michele.calgaro@yahoo.it> | 2020-11-21 16:35:47 +0800 |
---|---|---|
committer | Michele Calgaro <michele.calgaro@yahoo.it> | 2020-11-21 16:35:47 +0800 |
commit | 07200a5475b2c7634d1c7b3d28d6cdbdca653bd7 (patch) | |
tree | 62be9e12a856c4c75050aee04941e18b486be70f /tdecore/tdehw/tdestoragedevice.cpp | |
parent | b44ff1c0a99422f3332dfbdec6492cfb3cdde7ef (diff) | |
download | tdelibs-07200a5475b2c7634d1c7b3d28d6cdbdca653bd7.tar.gz tdelibs-07200a5475b2c7634d1c7b3d28d6cdbdca653bd7.zip |
tdehw lib: reworked code for eject operation to support return type TQStringVariantMap.
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Diffstat (limited to 'tdecore/tdehw/tdestoragedevice.cpp')
-rw-r--r-- | tdecore/tdehw/tdestoragedevice.cpp | 55 |
1 files changed, 42 insertions, 13 deletions
diff --git a/tdecore/tdehw/tdestoragedevice.cpp b/tdecore/tdehw/tdestoragedevice.cpp index ba88d6de1..60ea51912 100644 --- a/tdecore/tdehw/tdestoragedevice.cpp +++ b/tdecore/tdehw/tdestoragedevice.cpp @@ -327,28 +327,47 @@ bool TDEStorageDevice::lockDriveMedia(bool lock) { } } -bool TDEStorageDevice::ejectDrive() { +TQStringVariantMap TDEStorageDevice::ejectDrive() { + TQStringVariantMap result; + TQStringVariantMap ejectResult; + #ifdef WITH_UDISKS2 if (!(TDEGlobal::dirs()->findExe("udisksctl").isEmpty())) { - TQStringVariantMap ejectResult = udisks2EjectDrive(this); + ejectResult = udisks2EjectDrive(this); if (ejectResult["result"].toBool()) { - return true; + // Update internal mount data + TDEGlobal::hardwareDevices()->rescanDeviceInformation(this); + TDEGlobal::hardwareDevices()->processModifiedMounts(); + result["result"] = true; + return result; } else { - printf("[tdehwlib] Failed to eject drive '%s' via udisks2, falling back to alternate mechanism\n", deviceNode().ascii()); - fflush(stdout); + // Update internal mount data + TDEGlobal::hardwareDevices()->rescanDeviceInformation(this); + TDEGlobal::hardwareDevices()->processModifiedMounts(); + result["errStr"] = ejectResult["errStr"]; + result["result"] = false; + return result; } } #endif #ifdef WITH_UDISKS if (!(TDEGlobal::dirs()->findExe("udisks").isEmpty())) { - TQStringVariantMap ejectResult = udisksEjectDrive(this); + ejectResult = udisksEjectDrive(this); if (ejectResult["result"].toBool()) { - return true; + // Update internal mount data + TDEGlobal::hardwareDevices()->rescanDeviceInformation(this); + TDEGlobal::hardwareDevices()->processModifiedMounts(); + result["result"] = true; + return result; } else { - printf("[tdehwlib] Failed to eject drive '%s' via udisks, falling back to alternate mechanism\n", deviceNode().ascii()); - fflush(stdout); + // Update internal mount data + TDEGlobal::hardwareDevices()->rescanDeviceInformation(this); + TDEGlobal::hardwareDevices()->processModifiedMounts(); + result["errStr"] = ejectResult["errStr"]; + result["result"] = false; + return result; } } #endif @@ -363,14 +382,24 @@ bool TDEStorageDevice::ejectDrive() { eject_output = ts.read(); int retcode = pclose(exepipe); if (retcode == 0) { - return true; + // Update internal mount data + TDEGlobal::hardwareDevices()->rescanDeviceInformation(this); + TDEGlobal::hardwareDevices()->processModifiedMounts(); + result["result"] = true; + return result; + } + else { + result["errStr"] = eject_output; + result["retCode"] = retcode; } } - printf("[tdehwlib] Failed to eject drive '%s' via 'eject' command\n", deviceNode().ascii()); - fflush(stdout); } - return false; + // Update internal mount data + TDEGlobal::hardwareDevices()->rescanDeviceInformation(this); + TDEGlobal::hardwareDevices()->processModifiedMounts(); + result["result"] = false; + return result; } bool TDEStorageDevice::ejectDriveMedia() { |