Files
iDescriptor/src/ifusemanager.cpp
T
uncor3 8f095aab89 implement ifuse for Linux
- Updated CMakeLists.txt to include platform-specific source files for macOS.
- Added new icon for disk unmount button.
- Modified resources.qrc to include the new icon.
- Implemented iFuse disk unmount button and manager classes for handling iFuse operations on Linux.
- Created iFuseWidget for managing iPhone disk mounting, including UI and process handling.
- Integrated iFuse functionality into the main application, allowing users to mount and unmount iPhone disks.
- Enhanced DeviceInfoWidget and other UI components for better user experience.
- Added support for displaying mounted iFuse paths in the status bar.
2025-09-30 04:45:15 +00:00

53 lines
1.6 KiB
C++

#include "ifusemanager.h"
#include <QDebug>
#include <QProcess>
QStringList iFuseManager::getMountArg(std::string &udid, QString &path)
{
return QStringList() << "-u" << QString::fromStdString(udid) << path;
}
#ifdef Q_OS_LINUX
QList<QString> iFuseManager::getMountPoints()
{
QProcess mountProcess;
mountProcess.start("mount", QStringList() << "-t"
<< "fuse.ifuse");
mountProcess.waitForFinished();
QString output = mountProcess.readAllStandardOutput();
if (output.trimmed().isEmpty()) {
qDebug() << "[iFuseWidget] No existing ifuse mounts found.";
return {};
}
QStringList mountPoints;
QStringList lines = output.split('\n', Qt::SkipEmptyParts);
for (const QString &line : lines) {
// A typical line is: "ifuse on /path/to/mount type fuse.ifuse (...)"
QString mountPath = line.section(" on ", 1).section(" type ", 0, 0);
if (!mountPath.isEmpty()) {
qDebug() << "[iFuseWidget] - Mount point:" << mountPath;
mountPoints.append(mountPath);
}
}
return mountPoints;
}
#endif
bool iFuseManager::linuxUnmount(const QString &path)
{
QProcess umountProcess;
umountProcess.start("fusermount", QStringList() << "-u" << path);
umountProcess.waitForFinished();
if (umountProcess.exitCode() != 0) {
qWarning() << "[iFuseWidget] Failed to unmount" << path << ":"
<< umountProcess.readAllStandardError().trimmed();
return false;
}
qDebug() << "[iFuseWidget] Successfully unmounted" << path;
return true;
}