[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/kdecore/config
From:       David Faure <faure () kde ! org>
Date:       2009-09-15 11:35:42
Message-ID: 1253014542.999798.23037.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1023836 by dfaure:

Forwardport: in case of "disk full", return an error instead of removing the existing \
config file. Testcase:
 dd if=/dev/zero of=image count=200 ; mkfs.ext2 image ; mkdir mntpt ; sudo mount \
image mntpt -o loop -t ext2  cd mntpt ; sudo chown -R $UID . ; dd if=/dev/zero \
of=make_it_full  kwriteconfig --file $PWD/outfile --key MyKey TheValue2


 M  +5 -0      kconfig.cpp  
 M  +7 -0      kconfigini.cpp  


--- trunk/KDE/kdelibs/kdecore/config/kconfig.cpp #1023835:1023836
@@ -280,6 +280,7 @@
     return theMap;
 }
 
+// TODO KDE5: return a bool value
 void KConfig::sync()
 {
     Q_D(KConfig);
@@ -325,6 +326,8 @@
             }
             if (!tmp->writeConfig(utf8Locale, d->entryMap, \
KConfigBackend::WriteGlobal, d->componentData)) {  d->bDirty = true;
+                // TODO KDE5: return false? (to tell the app that writing wasn't \
possible, e.g. +                // config file is immutable or disk full)
             }
             if (tmp->isLocked()) {
                 tmp->unlock();
@@ -334,6 +337,8 @@
         if (writeLocals) {
             if (!d->mBackend->writeConfig(utf8Locale, d->entryMap, \
KConfigBackend::WriteOptions(), d->componentData)) {  d->bDirty = true;
+                // TODO KDE5: return false? (to tell the app that writing wasn't \
possible, e.g. +                // config file is immutable or disk full)
             }
         }
         if (d->mBackend->isLocked()) {
--- trunk/KDE/kdelibs/kdecore/config/kconfigini.cpp #1023835:1023836
@@ -435,6 +435,13 @@
         file.setTextModeEnabled(true); // to get eol translation
         writeEntries(locale, file, writeMap);
 
+        if (!file.flush()) {
+            // Couldn't write. Disk full?
+            kWarning() << "Couldn't write" << filePath() << ". Disk full?";
+            file.abort();
+            return false;
+        }
+
         if (!file.size() && (fileMode == (QFile::ReadUser | QFile::WriteUser))) {
             // File is empty and doesn't have special permissions: delete it.
             file.abort();


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic