save for christmas
This commit is contained in:
		@@ -265,6 +265,20 @@ std::optional<QString> System::checkForUSBStick(QString const &dirPathUnderMount
 | 
			
		||||
    return mountPath.isEmpty() ? std::nullopt : std::optional<QString>(mountPath);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
std::optional<QString> System::checkForSDCard(QString const &dirPathUnderMountPath) {
 | 
			
		||||
#if defined (ARCH_DesktopLinux)
 | 
			
		||||
    // DEBUG / TEST:
 | 
			
		||||
    if (QFileInfo(getSDMountPath()).isDir())
 | 
			
		||||
        return true;
 | 
			
		||||
    else
 | 
			
		||||
        return false;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    QString const &mountPath = getSDMountPath(dirPathUnderMountPath);
 | 
			
		||||
    // qCritical() << "MOUNT-PATH" << mountPath;
 | 
			
		||||
    return mountPath.isEmpty() ? std::nullopt : std::optional<QString>(mountPath);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -315,7 +329,7 @@ QString System::getUSBMountPath(QString const &dirPathUnderMountPath) {
 | 
			
		||||
 | 
			
		||||
                mountLine = line.split(' ');
 | 
			
		||||
                if (mountLine.size() > 3) {
 | 
			
		||||
                    qCritical() << "System::getUSBMountPath(): " << mountLine.at(0) << " is mounted on " << mountLine.at(2);
 | 
			
		||||
                    // qCritical() << "System::getUSBMountPath(): " << mountLine.at(0) << " is mounted on " << mountLine.at(2);
 | 
			
		||||
                    QDir d(QDir::cleanPath(mountLine.at(2) + QDir::separator() + dirPathUnderMountPath));
 | 
			
		||||
                    if (d.exists()) {
 | 
			
		||||
                        return mountLine.at(2);
 | 
			
		||||
@@ -332,6 +346,64 @@ QString System::getUSBMountPath(QString const &dirPathUnderMountPath) {
 | 
			
		||||
    return "";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QString System::getSDMountPath(QString const &dirPathUnderMountPath) {
 | 
			
		||||
 | 
			
		||||
#if defined (ARCH_DesktopLinux)
 | 
			
		||||
    // DEBUG / TEST:
 | 
			
		||||
    return QDir::homePath().append("/APconfigTest/USB");
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    QProcess process;
 | 
			
		||||
    process.setProcessChannelMode(QProcess::MergedChannels);
 | 
			
		||||
 | 
			
		||||
    QStringList mountLine;
 | 
			
		||||
 | 
			
		||||
    qDebug() << "System::getSDMountPath()";
 | 
			
		||||
 | 
			
		||||
    QRegExp devRegExp   = QRegExp("dev/mmc*",   Qt::CaseSensitive, QRegExp::WildcardUnix);
 | 
			
		||||
    QRegExp mountRegExp = QRegExp("media/mmc*", Qt::CaseSensitive, QRegExp::WildcardUnix);
 | 
			
		||||
 | 
			
		||||
    QString commandString = "mount";
 | 
			
		||||
 | 
			
		||||
    process.start(commandString);
 | 
			
		||||
    if (!process.waitForStarted()) {
 | 
			
		||||
        errorMsg = "System::getSDMountPath(): ERROR: waitForStarted()";
 | 
			
		||||
        return "";
 | 
			
		||||
    }
 | 
			
		||||
    if (!process.waitForFinished(600000)) {
 | 
			
		||||
        errorMsg = "System::getSDMountPath(): ERROR: " + process.errorString();
 | 
			
		||||
        qDebug() << errorMsg;
 | 
			
		||||
        return "";
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
        QByteArray bytes = process.readAll();
 | 
			
		||||
        QStringList lines = QString(bytes).split("\n");
 | 
			
		||||
        foreach (QString line, lines) {
 | 
			
		||||
            qDebug() << "System::getSDMountPath() line:    " << line;
 | 
			
		||||
 | 
			
		||||
            if (line.contains(devRegExp) && line.contains(mountRegExp)) {
 | 
			
		||||
 | 
			
		||||
                qDebug() << "  -> this line is a usb storage device mount" << line;
 | 
			
		||||
 | 
			
		||||
                mountLine = line.split(' ');
 | 
			
		||||
                if (mountLine.size() > 3) {
 | 
			
		||||
                    // qCritical() << "System::getSDMountPath(): " << mountLine.at(0) << " is mounted on " << mountLine.at(2);
 | 
			
		||||
                    QDir d(QDir::cleanPath(mountLine.at(2) + QDir::separator() + dirPathUnderMountPath));
 | 
			
		||||
                    if (d.exists()) {
 | 
			
		||||
                        return mountLine.at(2);
 | 
			
		||||
                    } else {
 | 
			
		||||
                        qCritical() << "directory" << d.absolutePath() << "does not exist";
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    qDebug() << "System::getSDMountPath() no mounted usb device found!";
 | 
			
		||||
 | 
			
		||||
    return "";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QStringList System::getJsonFilesOnUsbStick(QString const &mountPath) {
 | 
			
		||||
    QStringList jsonFiles;
 | 
			
		||||
 | 
			
		||||
@@ -354,6 +426,38 @@ QStringList System::getJsonFilesOnUsbStick(QString const &mountPath) {
 | 
			
		||||
    return jsonFiles;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QString System::getDCFileOnUsbStick(QString const &mountPath) {
 | 
			
		||||
    QString dcFile;
 | 
			
		||||
 | 
			
		||||
    // /media/sda2/etc/dc
 | 
			
		||||
    QString const &dirPath = QDir::cleanPath(mountPath + QDir::separator() + "etc" + QDir::separator() + "dc");
 | 
			
		||||
    QDir d(dirPath);
 | 
			
		||||
    if (d.exists()) {
 | 
			
		||||
        QFileInfo fi(dirPath + QDir::separator() + "dc2c.bin");
 | 
			
		||||
        if (fi.exists()) {
 | 
			
		||||
            dcFile = fi.absoluteFilePath();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return dcFile;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QString System::getDCFileOnSDCard(QString const &mountPath) {
 | 
			
		||||
    QString dcFile;
 | 
			
		||||
 | 
			
		||||
    // /media/sda2/etc/dc
 | 
			
		||||
    QString const &dirPath = QDir::cleanPath(mountPath + QDir::separator() + "etc" + QDir::separator() + "dc");
 | 
			
		||||
    QDir d(dirPath);
 | 
			
		||||
    if (d.exists()) {
 | 
			
		||||
        QFileInfo fi(dirPath + QDir::separator() + "dc2c.bin");
 | 
			
		||||
        if (fi.exists()) {
 | 
			
		||||
            dcFile = fi.absoluteFilePath();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return dcFile;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/********************************************************************************
 | 
			
		||||
 * static function to check if a mounted sd-card is writable.
 | 
			
		||||
 *
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user