diff options
-rw-r--r-- | src/libs/installer/binarycontent.cpp | 11 | ||||
-rw-r--r-- | src/libs/installer/binarycontent.h | 2 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore_p.cpp | 12 | ||||
-rw-r--r-- | tools/devtool/main.cpp | 7 |
4 files changed, 14 insertions, 18 deletions
diff --git a/src/libs/installer/binarycontent.cpp b/src/libs/installer/binarycontent.cpp index 5e2c77ebe..6280134d9 100644 --- a/src/libs/installer/binarycontent.cpp +++ b/src/libs/installer/binarycontent.cpp @@ -313,19 +313,20 @@ BinaryContent BinaryContent::readFromBinary(const QString &path) c.d->m_binaryDataFile.reset(new QFile(fi.absolutePath() + QLatin1Char('/') + fi.baseName() + QLatin1String(".dat"))); QInstaller::openForRead(c.d->m_binaryDataFile.data()); - cookiePos = findMagicCookie(c.d->m_binaryDataFile.data(), BinaryContent::MagicCookieDat); - readBinaryData(c, c.d->m_binaryDataFile, readBinaryLayout(c.d->m_binaryDataFile.data(), - cookiePos)); + readBinaryData(c, c.d->m_binaryDataFile, binaryLayout(c.d->m_binaryDataFile.data(), + BinaryContent::MagicCookieDat)); } else { // We are an installer, all data is appended to our binary itself. - readBinaryData(c, c.d->m_appBinary, readBinaryLayout(c.d->m_appBinary.data(), cookiePos)); + readBinaryData(c, c.d->m_appBinary, binaryLayout(c.d->m_appBinary.data(), + BinaryContent::MagicCookie)); } return c; } /* static */ -BinaryLayout BinaryContent::readBinaryLayout(QFile *const file, qint64 cookiePos) +BinaryLayout BinaryContent::binaryLayout(QFile *file, quint64 magicCookie) { + const qint64 cookiePos = BinaryContent::findMagicCookie(file, magicCookie); const qint64 indexSize = 5 * sizeof(qint64); if (!file->seek(cookiePos - indexSize)) { throw Error(QCoreApplication::translate("BinaryContent", diff --git a/src/libs/installer/binarycontent.h b/src/libs/installer/binarycontent.h index f553b8b9a..edbf54f07 100644 --- a/src/libs/installer/binarycontent.h +++ b/src/libs/installer/binarycontent.h @@ -87,8 +87,8 @@ public: static BinaryContent readFromBinary(const QString &path); static BinaryContent readAndRegisterFromBinary(const QString &path); - static BinaryLayout readBinaryLayout(QFile *const file, qint64 cookiePos); static qint64 findMagicCookie(QFile *file, quint64 magicCookie); + static BinaryLayout binaryLayout(QFile *file, quint64 magicCookie); int registerPerformedOperations(); OperationList performedOperations() const; diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index 1bb1a8c5e..b2d7d7d83 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -1328,8 +1328,7 @@ void PackageManagerCorePrivate::writeMaintenanceTool(OperationList performedOper } input.setFileName(dataFile); QInstaller::openForRead(&input); - layout = BinaryContent::readBinaryLayout(&input, BinaryContent::findMagicCookie(&input, - BinaryContent::MagicCookieDat)); + layout = BinaryContent::binaryLayout(&input, BinaryContent::MagicCookieDat); } catch (const Error &/*error*/) { #ifdef Q_OS_OSX // On Mac, data is always in a separate file so that the binary can be signed @@ -1340,8 +1339,7 @@ void PackageManagerCorePrivate::writeMaintenanceTool(OperationList performedOper input.setFileName(dataPath.filePath(QLatin1String("installer.dat"))); QInstaller::openForRead(&input); - layout = BinaryContent::readBinaryLayout(&input, BinaryContent::findMagicCookie(&input, - BinaryContent::MagicCookie)); + layout = BinaryContent::binaryLayout(&input, BinaryContent::MagicCookie); if (!newBinaryWritten) { newBinaryWritten = true; @@ -1352,8 +1350,7 @@ void PackageManagerCorePrivate::writeMaintenanceTool(OperationList performedOper #else input.setFileName(isInstaller() ? installerBinaryPath() : maintenanceToolName()); QInstaller::openForRead(&input); - layout = BinaryContent::readBinaryLayout(&input, BinaryContent::findMagicCookie(&input, - BinaryContent::MagicCookie)); + layout = BinaryContent::binaryLayout(&input, BinaryContent::MagicCookie); if (!newBinaryWritten) { newBinaryWritten = true; writeMaintenanceToolBinary(&input, layout.endOfData - layout.dataBlockSize, true); @@ -1389,8 +1386,7 @@ void PackageManagerCorePrivate::writeMaintenanceTool(OperationList performedOper newBinaryWritten = true; QFile tmp(isInstaller() ? installerBinaryPath() : maintenanceToolName()); QInstaller::openForRead(&tmp); - BinaryLayout tmpLayout = BinaryContent::readBinaryLayout(&tmp, - BinaryContent::findMagicCookie(&tmp, BinaryContent::MagicCookie)); + BinaryLayout tmpLayout = BinaryContent::binaryLayout(&tmp, BinaryContent::MagicCookie); writeMaintenanceToolBinary(&tmp, tmpLayout.endOfData - tmpLayout.dataBlockSize, false); } diff --git a/tools/devtool/main.cpp b/tools/devtool/main.cpp index ef738868e..d31870e67 100644 --- a/tools/devtool/main.cpp +++ b/tools/devtool/main.cpp @@ -104,9 +104,9 @@ int main(int argc, char *argv[]) try { QFile *file = new QFile(path); QInstaller::openForRead(file); - qint64 pos = QInstaller::BinaryContent::findMagicCookie(file, + + QInstaller::BinaryLayout layout = QInstaller::BinaryContent::binaryLayout(file, QInstaller::BinaryContent::MagicCookie); - QInstaller::BinaryLayout layout = QInstaller::BinaryContent::readBinaryLayout(file, pos); if (layout.magicMarker == QInstaller::BinaryContent::MagicUninstallerMarker) { QFileInfo fi(path); @@ -115,9 +115,8 @@ int main(int argc, char *argv[]) path = fi.absolutePath() + QLatin1Char('/') + fi.baseName() + QLatin1String(".dat"); file->setFileName(path); - pos = QInstaller::BinaryContent::findMagicCookie(file, + layout = QInstaller::BinaryContent::binaryLayout(file, QInstaller::BinaryContent::MagicCookie); - layout = QInstaller::BinaryContent::readBinaryLayout(file, pos); } if (parser.isSet(update)) { |