summaryrefslogtreecommitdiffstats
path: root/src/gui/text
diff options
context:
space:
mode:
authorPavel Mogilevskiy <pmogilevskiy@gmail.com>2013-02-09 13:56:58 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-02-21 18:19:40 +0100
commit5ac70b848e2cd1c4e5462cd8fe3467c57a749adf (patch)
tree923be8f5a1fb8104f3d0f6e9f1f315f781cc208e /src/gui/text
parentc9e96db7879d793d5ea12b6a0a2d6bce74c3e537 (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 the 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. Cherry picked from qtbase eff6dbb306956f099374e5a0c5942b9e91a81e71 Change-Id: I2180282d235dc998309fc4f7b67f5c0181b78dda Reviewed-by: Vasiliy Sorokin <sorokin.vasiliy@gmail.com> Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Diffstat (limited to 'src/gui/text')
-rw-r--r--src/gui/text/qzip.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/gui/text/qzip.cpp b/src/gui/text/qzip.cpp
index 5c1a5f7415..edc2e76912 100644
--- a/src/gui/text/qzip.cpp
+++ b/src/gui/text/qzip.cpp
@@ -1170,7 +1170,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);
}
/*!
@@ -1192,7 +1192,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();
}
@@ -1203,10 +1203,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());
}
@@ -1217,7 +1217,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));
}
/*!