summaryrefslogtreecommitdiffstats
path: root/installerbuilder/common
diff options
context:
space:
mode:
authorkh1 <qt-info@nokia.com>2011-05-24 13:01:34 +0200
committerkh1 <qt-info@nokia.com>2011-05-24 13:01:34 +0200
commitb313324bbf479a970e612ea81259e0f002f82937 (patch)
treef8ad12e264c91458125363ab88876a9233390b7d /installerbuilder/common
parent7fa58e3d7ccdc580cf0385d92f3fe3b9843dd6a7 (diff)
Write the operations in compressed form.
Save at least have the size of the binary data file.
Diffstat (limited to 'installerbuilder/common')
-rw-r--r--installerbuilder/common/binaryformat.cpp11
-rw-r--r--installerbuilder/common/binaryformat.h3
2 files changed, 9 insertions, 5 deletions
diff --git a/installerbuilder/common/binaryformat.cpp b/installerbuilder/common/binaryformat.cpp
index 017c3f902..a8723a44f 100644
--- a/installerbuilder/common/binaryformat.cpp
+++ b/installerbuilder/common/binaryformat.cpp
@@ -875,7 +875,8 @@ BinaryContent BinaryContent::readFromBinary(const QString &path)
// check for supported binary data file, will throw if we can't find a marker
try {
const qint64 cookiePos = findMagicCookie(c.m_binaryFile.data(), QInstaller::MagicCookieDat);
- readBinaryData(c, c.m_binaryFile.data(), readBinaryLayout(c.m_binaryFile.data(), cookiePos));
+ readBinaryData(c, c.m_binaryFile.data(), readBinaryLayout(c.m_binaryFile.data(), cookiePos),
+ true);
retry = false;
} catch (const Error &error) {
// this seems to be an unsupported dat file, try to read from original binary
@@ -888,7 +889,7 @@ BinaryContent BinaryContent::readFromBinary(const QString &path)
}
if (retry)
- readBinaryData(c, file, layout);
+ readBinaryData(c, file, layout, false);
return c;
}
@@ -933,7 +934,8 @@ BinaryLayout BinaryContent::readBinaryLayout(QIODevice *file, qint64 cookiePos)
/* static */
-void BinaryContent::readBinaryData(BinaryContent &c, QIODevice *const file, const BinaryLayout &layout)
+void BinaryContent::readBinaryData(BinaryContent &c, QIODevice *const file, const BinaryLayout &layout,
+ bool compressed)
{
c.m_magicmarker = layout.magicMarker;
c.metadataResourceSegments = layout.metadataResourceSegments;
@@ -952,7 +954,8 @@ void BinaryContent::readBinaryData(BinaryContent &c, QIODevice *const file, cons
Q_ASSERT_X(op, __FUNCTION__, QString::fromLatin1("Invalid operation name: %1").arg(name)
.toLatin1());
- const QString xml = retrieveString(file);
+ const QString xml = (compressed ? QString::fromUtf8(qUncompress(retrieveByteArray(file)))
+ : retrieveString(file));
if (!op->fromXml(xml))
qWarning() << "Failed to load XML for operation:" << name;
verbose() << "Operation name: " << name << "\nOperation xml:\n" << xml.leftRef(1000) << std::endl;
diff --git a/installerbuilder/common/binaryformat.h b/installerbuilder/common/binaryformat.h
index 3d0397678..21701df80 100644
--- a/installerbuilder/common/binaryformat.h
+++ b/installerbuilder/common/binaryformat.h
@@ -198,7 +198,8 @@ public:
QStack<KDUpdater::UpdateOperation*> performedOperations() const;
private:
- static void readBinaryData(BinaryContent &c, QIODevice *const file, const BinaryLayout &layout);
+ static void readBinaryData(BinaryContent &c, QIODevice *const file, const BinaryLayout &layout,
+ bool compressed);
private:
QSharedPointer<QFile> file;