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>
This commit is contained in:
parent
af27b37b08
commit
eff6dbb306
@ -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));
|
||||
}
|
||||
|
||||
/*!
|
||||
|
Loading…
x
Reference in New Issue
Block a user