summaryrefslogtreecommitdiff
path: root/src/safewritefile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/safewritefile.cpp')
-rw-r--r--src/safewritefile.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/safewritefile.cpp b/src/safewritefile.cpp
index 6df8c2b8..626413dd 100644
--- a/src/safewritefile.cpp
+++ b/src/safewritefile.cpp
@@ -46,3 +46,23 @@ void SafeWriteFile::commit() {
m_TempFile.setAutoRemove(false);
m_TempFile.close();
}
+
+bool SafeWriteFile::commitIfDifferent(uint &inHash) {
+ uint newHash = hash();
+ if (newHash != inHash) {
+ commit();
+ inHash = newHash;
+ return true;
+ } else {
+ return false;
+ }
+}
+
+uint SafeWriteFile::hash()
+{
+ qint64 pos = m_TempFile.pos();
+ m_TempFile.seek(0);
+ QByteArray data = m_TempFile.readAll();
+ m_TempFile.seek(pos);
+ return qHash(data);
+}