Fix crash Close book (pop(null) differito con Timer); config condivisa nemo/defaultuser con permessi aperti a ogni scrittura

This commit is contained in:
2026-08-19 16:35:55 +02:00
parent 8b7af5c5e0
commit 91c42a1d43
4 changed files with 59 additions and 6 deletions
+39
View File
@@ -2,6 +2,8 @@
#include <QDebug>
#include <QDir>
#include <QFile>
#include <QFileInfo>
#include <QStandardPaths>
QString Settings::configPath()
@@ -16,6 +18,7 @@ Settings::Settings(QObject *parent)
, m_settings(configPath(), QSettings::IniFormat)
{
migrateIfNeeded();
openPermissions();
// diagnostica: path reale del file di configurazione e valori letti all'avvio
qDebug() << "Settings file:" << m_settings.fileName();
if (m_settings.status() != QSettings::NoError)
@@ -62,11 +65,39 @@ void Settings::migrateIfNeeded()
}
src.endGroup();
m_settings.sync();
openPermissions();
qDebug() << "Settings: importati i valori da" << cand;
return;
}
}
void Settings::openPermissions()
{
// Apre la catena di directory e il file di configurazione: la home di
// nemo e' 700 di default e defaultuser (debug SSH) non puo' entrarci.
// Al primo avvio dal launcher (nemo) questi permessi restano aperti, e
// da quel momento entrambi gli utenti condividono lo stesso file.
QDir home(QStringLiteral("/home/nemo"));
QFile::setPermissions(home.absolutePath(),
QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner
| QFile::ReadGroup | QFile::ExeGroup
| QFile::ReadOther | QFile::ExeOther);
QDir config(QStringLiteral("/home/nemo/.config"));
QFile::setPermissions(config.absolutePath(),
QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner
| QFile::ReadGroup | QFile::ExeGroup
| QFile::ReadOther | QFile::ExeOther);
QDir dir(QFileInfo(m_settings.fileName()).absolutePath());
QFile::setPermissions(dir.absolutePath(),
QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner
| QFile::ReadGroup | QFile::WriteGroup | QFile::ExeGroup
| QFile::ReadOther | QFile::WriteOther | QFile::ExeOther);
QFile::setPermissions(m_settings.fileName(),
QFile::ReadOwner | QFile::WriteOwner
| QFile::ReadGroup | QFile::WriteGroup
| QFile::ReadOther | QFile::WriteOther);
}
QString Settings::serverUrl() const
{
return m_settings.value(QStringLiteral("serverUrl")).toString();
@@ -78,6 +109,7 @@ void Settings::setServerUrl(const QString &value)
return;
m_settings.setValue(QStringLiteral("serverUrl"), value);
m_settings.sync(); // scrivi subito su disco: l'app può crashare alla chiusura (WebView)
openPermissions();
emit serverUrlChanged();
emit baseUrlChanged();
}
@@ -93,6 +125,7 @@ void Settings::setUsername(const QString &value)
return;
m_settings.setValue(QStringLiteral("username"), value);
m_settings.sync();
openPermissions();
emit usernameChanged();
}
@@ -107,6 +140,7 @@ void Settings::setPassword(const QString &value)
return;
m_settings.setValue(QStringLiteral("password"), value);
m_settings.sync();
openPermissions();
emit passwordChanged();
}
@@ -121,6 +155,7 @@ void Settings::setIgnoreSslErrors(bool value)
return;
m_settings.setValue(QStringLiteral("ignoreSslErrors"), value);
m_settings.sync();
openPermissions();
emit ignoreSslErrorsChanged();
}
@@ -135,6 +170,7 @@ void Settings::setReaderMargin(int value)
return;
m_settings.setValue(QStringLiteral("readerMargin"), value);
m_settings.sync();
openPermissions();
emit readerMarginChanged();
}
@@ -149,6 +185,7 @@ void Settings::setReaderMarginV(int value)
return;
m_settings.setValue(QStringLiteral("readerMarginV"), value);
m_settings.sync();
openPermissions();
emit readerMarginVChanged();
}
@@ -163,6 +200,7 @@ void Settings::setLanguage(const QString &value)
return;
m_settings.setValue(QStringLiteral("language"), value);
m_settings.sync();
openPermissions();
emit languageChanged();
}
@@ -202,6 +240,7 @@ void Settings::setBookmarkKey(int bookId, const QString &format, const QString &
{
m_settings.setValue(QStringLiteral("bookmarks/%1/%2").arg(bookId).arg(format), key);
m_settings.sync();
openPermissions();
}
QString Settings::bookFilePath(int bookId, const QString &format) const
+4
View File
@@ -81,6 +81,10 @@ private:
// Importa i valori dalla vecchia config per-utente (~/.config/harbour/...) se
// il file condiviso e' vuoto: copre la configurazione fatta prima del fix.
void migrateIfNeeded();
// Apre i permessi della catena /home/nemo/.config/harbour e del file:
// il launcher gira come nemo (home 700), il debug SSH come defaultuser —
// entrambi devono poter leggere/scrivere lo stesso file di configurazione.
void openPermissions();
QSettings m_settings;
};