From 424eddc71def51d22ec9f19d6a57c06af0d25295 Mon Sep 17 00:00:00 2001 From: Christian Schwarz Date: Sat, 18 Mar 2017 20:03:57 +0100 Subject: [PATCH] Assert Settings backing store is writable if core is unconfigured. --- src/common/settings.cpp | 4 ++++ src/common/settings.h | 7 +++++++ src/core/core.cpp | 7 +++++++ 3 files changed, 18 insertions(+) diff --git a/src/common/settings.cpp b/src/common/settings.cpp index f0defb8d..c3713d9c 100644 --- a/src/common/settings.cpp +++ b/src/common/settings.cpp @@ -120,6 +120,10 @@ void Settings::setVersionMinor(const uint versionMinor) s.setValue("Config/VersionMinor", versionMinor); } +bool Settings::isWritable() { + create_qsettings; + return s.isWritable(); +} QStringList Settings::allLocalKeys() { diff --git a/src/common/settings.h b/src/common/settings.h index e9bf28d0..21938643 100644 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -83,6 +83,13 @@ public: */ virtual void setVersionMinor(const uint versionMinor); + /** + * Check if the configuration storage is writable. + * + * @return true if writable, false otherwise + */ + bool isWritable(); + protected: inline Settings(QString group_, QString appName_) : group(group_), appName(appName_) {} inline virtual ~Settings() {} diff --git a/src/core/core.cpp b/src/core/core.cpp index b5bea2cd..dadd70a4 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -194,7 +194,14 @@ void Core::init() "to work.")); exit(1); // TODO make this less brutal (especially for mono client -> popup) } + qWarning() << "Core is currently not configured! Please connect with a Quassel Client for basic setup."; + + if (!cs.isWritable()) { + qWarning() << "Cannot write quasselcore configuration; probably a permission problem."; + exit(EXIT_FAILURE); + } + } if (Quassel::isOptionSet("add-user")) { -- 2.20.1