Don't delete old localstorage file copies.
This commit is contained in:
parent
05c95a0307
commit
555fe70df3
|
@ -44,6 +44,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include <QtCore/QtEndian>
|
#include <QtCore/QtEndian>
|
||||||
#include <QtCore/QDirIterator>
|
#include <QtCore/QDirIterator>
|
||||||
|
|
||||||
|
#ifndef Q_OS_WIN
|
||||||
|
#include <unistd.h>
|
||||||
|
#endif // Q_OS_WIN
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#include <openssl/evp.h>
|
#include <openssl/evp.h>
|
||||||
} // extern "C"
|
} // extern "C"
|
||||||
|
@ -250,28 +254,25 @@ struct FileWriteDescriptor {
|
||||||
}
|
}
|
||||||
|
|
||||||
// detect order of read attempts and file version
|
// detect order of read attempts and file version
|
||||||
QString toTry[2];
|
QString toWrite[2];
|
||||||
toTry[0] = ((options & FileOption::User) ? _userBasePath : _basePath) + name + '0';
|
toWrite[0] = ((options & FileOption::User) ? _userBasePath : _basePath) + name + '0';
|
||||||
if (options & FileOption::Safe) {
|
if (options & FileOption::Safe) {
|
||||||
toTry[1] = ((options & FileOption::User) ? _userBasePath : _basePath) + name + '1';
|
toWrite[1] = ((options & FileOption::User) ? _userBasePath : _basePath) + name + '1';
|
||||||
QFileInfo toTry0(toTry[0]);
|
QFileInfo toWrite0(toWrite[0]);
|
||||||
QFileInfo toTry1(toTry[1]);
|
QFileInfo toWrite1(toWrite[1]);
|
||||||
if (toTry0.exists()) {
|
if (toWrite0.exists()) {
|
||||||
if (toTry1.exists()) {
|
if (toWrite1.exists()) {
|
||||||
QDateTime mod0 = toTry0.lastModified(), mod1 = toTry1.lastModified();
|
QDateTime mod0 = toWrite0.lastModified(), mod1 = toWrite1.lastModified();
|
||||||
if (mod0 > mod1) {
|
if (mod0 > mod1) {
|
||||||
qSwap(toTry[0], toTry[1]);
|
qSwap(toWrite[0], toWrite[1]);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
qSwap(toTry[0], toTry[1]);
|
qSwap(toWrite[0], toWrite[1]);
|
||||||
}
|
}
|
||||||
toDelete = toTry[1];
|
|
||||||
} else if (toTry1.exists()) {
|
|
||||||
toDelete = toTry[1];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
file.setFileName(toTry[0]);
|
file.setFileName(toWrite[0]);
|
||||||
if (file.open(QIODevice::WriteOnly)) {
|
if (file.open(QIODevice::WriteOnly)) {
|
||||||
file.write(tdfMagic, tdfMagicLen);
|
file.write(tdfMagic, tdfMagicLen);
|
||||||
qint32 version = AppVersion;
|
qint32 version = AppVersion;
|
||||||
|
@ -326,17 +327,15 @@ struct FileWriteDescriptor {
|
||||||
md5.feed(&version, sizeof(version));
|
md5.feed(&version, sizeof(version));
|
||||||
md5.feed(tdfMagic, tdfMagicLen);
|
md5.feed(tdfMagic, tdfMagicLen);
|
||||||
file.write((const char*)md5.result(), 0x10);
|
file.write((const char*)md5.result(), 0x10);
|
||||||
|
file.flush();
|
||||||
|
#ifndef Q_OS_WIN
|
||||||
|
fsync(file.handle());
|
||||||
|
#endif // Q_OS_WIN
|
||||||
file.close();
|
file.close();
|
||||||
|
|
||||||
if (!toDelete.isEmpty()) {
|
|
||||||
QFile::remove(toDelete);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
QFile file;
|
QFile file;
|
||||||
QDataStream stream;
|
QDataStream stream;
|
||||||
|
|
||||||
QString toDelete;
|
|
||||||
|
|
||||||
HashMd5 md5;
|
HashMd5 md5;
|
||||||
int32 dataSize = 0;
|
int32 dataSize = 0;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue