summaryrefslogtreecommitdiffstats
path: root/tools/extractbinarydata
diff options
context:
space:
mode:
authorkh1 <karsten.heimrich@nokia.com>2011-09-27 16:39:55 +0200
committerKarsten Heimrich <karsten.heimrich@nokia.com>2011-09-27 16:49:05 +0200
commit3ec3a69f38bcefc7e8d366c63ab8005c026aab05 (patch)
tree83a441b1198fafc5919fa524773eaa79174945be /tools/extractbinarydata
parent6de00f39973290cadea13c85e77d4f7ec9d7ecbd (diff)
Extend the app to be able to copy only a new maintenance tool.
This is now the default, as all installers out there put the binary data into a separate file. Change-Id: I1fe55613aad7200e6c6b658b5ab2179cc8ddf0a6 Reviewed-on: http://codereview.qt-project.org/5638 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Tim Jenssen <tim.jenssen@nokia.com> Reviewed-by: Karsten Heimrich <karsten.heimrich@nokia.com>
Diffstat (limited to 'tools/extractbinarydata')
-rw-r--r--tools/extractbinarydata/main.cpp65
1 files changed, 34 insertions, 31 deletions
diff --git a/tools/extractbinarydata/main.cpp b/tools/extractbinarydata/main.cpp
index 4b25d3354..68eccf42b 100644
--- a/tools/extractbinarydata/main.cpp
+++ b/tools/extractbinarydata/main.cpp
@@ -127,7 +127,8 @@ int main(int argc, char **argv)
QStringList arguments = app.arguments();
if (arguments.count() < 3) {
- std::cout << "Usage: extractbinarydata [--verbose] maintenance-tool installer-base" << std::endl;
+ std::cout << "Usage: extractbinarydata [--verbose --extract-binarydata] maintenance-tool "
+ "installer-base" << std::endl;
return EXIT_FAILURE;
}
@@ -146,39 +147,41 @@ int main(int argc, char **argv)
return EXIT_FAILURE;
}
- BinaryLayout layout;
- QFile input(arguments.at(1));
- try {
- openForRead(&input, input.fileName());
- layout = BinaryContent::readBinaryLayout(&input, findMagicCookie(&input, MagicCookie));
- } catch (const Error &error) {
- verbose() << error.message() << std::endl;
- return EXIT_FAILURE;
- }
+ if (arguments.contains(QLatin1String("--extract-binarydata"))) {
+ BinaryLayout layout;
+ QFile input(arguments.at(1));
+ try {
+ openForRead(&input, input.fileName());
+ layout = BinaryContent::readBinaryLayout(&input, findMagicCookie(&input, MagicCookie));
+ } catch (const Error &error) {
+ verbose() << error.message() << std::endl;
+ return EXIT_FAILURE;
+ }
- if (layout.magicMarker != MagicUninstallerMarker) {
- std::cout << "Extracting binary data only supported for maintenance tools." << std::endl;
- return EXIT_FAILURE;
- }
+ if (layout.magicMarker != MagicUninstallerMarker) {
+ std::cout << "Extracting binary data only supported for maintenance tools." << std::endl;
+ return EXIT_FAILURE;
+ }
- try {
- KDSaveFile file(QFileInfo(arguments.at(1)).absolutePath() + QDir::separator()
- + QFileInfo(arguments.at(1)).baseName() + QLatin1String(".dat"));
- openForWrite(&file, file.fileName());
- BinaryContent content = BinaryContent::readFromBinary(arguments.at(1));
- writeBinaryDataFile(&file, &input, content.performedOperations(), layout);
- appendInt64(&file, MagicCookieDat);
- file.setPermissions(file.permissions() | QFile::WriteUser | QFile::ReadGroup
- | QFile::ReadOther);
- if (!file.commit(KDSaveFile::OverwriteExistingFile)) {
- throw Error(QString::fromLatin1("Couldn't write binary data to %1. Reason: %2").arg(file
- .fileName(), file.errorString()));
+ try {
+ KDSaveFile file(QFileInfo(arguments.at(1)).absolutePath() + QDir::separator()
+ + QFileInfo(arguments.at(1)).baseName() + QLatin1String(".dat"));
+ openForWrite(&file, file.fileName());
+ BinaryContent content = BinaryContent::readFromBinary(arguments.at(1));
+ writeBinaryDataFile(&file, &input, content.performedOperations(), layout);
+ appendInt64(&file, MagicCookieDat);
+ file.setPermissions(file.permissions() | QFile::WriteUser | QFile::ReadGroup
+ | QFile::ReadOther);
+ if (!file.commit(KDSaveFile::OverwriteExistingFile)) {
+ throw Error(QString::fromLatin1("Couldn't write binary data to %1. Reason: %2").arg(file
+ .fileName(), file.errorString()));
+ }
+ file.close();
+ input.close();
+ } catch (const Error &error) {
+ verbose() << error.message() << std::endl;
+ return EXIT_FAILURE;
}
- file.close();
- input.close();
- } catch (const Error &error) {
- verbose() << error.message() << std::endl;
- return EXIT_FAILURE;
}
}