/* * iDescriptor: A free and open-source idevice management tool. * * Copyright (C) 2025 Uncore * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #include "ifusemanager.h" #include #include QStringList iFuseManager::getMountArg(std::string &udid, QString &path) { return QStringList() << "-u" << QString::fromStdString(udid) << path; } #ifdef __linux__ QList 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; }