Comment 20 for bug 1363112

Revision history for this message
Zsombor Egri (zsombi) wrote :

Jamie, I tried to add the following code to log the file permissions:

    QStringList runtimeDirs = QStandardPaths::standardLocations(QStandardPaths::RuntimeLocation);
    QString runtimeDir = (runtimeDirs.size() > 0 && !runtimeDirs[0].isEmpty()) ? runtimeDirs[0] : qgetenv("XDG_RUNTIME_DIR");
    if (runtimeDir.isEmpty()) {
        qWarning() << "[StateSaver] No XDG_RUNTIME_DIR path set, cannot create appstate file.";
        return;
    }
    QString path = QString("%1/%2/statesaver.appstate").arg(runtimeDir).arg(applicationName);
    qDebug() << "[StateSaver] PATH" << path;

    // log permissions
    QFile::Permissions wanted = QFile::ReadUser | QFile::WriteUser | QFile::ExeUser;
    QFile xdg(runtimeDir);
    qDebug() << QString("[StateSaver] PERMISSIONS %1 WANTED %2").arg(xdg.permissions(), 0, 16).arg(wanted, 0, 16);

And I'm getting the following result:
QStandardPaths: wrong permissions on runtime directory /run/user/32011
[StateSaver] PATH "/run/user/32011/com.ubuntu.camera/statesaver.appstate"
"[StateSaver] PERMISSIONS 7700 WANTED 700"

So, QFile::permissions() return 0x7700 for XDG_RUNTIME_DIR, which is weird!