[packages/kde4-kdelibs] - rel 2; always fsync by default - safety first and KDE doesn't care about safety of your files (inc

arekm arekm at pld-linux.org
Fri Jul 12 09:16:45 CEST 2013


commit 75ad0ac9540a883693a804fa9f2b869d5d2f0d3b
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Fri Jul 12 09:16:42 2013 +0200

    - rel 2; always fsync by default - safety first and KDE doesn't care about safety of your files (including config files)

 kde4-kdelibs-sync.patch | 68 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 68 insertions(+)
---
diff --git a/kde4-kdelibs-sync.patch b/kde4-kdelibs-sync.patch
new file mode 100644
index 0000000..71d02ba
--- /dev/null
+++ b/kde4-kdelibs-sync.patch
@@ -0,0 +1,68 @@
+diff -ruN kdelibs-4.10.5.org/kde3support/kdecore/k3tempfile.cpp kdelibs-4.10.5/kde3support/kdecore/k3tempfile.cpp
+--- kdelibs-4.10.5.org/kde3support/kdecore/k3tempfile.cpp	2013-06-28 19:03:40.834334863 +0200
++++ kdelibs-4.10.5/kde3support/kdecore/k3tempfile.cpp	2013-07-12 08:30:01.608605762 +0200
+@@ -258,7 +258,7 @@
+ 
+    if (mFd >= 0)
+    {
+-      if( qgetenv( "KDE_EXTRA_FSYNC" ) == "1" )
++      if( !(qgetenv( "KDE_EXTRA_FSYNC" ) == "0") )
+       {
+          result = FDATASYNC(mFd);
+          if (result)
+diff -ruN kdelibs-4.10.5.org/kdecore/config/kconfigini.cpp kdelibs-4.10.5/kdecore/config/kconfigini.cpp
+--- kdelibs-4.10.5.org/kdecore/config/kconfigini.cpp	2013-06-28 19:03:40.859337527 +0200
++++ kdelibs-4.10.5/kdecore/config/kconfigini.cpp	2013-07-12 08:27:38.527009696 +0200
+@@ -37,6 +37,14 @@
+ #include <qdebug.h>
+ #include <qmetaobject.h>
+ #include <qregexp.h>
++#include <stdlib.h>
++#include <errno.h>
++
++#ifdef HAVE_FDATASYNC
++#  define FDATASYNC fdatasync
++#else
++#  define FDATASYNC fsync
++#endif
+ 
+ extern bool kde_kiosk_exception;
+ 
+@@ -441,7 +449,12 @@
+         file.setTextModeEnabled(true); // to get eol translation
+         writeEntries(locale, file, writeMap);
+ 
+-        if (!file.flush()) {
++        if (file.flush()) {
++            forever {
++                if (!FDATASYNC(file.handle()))
++                    break;
++           }
++       } else {
+             // Couldn't write. Disk full?
+             kWarning() << "Couldn't write" << filePath() << ". Disk full?";
+             file.abort();
+diff -ruN kdelibs-4.10.5.org/kdecore/io/ksavefile.cpp kdelibs-4.10.5/kdecore/io/ksavefile.cpp
+--- kdelibs-4.10.5.org/kdecore/io/ksavefile.cpp	2013-06-28 19:03:40.874339125 +0200
++++ kdelibs-4.10.5/kdecore/io/ksavefile.cpp	2013-07-12 08:33:57.773404699 +0200
+@@ -38,6 +38,7 @@
+ #include <kconfiggroup.h>
+ 
+ #include <stdlib.h>
++#include <string.h>
+ #include <errno.h>
+ 
+ class KSaveFile::Private
+@@ -225,8 +226,10 @@
+     bool success = false;
+ #ifdef Q_OS_UNIX
+     static int extraSync = -1;
+-    if (extraSync < 0)
+-        extraSync = getenv("KDE_EXTRA_FSYNC") != 0 ? 1 : 0;
++    if (extraSync < 0) {
++        char *kef = getenv("KDE_EXTRA_FSYNC");
++        extraSync = (kef && strncmp(kef, "0", 1) == 0) ? 0 : 1;
++    }
+     if (extraSync) {
+         if (flush()) {
+             forever {
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/kde4-kdelibs.git/commitdiff/75ad0ac9540a883693a804fa9f2b869d5d2f0d3b



More information about the pld-cvs-commit mailing list