summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/libs/installer/binarycontent.cpp11
-rw-r--r--src/libs/installer/binarycontent.h2
-rw-r--r--src/libs/installer/packagemanagercore_p.cpp12
-rw-r--r--tools/devtool/main.cpp7
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)) {