summaryrefslogtreecommitdiffstats
path: root/src/libs/installer/packagemanagercore_p.cpp
diff options
context:
space:
mode:
authorkh1 <karsten.heimrich@digia.com>2014-08-27 11:46:28 +0200
committerKarsten Heimrich <karsten.heimrich@digia.com>2014-09-04 10:42:05 +0200
commit85cc7f8fc5538cdf0d6231a0b679eb06e4bd9cfc (patch)
treedba76c133baebdd093b456166de57e715ab88a81 /src/libs/installer/packagemanagercore_p.cpp
parent77b1e168202e8781ddfe5c06fc1ceaea5934e855 (diff)
Rewrite binary layout read/ write implementation.
Move BinaryLayout into its own file. Calculate the segment offsets in place instead of letting the caller do the work. Adjust autotest to match the new behavior. Adjust uses to the new behavior. Change-Id: Iba7a4398bd097f1768c33f0c528efd12b7458541 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Diffstat (limited to 'src/libs/installer/packagemanagercore_p.cpp')
-rw-r--r--src/libs/installer/packagemanagercore_p.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp
index c9cd458a6..e182d1159 100644
--- a/src/libs/installer/packagemanagercore_p.cpp
+++ b/src/libs/installer/packagemanagercore_p.cpp
@@ -43,6 +43,7 @@
#include "adminauthorization.h"
#include "binarycontent.h"
#include "binaryformatenginehandler.h"
+#include "binarylayout.h"
#include "component.h"
#include "scriptengine.h"
#include "componentmodel.h"
@@ -1114,7 +1115,7 @@ void PackageManagerCorePrivate::writeMaintenanceToolBinaryData(QFileDevice *outp
const qint64 dataBlockStart = output->pos();
QVector<Range<qint64> >resourceSegments;
- QVector<Range<qint64> >existingResourceSegments = layout.metadataResourceSegments;
+ QVector<Range<qint64> >existingResourceSegments = layout.metaResourceSegments;
const QString newDefaultResource = m_core->value(QString::fromLatin1("DefaultResourceReplacement"));
if (!newDefaultResource.isEmpty()) {
@@ -1168,7 +1169,7 @@ void PackageManagerCorePrivate::writeMaintenanceToolBinaryData(QFileDevice *outp
QInstaller::appendInt64Range(output, segment.moved(-dataBlockStart));
QInstaller::appendInt64Range(output, Range<qint64>::fromStartAndEnd(operationsStart, operationsEnd)
.moved(-dataBlockStart));
- QInstaller::appendInt64(output, layout.resourceCount);
+ QInstaller::appendInt64(output, layout.metaResourceSegments.count());
// data block size, from end of .exe to end of file
QInstaller::appendInt64(output, output->pos() + 3 * sizeof(qint64) -dataBlockStart);
QInstaller::appendInt64(output, BinaryContent::MagicUninstallerMarker);
@@ -1368,7 +1369,8 @@ void PackageManagerCorePrivate::writeMaintenanceTool(OperationList performedOper
layout = BinaryContent::binaryLayout(&input, BinaryContent::MagicCookie);
if (!newBinaryWritten) {
newBinaryWritten = true;
- writeMaintenanceToolBinary(&input, layout.endOfData - layout.dataBlockSize, true);
+ writeMaintenanceToolBinary(&input, layout.endOfBinaryContent
+ - layout.binaryContentSize, true);
}
#endif
}
@@ -1402,7 +1404,8 @@ void PackageManagerCorePrivate::writeMaintenanceTool(OperationList performedOper
QFile tmp(isInstaller() ? installerBinaryPath() : maintenanceToolName());
QInstaller::openForRead(&tmp);
BinaryLayout tmpLayout = BinaryContent::binaryLayout(&tmp, BinaryContent::MagicCookie);
- writeMaintenanceToolBinary(&tmp, tmpLayout.endOfData - tmpLayout.dataBlockSize, false);
+ writeMaintenanceToolBinary(&tmp, tmpLayout.endOfBinaryContent
+ - tmpLayout.binaryContentSize, false);
}
QFile file(maintenanceToolName() + QLatin1String(".new"));