summaryrefslogtreecommitdiffstats
path: root/tdecore/tdehw
diff options
context:
space:
mode:
authorSlávek Banko <slavek.banko@axis.cz>2013-11-18 21:42:09 +0100
committerSlávek Banko <slavek.banko@axis.cz>2013-11-18 21:44:12 +0100
commit8054860ca329653c6d9271092ac8525e22b3cd6b (patch)
tree3bde1966cabbcff4933025f926a5a4a4b8e6149b /tdecore/tdehw
parent990c3797c488210c6285b28ce16f164f457be840 (diff)
downloadtdelibs-8054860ca329653c6d9271092ac8525e22b3cd6b.tar.gz
tdelibs-8054860ca329653c6d9271092ac8525e22b3cd6b.zip
Use only available mechanisms to eject in the tdehw storage backend
Diffstat (limited to 'tdecore/tdehw')
-rw-r--r--tdecore/tdehw/tdestoragedevice.cpp92
1 files changed, 39 insertions, 53 deletions
diff --git a/tdecore/tdehw/tdestoragedevice.cpp b/tdecore/tdehw/tdestoragedevice.cpp
index 3b194bcfe..4ea8bfde8 100644
--- a/tdecore/tdehw/tdestoragedevice.cpp
+++ b/tdecore/tdehw/tdestoragedevice.cpp
@@ -118,23 +118,16 @@ bool ejectDriveUDisks(TDEStorageDevice* sdevice) {
TQT_DBusMessage reply = driveControl.sendWithReply("DriveEject", params, &error);
if (error.isValid()) {
// Error!
- printf("[ERROR] %s\n", error.name().ascii()); fflush(stdout);
+ printf("[ERROR][tdehwlib] ejectDriveUDisks: %s\n", error.name().ascii()); fflush(stdout);
return FALSE;
}
else {
return TRUE;
}
}
- else {
- return FALSE;
- }
- }
- else {
- return FALSE;
}
-#else // WITH_UDISKS
- return FALSE;
#endif // WITH_UDISKS
+ return FALSE;
}
bool ejectDriveUDisks2(TDEStorageDevice* sdevice) {
@@ -153,7 +146,7 @@ bool ejectDriveUDisks2(TDEStorageDevice* sdevice) {
TQT_DBusMessage reply = hardwareControl.sendWithReply("Get", params, &error);
if (error.isValid()) {
// Error!
- printf("[ERROR] %s\n", error.name().ascii()); fflush(stdout);
+ printf("[ERROR][tdehwlib] ejectDriveUDisks2: %s\n", error.name().ascii()); fflush(stdout);
return FALSE;
}
else {
@@ -162,7 +155,7 @@ bool ejectDriveUDisks2(TDEStorageDevice* sdevice) {
if (!driveObjectPath.isValid()) {
return FALSE;
}
-
+
error = TQT_DBusError();
TQT_DBusProxy driveInformation("org.freedesktop.UDisks2", driveObjectPath, "org.freedesktop.DBus.Properties", dbusConn);
// can eject?
@@ -171,7 +164,7 @@ bool ejectDriveUDisks2(TDEStorageDevice* sdevice) {
TQT_DBusMessage reply = driveInformation.sendWithReply("Get", params, &error);
if (error.isValid()) {
// Error!
- printf("[ERROR] %s\n", error.name().ascii()); fflush(stdout);
+ printf("[ERROR][tdehwlib] ejectDriveUDisks2: %s\n", error.name().ascii()); fflush(stdout);
return FALSE;
}
if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
@@ -179,7 +172,7 @@ bool ejectDriveUDisks2(TDEStorageDevice* sdevice) {
if (!ejectable) {
return FALSE;
}
-
+
// Eject the drive!
TQT_DBusProxy driveControl("org.freedesktop.UDisks2", driveObjectPath, "org.freedesktop.UDisks2.Drive", dbusConn);
TQValueList<TQT_DBusData> params;
@@ -188,71 +181,64 @@ bool ejectDriveUDisks2(TDEStorageDevice* sdevice) {
TQT_DBusMessage reply = driveControl.sendWithReply("Eject", params, &error);
if (error.isValid()) {
// Error!
- printf("[ERROR] %s\n", error.name().ascii()); fflush(stdout);
+ printf("[ERROR][tdehwlib] ejectDriveUDisks2: %s\n", error.name().ascii()); fflush(stdout);
return FALSE;
}
else {
return TRUE;
}
}
- else {
- return FALSE;
- }
- }
- else {
- return FALSE;
}
}
}
- else {
- return FALSE;
- }
- }
- else {
- return FALSE;
}
-#else // WITH_UDISKS2
- return FALSE;
#endif // WITH_UDISKS2
+ return FALSE;
}
bool TDEStorageDevice::ejectDrive() {
- if (ejectDriveUDisks2(this)) {
- return TRUE;
- }
- else {
#ifdef WITH_UDISKS2
- printf("[tdehwlib] Failed to eject drive '%s' via udisks2, falling back to alternate mechanism\n", deviceNode().ascii());
+ if (!(TDEGlobal::dirs()->findExe("udisksctl").isEmpty())) {
+ if (ejectDriveUDisks2(this)) {
+ return TRUE;
+ }
+ else {
+ printf("[tdehwlib] Failed to eject drive '%s' via udisks2, falling back to alternate mechanism\n", deviceNode().ascii());
+ fflush(stdout);
+ }
+ }
#endif // WITH_UDISKS2
+
+#ifdef WITH_UDISKS
+ if (!(TDEGlobal::dirs()->findExe("udisks").isEmpty())) {
if (ejectDriveUDisks(this)) {
return TRUE;
}
else {
-#ifdef WITH_UDISKS
printf("[tdehwlib] Failed to eject drive '%s' via udisks, falling back to alternate mechanism\n", deviceNode().ascii());
+ fflush(stdout);
+ }
+ }
#endif // WITH_UDISKS
- TQString command = TQString("eject -v '%1' 2>&1").arg(deviceNode());
-
- FILE *exepipe = popen(command.ascii(), "r");
- if (exepipe) {
- TQString pmount_output;
- char buffer[8092];
- pmount_output = fgets(buffer, sizeof(buffer), exepipe);
- int retcode = pclose(exepipe);
- if (retcode == 0) {
- return TRUE;
- }
- else {
- printf("[tdehwlib] Failed to eject drive '%s' via 'eject' command\n", deviceNode().ascii());
- return FALSE;
- }
- }
- else {
- printf("[tdehwlib] Failed to eject drive '%s' via 'eject' command\n", deviceNode().ascii());
- return FALSE;
+
+ if (!(TDEGlobal::dirs()->findExe("eject").isEmpty())) {
+ TQString command = TQString("eject -v '%1' 2>&1").arg(deviceNode());
+
+ FILE *exepipe = popen(command.ascii(), "r");
+ if (exepipe) {
+ TQString pmount_output;
+ char buffer[8092];
+ pmount_output = fgets(buffer, sizeof(buffer), exepipe);
+ int retcode = pclose(exepipe);
+ if (retcode == 0) {
+ return TRUE;
}
}
+ printf("[tdehwlib] Failed to eject drive '%s' via 'eject' command\n", deviceNode().ascii());
+ fflush(stdout);
}
+
+ return FALSE;
}
bool TDEStorageDevice::ejectDriveMedia() {