diff options
author | Pavel Mogylevskiy <pmogilevskiy@gmail.com> | 2013-02-19 02:45:44 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-02-20 16:11:52 +0100 |
commit | eff6dbb306956f099374e5a0c5942b9e91a81e71 (patch) | |
tree | 50287c737a0e828e5c9de7da552d2760c9cef554 | |
parent | af27b37b084d46bb7084633b56feaf3bb6a3ac48 (diff) |
Fix path separators in archives created by QZipWriter
It was not possible to extract data from the archive on OSX
which was created on Windows platform because of wrong
separators. Archive was created on Windows via QZipWriter and
opened on OSX with QZipReader. It consisted of a lots directories
and subdirectories with files. The solution is to use '/' separator
for internal representation.
Change-Id: Ic0837ca184bb6188129d53b587a5df2ec61e4e05
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
-rw-r--r-- | src/gui/text/qzip.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/gui/text/qzip.cpp b/src/gui/text/qzip.cpp index 9e37330381..151b0bcfeb 100644 --- a/src/gui/text/qzip.cpp +++ b/src/gui/text/qzip.cpp @@ -1302,7 +1302,7 @@ QFile::Permissions QZipWriter::creationPermissions() const */ void QZipWriter::addFile(const QString &fileName, const QByteArray &data) { - d->addEntry(QZipWriterPrivate::File, fileName, data); + d->addEntry(QZipWriterPrivate::File, QDir::fromNativeSeparators(fileName), data); } /*! @@ -1324,7 +1324,7 @@ void QZipWriter::addFile(const QString &fileName, QIODevice *device) return; } } - d->addEntry(QZipWriterPrivate::File, fileName, device->readAll()); + d->addEntry(QZipWriterPrivate::File, QDir::fromNativeSeparators(fileName), device->readAll()); if (opened) device->close(); } @@ -1335,10 +1335,10 @@ void QZipWriter::addFile(const QString &fileName, QIODevice *device) */ void QZipWriter::addDirectory(const QString &dirName) { - QString name = dirName; + QString name(QDir::fromNativeSeparators(dirName)); // separator is mandatory - if (!name.endsWith(QDir::separator())) - name.append(QDir::separator()); + if (!name.endsWith(QLatin1Char('/'))) + name.append(QLatin1Char('/')); d->addEntry(QZipWriterPrivate::Directory, name, QByteArray()); } @@ -1349,7 +1349,7 @@ void QZipWriter::addDirectory(const QString &dirName) */ void QZipWriter::addSymLink(const QString &fileName, const QString &destination) { - d->addEntry(QZipWriterPrivate::Symlink, fileName, QFile::encodeName(destination)); + d->addEntry(QZipWriterPrivate::Symlink, QDir::fromNativeSeparators(fileName), QFile::encodeName(destination)); } /*! |