Assert Settings backing store is writable if core is unconfigured.
authorChristian Schwarz <me@cschwarz.com>
Sat, 18 Mar 2017 19:03:57 +0000 (20:03 +0100)
committerManuel Nickschas <sputnick@quassel-irc.org>
Thu, 13 Apr 2017 20:20:41 +0000 (22:20 +0200)
src/common/settings.cpp
src/common/settings.h
src/core/core.cpp

index f0defb8..c3713d9 100644 (file)
@@ -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()
 {
index e9bf28d..2193864 100644 (file)
@@ -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() {}
index b5bea2c..dadd70a 100644 (file)
@@ -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")) {