From 2957e28288a472d2e9507762e85939c0a0de4b4d Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Mon, 14 May 2012 15:32:58 +0200 Subject: remove the limitation that archivegen could handle directories only Change-Id: I5e7b6740d6df1b858cee091a1174e8fd64e477a7 Reviewed-by: Niels Weber --- src/libs/installer/lib7z_facade.cpp | 27 +++++++++++++-------------- src/libs/installer/lib7z_facade.h | 4 ++-- 2 files changed, 15 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/libs/installer/lib7z_facade.cpp b/src/libs/installer/lib7z_facade.cpp index 14bfd25a0..da25c6d28 100644 --- a/src/libs/installer/lib7z_facade.cpp +++ b/src/libs/installer/lib7z_facade.cpp @@ -1011,9 +1011,9 @@ public: // TODO! return S_OK; } - void setSource(const QStringList &dir) + void setSourcePaths(const QStringList &paths) { - sourceDir = dir; + sourcePaths = paths; } void setTarget(QIODevice* archive) { @@ -1024,7 +1024,7 @@ private: UpdateCallback* const q; QIODevice* target; - QStringList sourceDir; + QStringList sourcePaths; }; class Lib7z::UpdateCallbackPrivate @@ -1059,9 +1059,9 @@ UpdateCallbackImpl* UpdateCallback::impl() return d->impl(); } -void UpdateCallback::setSource(const QStringList &dir) +void UpdateCallback::setSourcePaths(const QStringList &paths) { - d->impl()->setSource(dir); + d->impl()->setSourcePaths(paths); } void UpdateCallback::setTarget(QIODevice* target) @@ -1134,7 +1134,7 @@ void ExtractItemJob::setTarget(QIODevice* dev) d->target = dev; } -void Lib7z::createArchive(QIODevice* archive, const QStringList &sourceDirectories, UpdateCallback* callback) +void Lib7z::createArchive(QIODevice* archive, const QStringList &sourcePaths, UpdateCallback* callback) { assert(archive); @@ -1142,8 +1142,7 @@ void Lib7z::createArchive(QIODevice* archive, const QStringList &sourceDirectori if (!callback) callback = dummyCallback.get(); - try - { + try { std::auto_ptr< CCodecs > codecs(new CCodecs); throwIfNotOK(codecs->Load(), QObject::tr("Could not load codecs")); @@ -1157,11 +1156,11 @@ void Lib7z::createArchive(QIODevice* archive, const QStringList &sourceDirectori const QString tempFile = generateTempFileName(); NWildcard::CCensor censor; - foreach(QString dir, sourceDirectories) { - const UString sourceDirectoryPath = QString2UString(QDir::toNativeSeparators(dir)); - if (UString2QString(sourceDirectoryPath) != QDir::toNativeSeparators(dir)) - throw UString2QString(sourceDirectoryPath).toLatin1().data(); - censor.AddItem(true, sourceDirectoryPath, true); + foreach (QString dir, sourcePaths) { + const UString sourcePath = QString2UString(QDir::toNativeSeparators(dir)); + if (UString2QString(sourcePath) != QDir::toNativeSeparators(dir)) + throw UString2QString(sourcePath).toLatin1().data(); + censor.AddItem(true, sourcePath, true); } CUpdateOptions options; @@ -1177,7 +1176,7 @@ void Lib7z::createArchive(QIODevice* archive, const QStringList &sourceDirectori CUpdateErrorInfo errorInfo; callback->setTarget(archive); - callback->setSource(sourceDirectories); + callback->setSourcePaths(sourcePaths); const HRESULT res = UpdateArchive(codecs.get(), censor, options, errorInfo, 0, callback->impl()); if (res != S_OK || !QFile::exists(tempFile)) throw SevenZipException(QObject::tr("Could not create archive %1").arg(tempFile)); diff --git a/src/libs/installer/lib7z_facade.h b/src/libs/installer/lib7z_facade.h index 58774df11..afdc85cfc 100644 --- a/src/libs/installer/lib7z_facade.h +++ b/src/libs/installer/lib7z_facade.h @@ -96,7 +96,7 @@ namespace Lib7z { virtual ~UpdateCallback(); void setTarget( QIODevice* archive ); - void setSource( const QStringList& dir ); + void setSourcePaths( const QStringList& paths ); virtual UpdateCallbackImpl* impl(); @@ -130,7 +130,7 @@ namespace Lib7z { /* * @thows Lib7z::SevenZipException */ - void INSTALLER_EXPORT createArchive( QIODevice* archive, const QStringList& sourceDirectory, UpdateCallback* callback = 0 ); + void INSTALLER_EXPORT createArchive( QIODevice* archive, const QStringList& sourcePaths, UpdateCallback* callback = 0 ); /* * @throws Lib7z::SevenZipException -- cgit v1.2.3