bool luks::unmount(Report& report, const QString& deviceNode) { if (!m_isCryptOpen) { qWarning() << "Cannot unmount device" << deviceNode << "before decrypting it first."; return false; } if (!m_isMounted) { qWarning() << "Cannot unmount device" << deviceNode << "because it's not mounted."; return false; } Q_ASSERT(m_innerFs); if (mapperName().isEmpty()) return false; if (m_innerFs->canUnmount(mapperName())) { if (m_innerFs->unmount(report, mapperName())) { m_isMounted = false; return true; } } else { ExternalCommand unmountCmd( report, QStringLiteral("umount"), { QStringLiteral("--verbose"), QStringLiteral("--all-targets"), mapperName() }); if (unmountCmd.run() && unmountCmd.exitCode() == 0) { m_isMounted = false; return true; } } return false; }
void PCloudApp::unMount(){ #ifdef Q_OS_WIN QByteArray err; unmountCmd(err); if (err.size() > 0) showError(err); #else QProcess process; QString path=settings->get("path"); process.start("umount", QStringList() << "-f" << path); if (process.waitForFinished() && process.exitCode()==0) return; process.start("/sbin/umount", QStringList() << "-f" << path); if (process.waitForFinished() && process.exitCode()==0) return; process.start("fusermount", QStringList() << "-u" << path); if (process.waitForFinished() && process.exitCode()==0) return; process.start("fusermount", QStringList() << "-z" << "-u" << path); if (process.waitForFinished() && process.exitCode()==0) return; #endif }