From 9b4198663463ce584fbd4f78adff29edc2bbc51c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Thu, 17 Nov 2016 04:09:24 +0100 Subject: [PATCH] GH-347 update timestamps of added mods --- api/logic/FileSystem.cpp | 19 +++++++++++++++++++ api/logic/FileSystem.h | 5 +++++ api/logic/minecraft/ModList.cpp | 2 +- 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/api/logic/FileSystem.cpp b/api/logic/FileSystem.cpp index 7805a78b..67bafd28 100644 --- a/api/logic/FileSystem.cpp +++ b/api/logic/FileSystem.cpp @@ -60,6 +60,25 @@ QByteArray read(const QString &filename) return data; } +bool updateTimestamp(const QString& filename) +{ + QFile file(filename); + if (!file.exists()) + { + return false; + } + if (!file.open(QIODevice::ReadWrite)) + { + return false; + } + const quint64 size = file.size(); + file.seek(size); + file.write( QByteArray(1, '0') ); + file.resize(size); + return true; + +} + bool ensureFilePathExists(QString filenamepath) { QFileInfo a(filenamepath); diff --git a/api/logic/FileSystem.h b/api/logic/FileSystem.h index 564f94f9..a09ee557 100644 --- a/api/logic/FileSystem.h +++ b/api/logic/FileSystem.h @@ -28,6 +28,11 @@ MULTIMC_LOGIC_EXPORT void write(const QString &filename, const QByteArray &data) */ MULTIMC_LOGIC_EXPORT QByteArray read(const QString &filename); +/** + * Update the last changed timestamp of an existing file + */ +MULTIMC_LOGIC_EXPORT bool updateTimestamp(const QString & filename); + /** * Creates all the folders in a path for the specified path * last segment of the path is treated as a file name and is ignored! diff --git a/api/logic/minecraft/ModList.cpp b/api/logic/minecraft/ModList.cpp index 7396cd65..10a145b8 100644 --- a/api/logic/minecraft/ModList.cpp +++ b/api/logic/minecraft/ModList.cpp @@ -148,13 +148,13 @@ bool ModList::installMod(const QString &filename) QString newpath = FS::PathCombine(m_dir.path(), fileinfo.fileName()); if (!QFile::copy(fileinfo.filePath(), newpath)) return false; + FS::updateTimestamp(newpath); m.repath(newpath); update(); return true; } else if (type == Mod::MOD_FOLDER) { - QString from = fileinfo.filePath(); QString to = FS::PathCombine(m_dir.path(), fileinfo.fileName()); if (!FS::copy(from, to)())