[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