mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-28 01:23:55 -07:00
Adjust to rebase.
Took 7 minutes
This commit is contained in:
parent
e08f28b110
commit
be00edd581
14 changed files with 1315 additions and 1283 deletions
|
|
@ -32,6 +32,7 @@ set(cockatrice_SOURCES
|
||||||
src/interface/widgets/dialogs/dlg_forgot_password_challenge.cpp
|
src/interface/widgets/dialogs/dlg_forgot_password_challenge.cpp
|
||||||
src/interface/widgets/dialogs/dlg_forgot_password_request.cpp
|
src/interface/widgets/dialogs/dlg_forgot_password_request.cpp
|
||||||
src/interface/widgets/dialogs/dlg_forgot_password_reset.cpp
|
src/interface/widgets/dialogs/dlg_forgot_password_reset.cpp
|
||||||
|
src/interface/widgets/dialogs/dlg_import_precons.cpp
|
||||||
src/interface/widgets/dialogs/dlg_load_deck.cpp
|
src/interface/widgets/dialogs/dlg_load_deck.cpp
|
||||||
src/interface/widgets/dialogs/dlg_load_deck_from_clipboard.cpp
|
src/interface/widgets/dialogs/dlg_load_deck_from_clipboard.cpp
|
||||||
src/interface/widgets/dialogs/dlg_load_deck_from_website.cpp
|
src/interface/widgets/dialogs/dlg_load_deck_from_website.cpp
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
#include "dlg_import_precons.h"
|
#include "dlg_import_precons.h"
|
||||||
|
|
||||||
#include "../deck/deck_loader.h"
|
#include "../../deck_loader/deck_loader.h"
|
||||||
#include "../settings/cache_settings.h"
|
#include "../settings/cache_settings.h"
|
||||||
|
#include "libcockatrice/deck_list/deck_list_card_node.h"
|
||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
|
|
@ -11,7 +12,7 @@
|
||||||
#include <QNetworkReply>
|
#include <QNetworkReply>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QTemporaryDir>
|
#include <QTemporaryDir>
|
||||||
#include <decklist.h>
|
#include <libcockatrice/deck_list/deck_list.h>
|
||||||
|
|
||||||
#ifdef HAS_LZMA
|
#ifdef HAS_LZMA
|
||||||
#include "../../src/utility/external/lzma/decompress.h"
|
#include "../../src/utility/external/lzma/decompress.h"
|
||||||
|
|
@ -309,7 +310,7 @@ bool LoadPreconsPage::parsePreconsFromByteArray(const QByteArray &data, QString
|
||||||
|
|
||||||
qInfo() << "Importing '" << deckName << "' from" << shortName;
|
qInfo() << "Importing '" << deckName << "' from" << shortName;
|
||||||
|
|
||||||
auto *precon = new DeckLoader();
|
auto *precon = new DeckLoader(this);
|
||||||
|
|
||||||
for (const auto &cardVal : mainBoard) {
|
for (const auto &cardVal : mainBoard) {
|
||||||
QJsonObject cardObj = cardVal.toObject();
|
QJsonObject cardObj = cardVal.toObject();
|
||||||
|
|
@ -319,20 +320,20 @@ bool LoadPreconsPage::parsePreconsFromByteArray(const QByteArray &data, QString
|
||||||
int count = cardObj.value("count").toInt();
|
int count = cardObj.value("count").toInt();
|
||||||
QString scryfallId = cardObj.value("identifiers").toObject().value("scryfallId").toString();
|
QString scryfallId = cardObj.value("identifiers").toObject().value("scryfallId").toString();
|
||||||
|
|
||||||
DecklistCardNode *addedCard = precon->addCard(name, "main", -1, setCode, number, scryfallId);
|
DecklistCardNode *addedCard = precon->getDeckList()->addCard(name, "main", -1, setCode, number, scryfallId);
|
||||||
if (count != 1) {
|
if (count != 1) {
|
||||||
addedCard->setNumber(count);
|
addedCard->setNumber(count);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
precon->setName(deckName);
|
precon->getDeckList()->setName(deckName);
|
||||||
|
|
||||||
QJsonArray commanderArray = preconData.value("commander").toArray();
|
QJsonArray commanderArray = preconData.value("commander").toArray();
|
||||||
if (!commanderArray.isEmpty()) {
|
if (!commanderArray.isEmpty()) {
|
||||||
QJsonObject commanderObj = commanderArray.first().toObject();
|
QJsonObject commanderObj = commanderArray.first().toObject();
|
||||||
QString commanderName = commanderObj.value("name").toString();
|
QString commanderName = commanderObj.value("name").toString();
|
||||||
QString commanderId = commanderObj.value("identifiers").toObject().value("scryfallId").toString();
|
QString commanderId = commanderObj.value("identifiers").toObject().value("scryfallId").toString();
|
||||||
precon->setBannerCard(QPair<QString, QString>(commanderName, commanderId));
|
precon->getDeckList()->setBannerCard({commanderName, commanderId});
|
||||||
} else {
|
} else {
|
||||||
qInfo() << "No commander data found.";
|
qInfo() << "No commander data found.";
|
||||||
}
|
}
|
||||||
|
|
@ -340,7 +341,7 @@ bool LoadPreconsPage::parsePreconsFromByteArray(const QByteArray &data, QString
|
||||||
QString dirPath = QDir::cleanPath(folderPath + QDir::separator() + deckType + QDir::separator() +
|
QString dirPath = QDir::cleanPath(folderPath + QDir::separator() + deckType + QDir::separator() +
|
||||||
QString::number(releaseYear) + QDir::separator() + shortName);
|
QString::number(releaseYear) + QDir::separator() + shortName);
|
||||||
|
|
||||||
QString fullPath = QDir(dirPath).filePath(precon->getName());
|
QString fullPath = QDir(dirPath).filePath(precon->getDeckList()->getName());
|
||||||
|
|
||||||
QDir dir;
|
QDir dir;
|
||||||
if (!dir.exists(dirPath)) {
|
if (!dir.exists(dirPath)) {
|
||||||
|
|
@ -350,7 +351,7 @@ bool LoadPreconsPage::parsePreconsFromByteArray(const QByteArray &data, QString
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (precon->getCardList().length() > 1) {
|
if (precon->getDeckList()->getCardList().length() > 1) {
|
||||||
precon->saveToFile(fullPath + ".cod", DeckLoader::CockatriceFormat);
|
precon->saveToFile(fullPath + ".cod", DeckLoader::CockatriceFormat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@
|
||||||
#include "../main.h"
|
#include "../main.h"
|
||||||
#include "logger.h"
|
#include "logger.h"
|
||||||
#include "version_string.h"
|
#include "version_string.h"
|
||||||
|
#include "widgets/dialogs/dlg_import_precons.h"
|
||||||
#include "widgets/utility/get_text_with_max.h"
|
#include "widgets/utility/get_text_with_max.h"
|
||||||
|
|
||||||
#include <QAction>
|
#include <QAction>
|
||||||
|
|
|
||||||
|
|
@ -9,16 +9,13 @@
|
||||||
* You can do whatever you want with this file.
|
* You can do whatever you want with this file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <lzma.h>
|
|
||||||
#include <QDebug>
|
|
||||||
|
|
||||||
#include "decompress.h"
|
#include "decompress.h"
|
||||||
|
|
||||||
XzDecompressor::XzDecompressor(QObject *parent)
|
#include <QDebug>
|
||||||
: QObject(parent)
|
#include <lzma.h>
|
||||||
{
|
|
||||||
|
|
||||||
|
XzDecompressor::XzDecompressor(QObject *parent) : QObject(parent)
|
||||||
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
bool XzDecompressor::decompress(QBuffer *in, QBuffer *out)
|
bool XzDecompressor::decompress(QBuffer *in, QBuffer *out)
|
||||||
|
|
@ -74,8 +71,7 @@ bool XzDecompressor::init_decoder(lzma_stream *strm)
|
||||||
// (src/liblzma/api/lzma/container.h in the source package or e.g.
|
// (src/liblzma/api/lzma/container.h in the source package or e.g.
|
||||||
// /usr/include/lzma/container.h depending on the install prefix)
|
// /usr/include/lzma/container.h depending on the install prefix)
|
||||||
// for details.
|
// for details.
|
||||||
lzma_ret ret = lzma_stream_decoder(
|
lzma_ret ret = lzma_stream_decoder(strm, UINT64_MAX, LZMA_CONCATENATED);
|
||||||
strm, UINT64_MAX, LZMA_CONCATENATED);
|
|
||||||
|
|
||||||
// Return successfully if the initialization went fine.
|
// Return successfully if the initialization went fine.
|
||||||
if (ret == LZMA_OK)
|
if (ret == LZMA_OK)
|
||||||
|
|
@ -114,7 +110,6 @@ bool XzDecompressor::init_decoder(lzma_stream *strm)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool XzDecompressor::internal_decompress(lzma_stream *strm, QBuffer *in, QBuffer *out)
|
bool XzDecompressor::internal_decompress(lzma_stream *strm, QBuffer *in, QBuffer *out)
|
||||||
{
|
{
|
||||||
// When LZMA_CONCATENATED flag was used when initializing the decoder,
|
// When LZMA_CONCATENATED flag was used when initializing the decoder,
|
||||||
|
|
@ -247,4 +242,3 @@ bool XzDecompressor::internal_decompress(lzma_stream *strm, QBuffer *in, QBuffer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
#ifndef XZ_DECOMPRESS_H
|
#ifndef XZ_DECOMPRESS_H
|
||||||
#define XZ_DECOMPRESS_H
|
#define XZ_DECOMPRESS_H
|
||||||
|
|
||||||
#include <lzma.h>
|
|
||||||
#include <QBuffer>
|
#include <QBuffer>
|
||||||
|
#include <lzma.h>
|
||||||
|
|
||||||
class XzDecompressor : public QObject
|
class XzDecompressor : public QObject
|
||||||
{
|
{
|
||||||
|
|
@ -11,6 +11,7 @@ public:
|
||||||
XzDecompressor(QObject *parent = 0);
|
XzDecompressor(QObject *parent = 0);
|
||||||
~XzDecompressor() {};
|
~XzDecompressor() {};
|
||||||
bool decompress(QBuffer *in, QBuffer *out);
|
bool decompress(QBuffer *in, QBuffer *out);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool init_decoder(lzma_stream *strm);
|
bool init_decoder(lzma_stream *strm);
|
||||||
bool internal_decompress(lzma_stream *strm, QBuffer *in, QBuffer *out);
|
bool internal_decompress(lzma_stream *strm, QBuffer *in, QBuffer *out);
|
||||||
|
|
|
||||||
17
cockatrice/src/utility/external/qt-json/json.h
vendored
17
cockatrice/src/utility/external/qt-json/json.h
vendored
|
|
@ -33,8 +33,8 @@
|
||||||
#ifndef JSON_H
|
#ifndef JSON_H
|
||||||
#define JSON_H
|
#define JSON_H
|
||||||
|
|
||||||
#include <QVariant>
|
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
#include <QVariant>
|
||||||
|
|
||||||
namespace QtJson
|
namespace QtJson
|
||||||
{
|
{
|
||||||
|
|
@ -110,8 +110,7 @@ class Json
|
||||||
*
|
*
|
||||||
* \return QVariant The parsed value
|
* \return QVariant The parsed value
|
||||||
*/
|
*/
|
||||||
static QVariant parseValue(const QString &json, int &index,
|
static QVariant parseValue(const QString &json, int &index, bool &success);
|
||||||
bool &success);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses an object starting from index
|
* Parses an object starting from index
|
||||||
|
|
@ -122,8 +121,7 @@ class Json
|
||||||
*
|
*
|
||||||
* \return QVariant The parsed object map
|
* \return QVariant The parsed object map
|
||||||
*/
|
*/
|
||||||
static QVariant parseObject(const QString &json, int &index,
|
static QVariant parseObject(const QString &json, int &index, bool &success);
|
||||||
bool &success);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses an array starting from index
|
* Parses an array starting from index
|
||||||
|
|
@ -134,8 +132,7 @@ class Json
|
||||||
*
|
*
|
||||||
* \return QVariant The parsed variant array
|
* \return QVariant The parsed variant array
|
||||||
*/
|
*/
|
||||||
static QVariant parseArray(const QString &json, int &index,
|
static QVariant parseArray(const QString &json, int &index, bool &success);
|
||||||
bool &success);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses a string starting from index
|
* Parses a string starting from index
|
||||||
|
|
@ -146,8 +143,7 @@ class Json
|
||||||
*
|
*
|
||||||
* \return QVariant The parsed string
|
* \return QVariant The parsed string
|
||||||
*/
|
*/
|
||||||
static QVariant parseString(const QString &json, int &index,
|
static QVariant parseString(const QString &json, int &index, bool &success);
|
||||||
bool &success);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses a number starting from index
|
* Parses a number starting from index
|
||||||
|
|
@ -198,7 +194,6 @@ class Json
|
||||||
static int nextToken(const QString &json, int &index);
|
static int nextToken(const QString &json, int &index);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // namespace QtJson
|
||||||
} //end namespace
|
|
||||||
|
|
||||||
#endif // JSON_H
|
#endif // JSON_H
|
||||||
|
|
|
||||||
142
cockatrice/src/utility/external/zip/unzip.cpp
vendored
Executable file → Normal file
142
cockatrice/src/utility/external/zip/unzip.cpp
vendored
Executable file → Normal file
|
|
@ -26,6 +26,7 @@
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
#include "unzip.h"
|
#include "unzip.h"
|
||||||
|
|
||||||
#include "unzip_p.h"
|
#include "unzip_p.h"
|
||||||
#include "zipentry_p.h"
|
#include "zipentry_p.h"
|
||||||
|
|
||||||
|
|
@ -64,7 +65,8 @@
|
||||||
\value UnZip::CreateDirFailed Could not create a directory.
|
\value UnZip::CreateDirFailed Could not create a directory.
|
||||||
\value UnZip::InvalidDevice A null device has been passed as parameter.
|
\value UnZip::InvalidDevice A null device has been passed as parameter.
|
||||||
\value UnZip::InvalidArchive This is not a valid (or supported) ZIP archive.
|
\value UnZip::InvalidArchive This is not a valid (or supported) ZIP archive.
|
||||||
\value UnZip::HeaderConsistencyError Local header record info does not match with the central directory record info. The archive may be corrupted.
|
\value UnZip::HeaderConsistencyError Local header record info does not match with the central directory record info.
|
||||||
|
The archive may be corrupted.
|
||||||
|
|
||||||
\value UnZip::Skip Internal use only.
|
\value UnZip::Skip Internal use only.
|
||||||
\value UnZip::SkipAll Internal use only.
|
\value UnZip::SkipAll Internal use only.
|
||||||
|
|
@ -137,7 +139,6 @@
|
||||||
|
|
||||||
OSDAB_BEGIN_NAMESPACE(Zip)
|
OSDAB_BEGIN_NAMESPACE(Zip)
|
||||||
|
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
ZipEntry
|
ZipEntry
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
@ -153,25 +154,14 @@ UnZip::ZipEntry::ZipEntry()
|
||||||
encrypted = false;
|
encrypted = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
Private interface
|
Private interface
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
//! \internal
|
//! \internal
|
||||||
UnzipPrivate::UnzipPrivate() :
|
UnzipPrivate::UnzipPrivate()
|
||||||
password(),
|
: password(), skipAllEncrypted(false), headers(0), device(0), file(0), uBuffer(0), crcTable(0), cdOffset(0),
|
||||||
skipAllEncrypted(false),
|
eocdOffset(0), cdEntryCount(0), unsupportedEntryCount(0), comment()
|
||||||
headers(0),
|
|
||||||
device(0),
|
|
||||||
file(0),
|
|
||||||
uBuffer(0),
|
|
||||||
crcTable(0),
|
|
||||||
cdOffset(0),
|
|
||||||
eocdOffset(0),
|
|
||||||
cdEntryCount(0),
|
|
||||||
unsupportedEntryCount(0),
|
|
||||||
comment()
|
|
||||||
{
|
{
|
||||||
uBuffer = (unsigned char *)buffer1;
|
uBuffer = (unsigned char *)buffer1;
|
||||||
crcTable = (quint32 *)get_crc_table();
|
crcTable = (quint32 *)get_crc_table();
|
||||||
|
|
@ -302,8 +292,7 @@ UnZip::ErrorCode UnzipPrivate::parseLocalHeaderRecord(const QString& path, const
|
||||||
checkFailed = entry.modDate[0] != uBuffer[UNZIP_LH_OFF_MODD];
|
checkFailed = entry.modDate[0] != uBuffer[UNZIP_LH_OFF_MODD];
|
||||||
if (!checkFailed)
|
if (!checkFailed)
|
||||||
checkFailed = entry.modDate[1] != uBuffer[UNZIP_LH_OFF_MODD + 1];
|
checkFailed = entry.modDate[1] != uBuffer[UNZIP_LH_OFF_MODD + 1];
|
||||||
if (!hasDataDescriptor)
|
if (!hasDataDescriptor) {
|
||||||
{
|
|
||||||
if (!checkFailed)
|
if (!checkFailed)
|
||||||
checkFailed = entry.crc != getULong(uBuffer, UNZIP_LH_OFF_CRC32);
|
checkFailed = entry.crc != getULong(uBuffer, UNZIP_LH_OFF_CRC32);
|
||||||
if (!checkFailed)
|
if (!checkFailed)
|
||||||
|
|
@ -361,11 +350,9 @@ UnZip::ErrorCode UnzipPrivate::parseLocalHeaderRecord(const QString& path, const
|
||||||
}
|
}
|
||||||
|
|
||||||
// DD: crc, compressed size, uncompressed size
|
// DD: crc, compressed size, uncompressed size
|
||||||
if (
|
if (entry.crc != getULong((unsigned char *)buffer2, UNZIP_DD_OFF_CRC32) ||
|
||||||
entry.crc != getULong((unsigned char*)buffer2, UNZIP_DD_OFF_CRC32) ||
|
|
||||||
entry.szComp != getULong((unsigned char *)buffer2, UNZIP_DD_OFF_CSIZE) ||
|
entry.szComp != getULong((unsigned char *)buffer2, UNZIP_DD_OFF_CSIZE) ||
|
||||||
entry.szUncomp != getULong((unsigned char*)buffer2, UNZIP_DD_OFF_USIZE)
|
entry.szUncomp != getULong((unsigned char *)buffer2, UNZIP_DD_OFF_USIZE))
|
||||||
)
|
|
||||||
return UnZip::HeaderConsistencyError;
|
return UnZip::HeaderConsistencyError;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -659,8 +646,10 @@ void UnzipPrivate::do_closeArchive()
|
||||||
}
|
}
|
||||||
|
|
||||||
//! \internal
|
//! \internal
|
||||||
UnZip::ErrorCode UnzipPrivate::extractFile(const QString& path, const ZipEntryP& entry,
|
UnZip::ErrorCode UnzipPrivate::extractFile(const QString &path,
|
||||||
const QDir& dir, UnZip::ExtractionOptions options)
|
const ZipEntryP &entry,
|
||||||
|
const QDir &dir,
|
||||||
|
UnZip::ExtractionOptions options)
|
||||||
{
|
{
|
||||||
QString name(path);
|
QString name(path);
|
||||||
QString dirname;
|
QString dirname;
|
||||||
|
|
@ -742,8 +731,10 @@ UnZip::ErrorCode UnzipPrivate::extractFile(const QString& path, const ZipEntryP&
|
||||||
}
|
}
|
||||||
|
|
||||||
//! \internal
|
//! \internal
|
||||||
UnZip::ErrorCode UnzipPrivate::extractStoredFile(
|
UnZip::ErrorCode UnzipPrivate::extractStoredFile(const quint32 szComp,
|
||||||
const quint32 szComp, quint32** keys, quint32& myCRC, QIODevice* outDev,
|
quint32 **keys,
|
||||||
|
quint32 &myCRC,
|
||||||
|
QIODevice *outDev,
|
||||||
UnZip::ExtractionOptions options)
|
UnZip::ExtractionOptions options)
|
||||||
{
|
{
|
||||||
const bool verify = (options & UnZip::VerifyOnly);
|
const bool verify = (options & UnZip::VerifyOnly);
|
||||||
|
|
@ -773,14 +764,14 @@ UnZip::ErrorCode UnzipPrivate::extractStoredFile(
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (read < 0)
|
return (read < 0) ? UnZip::ReadFailed : UnZip::Ok;
|
||||||
? UnZip::ReadFailed
|
|
||||||
: UnZip::Ok;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//! \internal
|
//! \internal
|
||||||
UnZip::ErrorCode UnzipPrivate::inflateFile(
|
UnZip::ErrorCode UnzipPrivate::inflateFile(const quint32 szComp,
|
||||||
const quint32 szComp, quint32** keys, quint32& myCRC, QIODevice* outDev,
|
quint32 **keys,
|
||||||
|
quint32 &myCRC,
|
||||||
|
QIODevice *outDev,
|
||||||
UnZip::ExtractionOptions options)
|
UnZip::ExtractionOptions options)
|
||||||
{
|
{
|
||||||
const bool verify = (options & UnZip::VerifyOnly);
|
const bool verify = (options & UnZip::VerifyOnly);
|
||||||
|
|
@ -832,7 +823,8 @@ UnZip::ErrorCode UnzipPrivate::inflateFile(
|
||||||
// Run inflate() on input until output buffer not full
|
// Run inflate() on input until output buffer not full
|
||||||
do {
|
do {
|
||||||
zstr.avail_out = UNZIP_READ_BUFFER;
|
zstr.avail_out = UNZIP_READ_BUFFER;
|
||||||
zstr.next_out = (Bytef*) buffer2;;
|
zstr.next_out = (Bytef *)buffer2;
|
||||||
|
;
|
||||||
|
|
||||||
zret = inflate(&zstr, Z_NO_FLUSH);
|
zret = inflate(&zstr, Z_NO_FLUSH);
|
||||||
|
|
||||||
|
|
@ -842,8 +834,7 @@ UnZip::ErrorCode UnzipPrivate::inflateFile(
|
||||||
case Z_MEM_ERROR:
|
case Z_MEM_ERROR:
|
||||||
inflateEnd(&zstr);
|
inflateEnd(&zstr);
|
||||||
return UnZip::WriteFailed;
|
return UnZip::WriteFailed;
|
||||||
default:
|
default:;
|
||||||
;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
szDecomp = UNZIP_READ_BUFFER - zstr.avail_out;
|
szDecomp = UNZIP_READ_BUFFER - zstr.avail_out;
|
||||||
|
|
@ -865,8 +856,10 @@ UnZip::ErrorCode UnzipPrivate::inflateFile(
|
||||||
}
|
}
|
||||||
|
|
||||||
//! \internal \p outDev is null if the VerifyOnly option is set
|
//! \internal \p outDev is null if the VerifyOnly option is set
|
||||||
UnZip::ErrorCode UnzipPrivate::extractFile(const QString& path, const ZipEntryP& entry,
|
UnZip::ErrorCode UnzipPrivate::extractFile(const QString &path,
|
||||||
QIODevice* outDev, UnZip::ExtractionOptions options)
|
const ZipEntryP &entry,
|
||||||
|
QIODevice *outDev,
|
||||||
|
UnZip::ExtractionOptions options)
|
||||||
{
|
{
|
||||||
const bool verify = (options & UnZip::VerifyOnly);
|
const bool verify = (options & UnZip::VerifyOnly);
|
||||||
|
|
||||||
|
|
@ -889,8 +882,7 @@ UnZip::ErrorCode UnzipPrivate::extractFile(const QString& path, const ZipEntryP&
|
||||||
quint32 szComp = entry.szComp;
|
quint32 szComp = entry.szComp;
|
||||||
if (entry.isEncrypted()) {
|
if (entry.isEncrypted()) {
|
||||||
UnZip::ErrorCode e = testPassword(keys, path, entry);
|
UnZip::ErrorCode e = testPassword(keys, path, entry);
|
||||||
if (e != UnZip::Ok)
|
if (e != UnZip::Ok) {
|
||||||
{
|
|
||||||
qDebug() << QString("Unable to decrypt %1").arg(path);
|
qDebug() << QString("Unable to decrypt %1").arg(path);
|
||||||
return e;
|
return e;
|
||||||
} //! Encryption header size
|
} //! Encryption header size
|
||||||
|
|
@ -1081,7 +1073,6 @@ QDateTime UnzipPrivate::convertDateTime(const unsigned char date[2], const unsig
|
||||||
return dt;
|
return dt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
Public interface
|
Public interface
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
@ -1170,24 +1161,55 @@ QString UnZip::archiveComment() const
|
||||||
*/
|
*/
|
||||||
QString UnZip::formatError(UnZip::ErrorCode c) const
|
QString UnZip::formatError(UnZip::ErrorCode c) const
|
||||||
{
|
{
|
||||||
switch (c)
|
switch (c) {
|
||||||
{
|
case Ok:
|
||||||
case Ok: return QCoreApplication::translate("UnZip", "ZIP operation completed successfully."); break;
|
return QCoreApplication::translate("UnZip", "ZIP operation completed successfully.");
|
||||||
case ZlibInit: return QCoreApplication::translate("UnZip", "Failed to initialize or load zlib library."); break;
|
break;
|
||||||
case ZlibError: return QCoreApplication::translate("UnZip", "zlib library error."); break;
|
case ZlibInit:
|
||||||
case OpenFailed: return QCoreApplication::translate("UnZip", "Unable to create or open file."); break;
|
return QCoreApplication::translate("UnZip", "Failed to initialize or load zlib library.");
|
||||||
case PartiallyCorrupted: return QCoreApplication::translate("UnZip", "Partially corrupted archive. Some files might be extracted."); break;
|
break;
|
||||||
case Corrupted: return QCoreApplication::translate("UnZip", "Corrupted archive."); break;
|
case ZlibError:
|
||||||
case WrongPassword: return QCoreApplication::translate("UnZip", "Wrong password."); break;
|
return QCoreApplication::translate("UnZip", "zlib library error.");
|
||||||
case NoOpenArchive: return QCoreApplication::translate("UnZip", "No archive has been created yet."); break;
|
break;
|
||||||
case FileNotFound: return QCoreApplication::translate("UnZip", "File or directory does not exist."); break;
|
case OpenFailed:
|
||||||
case ReadFailed: return QCoreApplication::translate("UnZip", "File read error."); break;
|
return QCoreApplication::translate("UnZip", "Unable to create or open file.");
|
||||||
case WriteFailed: return QCoreApplication::translate("UnZip", "File write error."); break;
|
break;
|
||||||
case SeekFailed: return QCoreApplication::translate("UnZip", "File seek error."); break;
|
case PartiallyCorrupted:
|
||||||
case CreateDirFailed: return QCoreApplication::translate("UnZip", "Unable to create a directory."); break;
|
return QCoreApplication::translate("UnZip", "Partially corrupted archive. Some files might be extracted.");
|
||||||
case InvalidDevice: return QCoreApplication::translate("UnZip", "Invalid device."); break;
|
break;
|
||||||
case InvalidArchive: return QCoreApplication::translate("UnZip", "Invalid or incompatible zip archive."); break;
|
case Corrupted:
|
||||||
case HeaderConsistencyError: return QCoreApplication::translate("UnZip", "Inconsistent headers. Archive might be corrupted."); break;
|
return QCoreApplication::translate("UnZip", "Corrupted archive.");
|
||||||
|
break;
|
||||||
|
case WrongPassword:
|
||||||
|
return QCoreApplication::translate("UnZip", "Wrong password.");
|
||||||
|
break;
|
||||||
|
case NoOpenArchive:
|
||||||
|
return QCoreApplication::translate("UnZip", "No archive has been created yet.");
|
||||||
|
break;
|
||||||
|
case FileNotFound:
|
||||||
|
return QCoreApplication::translate("UnZip", "File or directory does not exist.");
|
||||||
|
break;
|
||||||
|
case ReadFailed:
|
||||||
|
return QCoreApplication::translate("UnZip", "File read error.");
|
||||||
|
break;
|
||||||
|
case WriteFailed:
|
||||||
|
return QCoreApplication::translate("UnZip", "File write error.");
|
||||||
|
break;
|
||||||
|
case SeekFailed:
|
||||||
|
return QCoreApplication::translate("UnZip", "File seek error.");
|
||||||
|
break;
|
||||||
|
case CreateDirFailed:
|
||||||
|
return QCoreApplication::translate("UnZip", "Unable to create a directory.");
|
||||||
|
break;
|
||||||
|
case InvalidDevice:
|
||||||
|
return QCoreApplication::translate("UnZip", "Invalid device.");
|
||||||
|
break;
|
||||||
|
case InvalidArchive:
|
||||||
|
return QCoreApplication::translate("UnZip", "Invalid or incompatible zip archive.");
|
||||||
|
break;
|
||||||
|
case HeaderConsistencyError:
|
||||||
|
return QCoreApplication::translate("UnZip", "Inconsistent headers. Archive might be corrupted.");
|
||||||
|
break;
|
||||||
default:;
|
default:;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1219,8 +1241,7 @@ QList<UnZip::ZipEntry> UnZip::entryList() const
|
||||||
if (!d->headers)
|
if (!d->headers)
|
||||||
return list;
|
return list;
|
||||||
|
|
||||||
for (QMap<QString,ZipEntryP*>::ConstIterator it = d->headers->constBegin();
|
for (QMap<QString, ZipEntryP *>::ConstIterator it = d->headers->constBegin(); it != d->headers->constEnd(); ++it) {
|
||||||
it != d->headers->constEnd(); ++it) {
|
|
||||||
const ZipEntryP *entry = it.value();
|
const ZipEntryP *entry = it.value();
|
||||||
Q_ASSERT(entry != 0);
|
Q_ASSERT(entry != 0);
|
||||||
|
|
||||||
|
|
@ -1301,8 +1322,7 @@ UnZip::ErrorCode UnZip::extractAll(const QDir& dir, ExtractionOptions options)
|
||||||
skip = true;
|
skip = true;
|
||||||
d->skipAllEncrypted = true;
|
d->skipAllEncrypted = true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:;
|
||||||
;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ec != Ok && !skip) {
|
if (ec != Ok && !skip) {
|
||||||
|
|
|
||||||
20
cockatrice/src/utility/external/zip/unzip_p.h
vendored
Executable file → Normal file
20
cockatrice/src/utility/external/zip/unzip_p.h
vendored
Executable file → Normal file
|
|
@ -95,8 +95,10 @@ public:
|
||||||
|
|
||||||
void closeArchive();
|
void closeArchive();
|
||||||
|
|
||||||
UnZip::ErrorCode extractFile(const QString& path, const ZipEntryP& entry, const QDir& dir, UnZip::ExtractionOptions options);
|
UnZip::ErrorCode
|
||||||
UnZip::ErrorCode extractFile(const QString& path, const ZipEntryP& entry, QIODevice* device, UnZip::ExtractionOptions options);
|
extractFile(const QString &path, const ZipEntryP &entry, const QDir &dir, UnZip::ExtractionOptions options);
|
||||||
|
UnZip::ErrorCode
|
||||||
|
extractFile(const QString &path, const ZipEntryP &entry, QIODevice *device, UnZip::ExtractionOptions options);
|
||||||
|
|
||||||
UnZip::ErrorCode testPassword(quint32 *keys, const QString &_file, const ZipEntryP &header);
|
UnZip::ErrorCode testPassword(quint32 *keys, const QString &_file, const ZipEntryP &header);
|
||||||
bool testKeys(const ZipEntryP &header, quint32 *keys);
|
bool testKeys(const ZipEntryP &header, quint32 *keys);
|
||||||
|
|
@ -118,10 +120,16 @@ private slots:
|
||||||
void deviceDestroyed(QObject *);
|
void deviceDestroyed(QObject *);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
UnZip::ErrorCode extractStoredFile(const quint32 szComp, quint32** keys,
|
UnZip::ErrorCode extractStoredFile(const quint32 szComp,
|
||||||
quint32& myCRC, QIODevice* outDev, UnZip::ExtractionOptions options);
|
quint32 **keys,
|
||||||
UnZip::ErrorCode inflateFile(const quint32 szComp, quint32** keys,
|
quint32 &myCRC,
|
||||||
quint32& myCRC, QIODevice* outDev, UnZip::ExtractionOptions options);
|
QIODevice *outDev,
|
||||||
|
UnZip::ExtractionOptions options);
|
||||||
|
UnZip::ErrorCode inflateFile(const quint32 szComp,
|
||||||
|
quint32 **keys,
|
||||||
|
quint32 &myCRC,
|
||||||
|
QIODevice *outDev,
|
||||||
|
UnZip::ExtractionOptions options);
|
||||||
void do_closeArchive();
|
void do_closeArchive();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
246
cockatrice/src/utility/external/zip/zip.cpp
vendored
Executable file → Normal file
246
cockatrice/src/utility/external/zip/zip.cpp
vendored
Executable file → Normal file
|
|
@ -26,12 +26,11 @@
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
#include "zip.h"
|
#include "zip.h"
|
||||||
|
|
||||||
#include "zip_p.h"
|
#include "zip_p.h"
|
||||||
#include "zipentry_p.h"
|
#include "zipentry_p.h"
|
||||||
|
|
||||||
// we only use this to seed the random number generator
|
// we only use this to seed the random number generator
|
||||||
#include <ctime>
|
|
||||||
|
|
||||||
#include <QtCore/QCoreApplication>
|
#include <QtCore/QCoreApplication>
|
||||||
#include <QtCore/QDateTime>
|
#include <QtCore/QDateTime>
|
||||||
#include <QtCore/QDir>
|
#include <QtCore/QDir>
|
||||||
|
|
@ -39,11 +38,11 @@
|
||||||
#include <QtCore/QMap>
|
#include <QtCore/QMap>
|
||||||
#include <QtCore/QString>
|
#include <QtCore/QString>
|
||||||
#include <QtCore/QStringList>
|
#include <QtCore/QStringList>
|
||||||
|
#include <ctime>
|
||||||
|
|
||||||
// You can remove this #include if you replace the qDebug() statements.
|
// You can remove this #include if you replace the qDebug() statements.
|
||||||
#include <QtCore/QtDebug>
|
#include <QtCore/QtDebug>
|
||||||
|
|
||||||
|
|
||||||
/*! #define OSDAB_ZIP_NO_PNG_RLE to disable the use of Z_RLE compression strategy with
|
/*! #define OSDAB_ZIP_NO_PNG_RLE to disable the use of Z_RLE compression strategy with
|
||||||
PNG files (achieves slightly better compression levels according to the authors).
|
PNG files (achieves slightly better compression levels according to the authors).
|
||||||
*/
|
*/
|
||||||
|
|
@ -231,13 +230,17 @@
|
||||||
\value Zip::AutoFull Use both CPU and MIME type detection.
|
\value Zip::AutoFull Use both CPU and MIME type detection.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace {
|
namespace
|
||||||
|
{
|
||||||
|
|
||||||
struct ZippedDir {
|
struct ZippedDir
|
||||||
|
{
|
||||||
bool init;
|
bool init;
|
||||||
QString actualRoot;
|
QString actualRoot;
|
||||||
int files;
|
int files;
|
||||||
ZippedDir() : init(false), actualRoot(), files(0) {}
|
ZippedDir() : init(false), actualRoot(), files(0)
|
||||||
|
{
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
void checkRootPath(QString &path)
|
void checkRootPath(QString &path)
|
||||||
|
|
@ -251,7 +254,8 @@ void checkRootPath(QString& path)
|
||||||
for (int i = path.length() - 1; i >= 0; --i) {
|
for (int i = path.length() - 1; i >= 0; --i) {
|
||||||
if (path.at(i) == QLatin1Char('/'))
|
if (path.at(i) == QLatin1Char('/'))
|
||||||
++sepCount;
|
++sepCount;
|
||||||
else break;
|
else
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sepCount > 1)
|
if (sepCount > 1)
|
||||||
|
|
@ -261,7 +265,7 @@ void checkRootPath(QString& path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
} // namespace
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
@ -272,14 +276,7 @@ OSDAB_BEGIN_NAMESPACE(Zip)
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
//! \internal
|
//! \internal
|
||||||
ZipPrivate::ZipPrivate() :
|
ZipPrivate::ZipPrivate() : headers(0), device(0), file(0), uBuffer(0), crcTable(0), comment(), password()
|
||||||
headers(0),
|
|
||||||
device(0),
|
|
||||||
file(0),
|
|
||||||
uBuffer(0),
|
|
||||||
crcTable(0),
|
|
||||||
comment(),
|
|
||||||
password()
|
|
||||||
{
|
{
|
||||||
// keep an unsigned pointer so we avoid to over bloat the code with casts
|
// keep an unsigned pointer so we avoid to over bloat the code with casts
|
||||||
uBuffer = (unsigned char *)buffer1;
|
uBuffer = (unsigned char *)buffer1;
|
||||||
|
|
@ -348,8 +345,11 @@ bool ZipPrivate::containsEntry(const QFileInfo& info) const
|
||||||
}
|
}
|
||||||
|
|
||||||
//! \internal Actual implementation of the addDirectory* methods.
|
//! \internal Actual implementation of the addDirectory* methods.
|
||||||
Zip::ErrorCode ZipPrivate::addDirectory(const QString& path, const QString& root,
|
Zip::ErrorCode ZipPrivate::addDirectory(const QString &path,
|
||||||
Zip::CompressionOptions options, Zip::CompressionLevel level, int hierarchyLevel,
|
const QString &root,
|
||||||
|
Zip::CompressionOptions options,
|
||||||
|
Zip::CompressionLevel level,
|
||||||
|
int hierarchyLevel,
|
||||||
int *addedFiles)
|
int *addedFiles)
|
||||||
{
|
{
|
||||||
if (addedFiles)
|
if (addedFiles)
|
||||||
|
|
@ -396,13 +396,8 @@ Zip::ErrorCode ZipPrivate::addDirectory(const QString& path, const QString& root
|
||||||
const bool skipBad = options & Zip::SkipBadFiles;
|
const bool skipBad = options & Zip::SkipBadFiles;
|
||||||
const bool noDups = options & Zip::CheckForDuplicates;
|
const bool noDups = options & Zip::CheckForDuplicates;
|
||||||
|
|
||||||
const QDir::Filters dir_filter =
|
const QDir::Filters dir_filter = QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot | QDir::NoSymLinks;
|
||||||
QDir::Files |
|
const QDir::SortFlags dir_sort = QDir::DirsFirst;
|
||||||
QDir::Dirs |
|
|
||||||
QDir::NoDotAndDotDot |
|
|
||||||
QDir::NoSymLinks;
|
|
||||||
const QDir::SortFlags dir_sort =
|
|
||||||
QDir::DirsFirst;
|
|
||||||
QFileInfoList list = dir.entryInfoList(dir_filter, dir_sort);
|
QFileInfoList list = dir.entryInfoList(dir_filter, dir_sort);
|
||||||
|
|
||||||
Zip::ErrorCode ec = Zip::Ok;
|
Zip::ErrorCode ec = Zip::Ok;
|
||||||
|
|
@ -411,7 +406,8 @@ Zip::ErrorCode ZipPrivate::addDirectory(const QString& path, const QString& root
|
||||||
Zip::CompressionOptions recursionOptions;
|
Zip::CompressionOptions recursionOptions;
|
||||||
if (path_ignore)
|
if (path_ignore)
|
||||||
recursionOptions |= Zip::IgnorePaths;
|
recursionOptions |= Zip::IgnorePaths;
|
||||||
else recursionOptions |= Zip::RelativePaths;
|
else
|
||||||
|
recursionOptions |= Zip::RelativePaths;
|
||||||
|
|
||||||
for (int i = 0; i < list.size(); ++i) {
|
for (int i = 0; i < list.size(); ++i) {
|
||||||
QFileInfo info = list.at(i);
|
QFileInfo info = list.at(i);
|
||||||
|
|
@ -420,8 +416,7 @@ Zip::ErrorCode ZipPrivate::addDirectory(const QString& path, const QString& root
|
||||||
continue;
|
continue;
|
||||||
if (info.isDir()) {
|
if (info.isDir()) {
|
||||||
// Recursion
|
// Recursion
|
||||||
ec = addDirectory(absPath, actualRoot, recursionOptions,
|
ec = addDirectory(absPath, actualRoot, recursionOptions, level, hierarchyLevel + 1, addedFiles);
|
||||||
level, hierarchyLevel + 1, addedFiles);
|
|
||||||
} else {
|
} else {
|
||||||
ec = createEntry(info, actualRoot, level);
|
ec = createEntry(info, actualRoot, level);
|
||||||
if (ec == Zip::Ok) {
|
if (ec == Zip::Ok) {
|
||||||
|
|
@ -445,8 +440,10 @@ Zip::ErrorCode ZipPrivate::addDirectory(const QString& path, const QString& root
|
||||||
}
|
}
|
||||||
|
|
||||||
//! \internal Actual implementation of the addFile methods.
|
//! \internal Actual implementation of the addFile methods.
|
||||||
Zip::ErrorCode ZipPrivate::addFiles(const QStringList& files, const QString& root,
|
Zip::ErrorCode ZipPrivate::addFiles(const QStringList &files,
|
||||||
Zip::CompressionOptions options, Zip::CompressionLevel level,
|
const QString &root,
|
||||||
|
Zip::CompressionOptions options,
|
||||||
|
Zip::CompressionLevel level,
|
||||||
int *addedFiles)
|
int *addedFiles)
|
||||||
{
|
{
|
||||||
if (addedFiles)
|
if (addedFiles)
|
||||||
|
|
@ -518,8 +515,7 @@ Zip::ErrorCode ZipPrivate::addFiles(const QStringList& files, const QString& roo
|
||||||
|
|
||||||
if (info.isDir()) {
|
if (info.isDir()) {
|
||||||
// Recursion
|
// Recursion
|
||||||
ec = addDirectory(info.absoluteFilePath(), actualRoot, options,
|
ec = addDirectory(info.absoluteFilePath(), actualRoot, options, level, 1, addedFiles);
|
||||||
level, 1, addedFiles);
|
|
||||||
} else {
|
} else {
|
||||||
ec = createEntry(info, actualRoot, level);
|
ec = createEntry(info, actualRoot, level);
|
||||||
if (ec == Zip::Ok) {
|
if (ec == Zip::Ok) {
|
||||||
|
|
@ -552,7 +548,10 @@ Zip::ErrorCode ZipPrivate::addFiles(const QStringList& files, const QString& roo
|
||||||
|
|
||||||
//! \internal \p file must be a file and not a directory.
|
//! \internal \p file must be a file and not a directory.
|
||||||
Zip::ErrorCode ZipPrivate::deflateFile(const QFileInfo &fileInfo,
|
Zip::ErrorCode ZipPrivate::deflateFile(const QFileInfo &fileInfo,
|
||||||
quint32& crc, qint64& written, const Zip::CompressionLevel& level, quint32** keys)
|
quint32 &crc,
|
||||||
|
qint64 &written,
|
||||||
|
const Zip::CompressionLevel &level,
|
||||||
|
quint32 **keys)
|
||||||
{
|
{
|
||||||
const QString path = fileInfo.absoluteFilePath();
|
const QString path = fileInfo.absoluteFilePath();
|
||||||
QFile file(path);
|
QFile file(path);
|
||||||
|
|
@ -561,8 +560,7 @@ Zip::ErrorCode ZipPrivate::deflateFile(const QFileInfo& fileInfo,
|
||||||
return Zip::OpenFailed;
|
return Zip::OpenFailed;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Zip::ErrorCode ec = (level == Zip::Store)
|
const Zip::ErrorCode ec = (level == Zip::Store) ? storeFile(path, file, crc, written, keys)
|
||||||
? storeFile(path, file, crc, written, keys)
|
|
||||||
: compressFile(path, file, crc, written, level, keys);
|
: compressFile(path, file, crc, written, level, keys);
|
||||||
|
|
||||||
file.close();
|
file.close();
|
||||||
|
|
@ -570,8 +568,8 @@ Zip::ErrorCode ZipPrivate::deflateFile(const QFileInfo& fileInfo,
|
||||||
}
|
}
|
||||||
|
|
||||||
//! \internal
|
//! \internal
|
||||||
Zip::ErrorCode ZipPrivate::storeFile(const QString& path, QIODevice& file,
|
Zip::ErrorCode
|
||||||
quint32& crc, qint64& totalWritten, quint32** keys)
|
ZipPrivate::storeFile(const QString &path, QIODevice &file, quint32 &crc, qint64 &totalWritten, quint32 **keys)
|
||||||
{
|
{
|
||||||
Q_UNUSED(path);
|
Q_UNUSED(path);
|
||||||
|
|
||||||
|
|
@ -610,8 +608,12 @@ int ZipPrivate::compressionStrategy(const QString& path, QIODevice& file) const
|
||||||
}
|
}
|
||||||
|
|
||||||
//! \internal
|
//! \internal
|
||||||
Zip::ErrorCode ZipPrivate::compressFile(const QString& path, QIODevice& file,
|
Zip::ErrorCode ZipPrivate::compressFile(const QString &path,
|
||||||
quint32& crc, qint64& totalWritten, const Zip::CompressionLevel& level, quint32** keys)
|
QIODevice &file,
|
||||||
|
quint32 &crc,
|
||||||
|
qint64 &totalWritten,
|
||||||
|
const Zip::CompressionLevel &level,
|
||||||
|
quint32 **keys)
|
||||||
{
|
{
|
||||||
qint64 read = 0;
|
qint64 read = 0;
|
||||||
qint64 written = 0;
|
qint64 written = 0;
|
||||||
|
|
@ -635,16 +637,12 @@ Zip::ErrorCode ZipPrivate::compressFile(const QString& path, QIODevice& file,
|
||||||
int zret;
|
int zret;
|
||||||
|
|
||||||
// Use deflateInit2 with negative windowBits to get raw compression
|
// Use deflateInit2 with negative windowBits to get raw compression
|
||||||
if ((zret = deflateInit2_(
|
if ((zret = deflateInit2_(&zstr,
|
||||||
&zstr,
|
|
||||||
(int)level, // compression level
|
(int)level, // compression level
|
||||||
Z_DEFLATED, // method
|
Z_DEFLATED, // method
|
||||||
-MAX_WBITS, // windowBits
|
-MAX_WBITS, // windowBits
|
||||||
8, // memLevel
|
8, // memLevel
|
||||||
strategy,
|
strategy, ZLIB_VERSION, sizeof(z_stream))) != Z_OK) {
|
||||||
ZLIB_VERSION,
|
|
||||||
sizeof(z_stream)
|
|
||||||
)) != Z_OK ) {
|
|
||||||
qDebug() << "Could not initialize zlib for compression";
|
qDebug() << "Could not initialize zlib for compression";
|
||||||
return Zip::ZlibError;
|
return Zip::ZlibError;
|
||||||
}
|
}
|
||||||
|
|
@ -712,16 +710,13 @@ Zip::ErrorCode ZipPrivate::compressFile(const QString& path, QIODevice& file,
|
||||||
}
|
}
|
||||||
|
|
||||||
//! \internal Writes a new entry in the zip file.
|
//! \internal Writes a new entry in the zip file.
|
||||||
Zip::ErrorCode ZipPrivate::createEntry(const QFileInfo& file, const QString& root,
|
Zip::ErrorCode ZipPrivate::createEntry(const QFileInfo &file, const QString &root, Zip::CompressionLevel level)
|
||||||
Zip::CompressionLevel level)
|
|
||||||
{
|
{
|
||||||
const bool dirOnly = file.isDir();
|
const bool dirOnly = file.isDir();
|
||||||
|
|
||||||
// entryName contains the path as it should be written
|
// entryName contains the path as it should be written
|
||||||
// in the zip file records
|
// in the zip file records
|
||||||
const QString entryName = dirOnly
|
const QString entryName = dirOnly ? root : root + file.fileName();
|
||||||
? root
|
|
||||||
: root + file.fileName();
|
|
||||||
|
|
||||||
// Directory entry
|
// Directory entry
|
||||||
if (dirOnly || file.size() < ZIP_COMPRESSION_THRESHOLD) {
|
if (dirOnly || file.size() < ZIP_COMPRESSION_THRESHOLD) {
|
||||||
|
|
@ -750,8 +745,6 @@ Zip::ErrorCode ZipPrivate::createEntry(const QFileInfo& file, const QString& roo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// create header and store it to write a central directory later
|
// create header and store it to write a central directory later
|
||||||
QScopedPointer<ZipEntryP> h(new ZipEntryP);
|
QScopedPointer<ZipEntryP> h(new ZipEntryP);
|
||||||
h->absolutePath = file.absoluteFilePath().toLower();
|
h->absolutePath = file.absoluteFilePath().toLower();
|
||||||
|
|
@ -784,8 +777,10 @@ Zip::ErrorCode ZipPrivate::createEntry(const QFileInfo& file, const QString& roo
|
||||||
// **** Write local file header ****
|
// **** Write local file header ****
|
||||||
|
|
||||||
// signature
|
// signature
|
||||||
buffer1[0] = 'P'; buffer1[1] = 'K';
|
buffer1[0] = 'P';
|
||||||
buffer1[2] = 0x3; buffer1[3] = 0x4;
|
buffer1[1] = 'K';
|
||||||
|
buffer1[2] = 0x3;
|
||||||
|
buffer1[3] = 0x4;
|
||||||
|
|
||||||
// version needed to extract
|
// version needed to extract
|
||||||
buffer1[ZIP_LH_OFF_VERS] = ZIP_VERSION;
|
buffer1[ZIP_LH_OFF_VERS] = ZIP_VERSION;
|
||||||
|
|
@ -810,9 +805,7 @@ Zip::ErrorCode ZipPrivate::createEntry(const QFileInfo& file, const QString& roo
|
||||||
// skip crc (4bytes) [14,15,16,17]
|
// skip crc (4bytes) [14,15,16,17]
|
||||||
|
|
||||||
// skip compressed size but include evtl. encryption header (4bytes: [18,19,20,21])
|
// skip compressed size but include evtl. encryption header (4bytes: [18,19,20,21])
|
||||||
buffer1[ZIP_LH_OFF_CSIZE] =
|
buffer1[ZIP_LH_OFF_CSIZE] = buffer1[ZIP_LH_OFF_CSIZE + 1] = buffer1[ZIP_LH_OFF_CSIZE + 2] =
|
||||||
buffer1[ZIP_LH_OFF_CSIZE + 1] =
|
|
||||||
buffer1[ZIP_LH_OFF_CSIZE + 2] =
|
|
||||||
buffer1[ZIP_LH_OFF_CSIZE + 3] = 0;
|
buffer1[ZIP_LH_OFF_CSIZE + 3] = 0;
|
||||||
|
|
||||||
h->szComp = encrypt ? ZIP_LOCAL_ENC_HEADER_SIZE : 0;
|
h->szComp = encrypt ? ZIP_LOCAL_ENC_HEADER_SIZE : 0;
|
||||||
|
|
@ -1005,27 +998,34 @@ void ZipPrivate::encryptBytes(quint32* keys, char* buffer, qint64 read)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace {
|
namespace
|
||||||
struct KeywordHelper {
|
{
|
||||||
|
struct KeywordHelper
|
||||||
|
{
|
||||||
const QString needle;
|
const QString needle;
|
||||||
inline KeywordHelper(const QString& keyword) : needle(keyword) {}
|
inline KeywordHelper(const QString &keyword) : needle(keyword)
|
||||||
|
{
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
bool operator<(const KeywordHelper& helper, const char* keyword) {
|
bool operator<(const KeywordHelper &helper, const char *keyword)
|
||||||
|
{
|
||||||
return helper.needle.compare(QLatin1String(keyword)) < 0;
|
return helper.needle.compare(QLatin1String(keyword)) < 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool operator<(const char* keyword, const KeywordHelper& helper) {
|
bool operator<(const char *keyword, const KeywordHelper &helper)
|
||||||
|
{
|
||||||
return helper.needle.compare(QLatin1String(keyword)) > 0;
|
return helper.needle.compare(QLatin1String(keyword)) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool hasExtension(const QString& ext, const char* const* map, int max) {
|
bool hasExtension(const QString &ext, const char *const *map, int max)
|
||||||
|
{
|
||||||
const char *const *start = &map[0];
|
const char *const *start = &map[0];
|
||||||
const char *const *end = &map[max - 1];
|
const char *const *end = &map[max - 1];
|
||||||
const char *const *kw = qBinaryFind(start, end, KeywordHelper(ext));
|
const char *const *kw = qBinaryFind(start, end, KeywordHelper(ext));
|
||||||
return kw != end;
|
return kw != end;
|
||||||
}
|
}
|
||||||
}
|
} // namespace
|
||||||
|
|
||||||
//! \internal Detects the best compression level for a given file extension.
|
//! \internal Detects the best compression level for a given file extension.
|
||||||
Zip::CompressionLevel ZipPrivate::detectCompressionByMime(const QString &ext)
|
Zip::CompressionLevel ZipPrivate::detectCompressionByMime(const QString &ext)
|
||||||
|
|
@ -1043,29 +1043,8 @@ Zip::CompressionLevel ZipPrivate::detectCompressionByMime(const QString& ext)
|
||||||
// Slow or usually large files that we should not spend to much time with
|
// Slow or usually large files that we should not spend to much time with
|
||||||
const int MAX_EXT2 = 24;
|
const int MAX_EXT2 = 24;
|
||||||
const char *const ext2[MAX_EXT2] = {
|
const char *const ext2[MAX_EXT2] = {
|
||||||
"asf",
|
"asf", "avi", "divx", "doc", "docx", "flv", "gif", "iso", "jpg", "jpeg", "mka", "mkv",
|
||||||
"avi",
|
"mp3", "mp4", "mpeg", "mpg", "odt", "ogg", "ogm", "ra", "rm", "wma", "wmv",
|
||||||
"divx",
|
|
||||||
"doc",
|
|
||||||
"docx",
|
|
||||||
"flv",
|
|
||||||
"gif",
|
|
||||||
"iso",
|
|
||||||
"jpg",
|
|
||||||
"jpeg",
|
|
||||||
"mka",
|
|
||||||
"mkv",
|
|
||||||
"mp3",
|
|
||||||
"mp4",
|
|
||||||
"mpeg",
|
|
||||||
"mpg",
|
|
||||||
"odt",
|
|
||||||
"ogg",
|
|
||||||
"ogm",
|
|
||||||
"ra",
|
|
||||||
"rm",
|
|
||||||
"wma",
|
|
||||||
"wmv",
|
|
||||||
0 // # MAX_EXT2
|
0 // # MAX_EXT2
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -1122,8 +1101,7 @@ Zip::ErrorCode ZipPrivate::do_closeArchive()
|
||||||
Zip::ErrorCode c = Zip::Ok;
|
Zip::ErrorCode c = Zip::Ok;
|
||||||
|
|
||||||
if (headers && device) {
|
if (headers && device) {
|
||||||
for (QMap<QString,ZipEntryP*>::ConstIterator itr = headers->constBegin();
|
for (QMap<QString, ZipEntryP *>::ConstIterator itr = headers->constBegin(); itr != headers->constEnd(); ++itr) {
|
||||||
itr != headers->constEnd(); ++itr) {
|
|
||||||
const QString fileName = itr.key();
|
const QString fileName = itr.key();
|
||||||
const ZipEntryP *h = itr.value();
|
const ZipEntryP *h = itr.value();
|
||||||
c = writeEntry(fileName, h, szCentralDir);
|
c = writeEntry(fileName, h, szCentralDir);
|
||||||
|
|
@ -1209,9 +1187,7 @@ Zip::ErrorCode ZipPrivate::writeEntry(const QString& fileName, const ZipEntryP*
|
||||||
buffer1[ZIP_CD_OFF_IATTR] = buffer1[ZIP_CD_OFF_IATTR + 1] = 0;
|
buffer1[ZIP_CD_OFF_IATTR] = buffer1[ZIP_CD_OFF_IATTR + 1] = 0;
|
||||||
|
|
||||||
// external file attributes
|
// external file attributes
|
||||||
buffer1[ZIP_CD_OFF_EATTR] =
|
buffer1[ZIP_CD_OFF_EATTR] = buffer1[ZIP_CD_OFF_EATTR + 1] = buffer1[ZIP_CD_OFF_EATTR + 2] =
|
||||||
buffer1[ZIP_CD_OFF_EATTR + 1] =
|
|
||||||
buffer1[ZIP_CD_OFF_EATTR + 2] =
|
|
||||||
buffer1[ZIP_CD_OFF_EATTR + 3] = 0;
|
buffer1[ZIP_CD_OFF_EATTR + 3] = 0;
|
||||||
|
|
||||||
// relative offset of local header [42->45]
|
// relative offset of local header [42->45]
|
||||||
|
|
@ -1321,7 +1297,6 @@ QString ZipPrivate::extractRoot(const QString& p, Zip::CompressionOptions o)
|
||||||
return d.absolutePath();
|
return d.absolutePath();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
Public interface
|
Public interface
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
@ -1440,8 +1415,9 @@ void Zip::setArchiveComment(const QString& comment)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Convenience method, same as calling Zip::addDirectory(const QString&,const QString&,CompressionOptions,CompressionLevel)
|
Convenience method, same as calling Zip::addDirectory(const QString&,const
|
||||||
with the Zip::IgnorePaths flag as compression option and an empty \p root parameter.
|
QString&,CompressionOptions,CompressionLevel) with the Zip::IgnorePaths flag as compression option and an empty \p
|
||||||
|
root parameter.
|
||||||
|
|
||||||
The result is that all files found in \p path (and in subdirectories) are
|
The result is that all files found in \p path (and in subdirectories) are
|
||||||
added to the zip file without a directory entry.
|
added to the zip file without a directory entry.
|
||||||
|
|
@ -1452,8 +1428,8 @@ Zip::ErrorCode Zip::addDirectoryContents(const QString& path, CompressionLevel l
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Convenience method, same as calling Zip::addDirectory(const QString&,const QString&,CompressionOptions,CompressionLevel)
|
Convenience method, same as calling Zip::addDirectory(const QString&,const
|
||||||
with the Zip::IgnorePaths flag as compression option.
|
QString&,CompressionOptions,CompressionLevel) with the Zip::IgnorePaths flag as compression option.
|
||||||
|
|
||||||
The result is that all files found in \p path (and in subdirectories) are
|
The result is that all files found in \p path (and in subdirectories) are
|
||||||
added to the zip file without a directory entry (or within a directory
|
added to the zip file without a directory entry (or within a directory
|
||||||
|
|
@ -1475,8 +1451,8 @@ Zip::ErrorCode Zip::addDirectory(const QString& path, CompressionLevel level)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Convenience method, same as calling Zip::addDirectory(const QString&,const QString&,CompressionOptions,CompressionLevel)
|
Convenience method, same as calling Zip::addDirectory(const QString&,const
|
||||||
with the Zip::RelativePaths flag as compression option.
|
QString&,CompressionOptions,CompressionLevel) with the Zip::RelativePaths flag as compression option.
|
||||||
*/
|
*/
|
||||||
Zip::ErrorCode Zip::addDirectory(const QString &path, const QString &root, CompressionLevel level)
|
Zip::ErrorCode Zip::addDirectory(const QString &path, const QString &root, CompressionLevel level)
|
||||||
{
|
{
|
||||||
|
|
@ -1497,8 +1473,11 @@ Zip::ErrorCode Zip::addDirectory(const QString& path, const QString& root, Compr
|
||||||
If \p addedFiles is not null it is set to the number of successfully added
|
If \p addedFiles is not null it is set to the number of successfully added
|
||||||
files.
|
files.
|
||||||
*/
|
*/
|
||||||
Zip::ErrorCode Zip::addDirectory(const QString& path, const QString& root,
|
Zip::ErrorCode Zip::addDirectory(const QString &path,
|
||||||
CompressionOptions options, CompressionLevel level, int* addedFiles)
|
const QString &root,
|
||||||
|
CompressionOptions options,
|
||||||
|
CompressionLevel level,
|
||||||
|
int *addedFiles)
|
||||||
{
|
{
|
||||||
const int hierarchyLev = 0;
|
const int hierarchyLev = 0;
|
||||||
return d->addDirectory(path, root, options, level, hierarchyLev, addedFiles);
|
return d->addDirectory(path, root, options, level, hierarchyLev, addedFiles);
|
||||||
|
|
@ -1517,8 +1496,7 @@ Zip::ErrorCode Zip::addFile(const QString& path, CompressionLevel level)
|
||||||
Convenience method, same as calling Zip::addFile(const QString&,const QString&,CompressionOptions,CompressionLevel)
|
Convenience method, same as calling Zip::addFile(const QString&,const QString&,CompressionOptions,CompressionLevel)
|
||||||
with the Zip::RelativePaths flag as compression option.
|
with the Zip::RelativePaths flag as compression option.
|
||||||
*/
|
*/
|
||||||
Zip::ErrorCode Zip::addFile(const QString& path, const QString& root,
|
Zip::ErrorCode Zip::addFile(const QString &path, const QString &root, CompressionLevel level)
|
||||||
CompressionLevel level)
|
|
||||||
{
|
{
|
||||||
return addFile(path, root, Zip::RelativePaths, level);
|
return addFile(path, root, Zip::RelativePaths, level);
|
||||||
}
|
}
|
||||||
|
|
@ -1535,8 +1513,8 @@ Zip::ErrorCode Zip::addFile(const QString& path, const QString& root,
|
||||||
The \p root parameter is ignored with the Zip::IgnorePaths parameter and used as path prefix (a trailing /
|
The \p root parameter is ignored with the Zip::IgnorePaths parameter and used as path prefix (a trailing /
|
||||||
is always added as directory separator!) otherwise (even with Zip::AbsolutePaths set!).
|
is always added as directory separator!) otherwise (even with Zip::AbsolutePaths set!).
|
||||||
*/
|
*/
|
||||||
Zip::ErrorCode Zip::addFile(const QString& path, const QString& root,
|
Zip::ErrorCode
|
||||||
CompressionOptions options, CompressionLevel level)
|
Zip::addFile(const QString &path, const QString &root, CompressionOptions options, CompressionLevel level)
|
||||||
{
|
{
|
||||||
if (path.isEmpty())
|
if (path.isEmpty())
|
||||||
return Zip::Ok;
|
return Zip::Ok;
|
||||||
|
|
@ -1544,8 +1522,9 @@ Zip::ErrorCode Zip::addFile(const QString& path, const QString& root,
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Convenience method, same as calling Zip::addFiles(const QStringList&,const QString&,CompressionOptions,CompressionLevel)
|
Convenience method, same as calling Zip::addFiles(const QStringList&,const
|
||||||
with an empty \p root parameter and Zip::RelativePaths as compression option.
|
QString&,CompressionOptions,CompressionLevel) with an empty \p root parameter and Zip::RelativePaths as compression
|
||||||
|
option.
|
||||||
*/
|
*/
|
||||||
Zip::ErrorCode Zip::addFiles(const QStringList &paths, CompressionLevel level)
|
Zip::ErrorCode Zip::addFiles(const QStringList &paths, CompressionLevel level)
|
||||||
{
|
{
|
||||||
|
|
@ -1553,11 +1532,10 @@ Zip::ErrorCode Zip::addFiles(const QStringList& paths, CompressionLevel level)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Convenience method, same as calling Zip::addFiles(const QStringList&,const QString&,CompressionOptions,CompressionLevel)
|
Convenience method, same as calling Zip::addFiles(const QStringList&,const
|
||||||
with the Zip::RelativePaths flag as compression option.
|
QString&,CompressionOptions,CompressionLevel) with the Zip::RelativePaths flag as compression option.
|
||||||
*/
|
*/
|
||||||
Zip::ErrorCode Zip::addFiles(const QStringList& paths, const QString& root,
|
Zip::ErrorCode Zip::addFiles(const QStringList &paths, const QString &root, CompressionLevel level)
|
||||||
CompressionLevel level)
|
|
||||||
{
|
{
|
||||||
return addFiles(paths, root, Zip::RelativePaths, level);
|
return addFiles(paths, root, Zip::RelativePaths, level);
|
||||||
}
|
}
|
||||||
|
|
@ -1578,8 +1556,11 @@ Zip::ErrorCode Zip::addFiles(const QStringList& paths, const QString& root,
|
||||||
If \p addedFiles is not null it is set to the number of successfully added
|
If \p addedFiles is not null it is set to the number of successfully added
|
||||||
files.
|
files.
|
||||||
*/
|
*/
|
||||||
Zip::ErrorCode Zip::addFiles(const QStringList& paths, const QString& root,
|
Zip::ErrorCode Zip::addFiles(const QStringList &paths,
|
||||||
CompressionOptions options, CompressionLevel level, int* addedFiles)
|
const QString &root,
|
||||||
|
CompressionOptions options,
|
||||||
|
CompressionLevel level,
|
||||||
|
int *addedFiles)
|
||||||
{
|
{
|
||||||
return d->addFiles(paths, root, options, level, addedFiles);
|
return d->addFiles(paths, root, options, level, addedFiles);
|
||||||
}
|
}
|
||||||
|
|
@ -1599,17 +1580,34 @@ Zip::ErrorCode Zip::closeArchive()
|
||||||
*/
|
*/
|
||||||
QString Zip::formatError(Zip::ErrorCode c) const
|
QString Zip::formatError(Zip::ErrorCode c) const
|
||||||
{
|
{
|
||||||
switch (c)
|
switch (c) {
|
||||||
{
|
case Ok:
|
||||||
case Ok: return QCoreApplication::translate("Zip", "ZIP operation completed successfully."); break;
|
return QCoreApplication::translate("Zip", "ZIP operation completed successfully.");
|
||||||
case ZlibInit: return QCoreApplication::translate("Zip", "Failed to initialize or load zlib library."); break;
|
break;
|
||||||
case ZlibError: return QCoreApplication::translate("Zip", "zlib library error."); break;
|
case ZlibInit:
|
||||||
case OpenFailed: return QCoreApplication::translate("Zip", "Unable to create or open file."); break;
|
return QCoreApplication::translate("Zip", "Failed to initialize or load zlib library.");
|
||||||
case NoOpenArchive: return QCoreApplication::translate("Zip", "No archive has been created yet."); break;
|
break;
|
||||||
case FileNotFound: return QCoreApplication::translate("Zip", "File or directory does not exist."); break;
|
case ZlibError:
|
||||||
case ReadFailed: return QCoreApplication::translate("Zip", "File read error."); break;
|
return QCoreApplication::translate("Zip", "zlib library error.");
|
||||||
case WriteFailed: return QCoreApplication::translate("Zip", "File write error."); break;
|
break;
|
||||||
case SeekFailed: return QCoreApplication::translate("Zip", "File seek error."); break;
|
case OpenFailed:
|
||||||
|
return QCoreApplication::translate("Zip", "Unable to create or open file.");
|
||||||
|
break;
|
||||||
|
case NoOpenArchive:
|
||||||
|
return QCoreApplication::translate("Zip", "No archive has been created yet.");
|
||||||
|
break;
|
||||||
|
case FileNotFound:
|
||||||
|
return QCoreApplication::translate("Zip", "File or directory does not exist.");
|
||||||
|
break;
|
||||||
|
case ReadFailed:
|
||||||
|
return QCoreApplication::translate("Zip", "File read error.");
|
||||||
|
break;
|
||||||
|
case WriteFailed:
|
||||||
|
return QCoreApplication::translate("Zip", "File write error.");
|
||||||
|
break;
|
||||||
|
case SeekFailed:
|
||||||
|
return QCoreApplication::translate("Zip", "File seek error.");
|
||||||
|
break;
|
||||||
default:;
|
default:;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
50
cockatrice/src/utility/external/zip/zip.h
vendored
Executable file → Normal file
50
cockatrice/src/utility/external/zip/zip.h
vendored
Executable file → Normal file
|
|
@ -32,7 +32,6 @@
|
||||||
|
|
||||||
#include <QtCore/QMap>
|
#include <QtCore/QMap>
|
||||||
#include <QtCore/QtGlobal>
|
#include <QtCore/QtGlobal>
|
||||||
|
|
||||||
#include <zlib/zlib.h>
|
#include <zlib/zlib.h>
|
||||||
|
|
||||||
class QIODevice;
|
class QIODevice;
|
||||||
|
|
@ -66,9 +65,18 @@ public:
|
||||||
enum CompressionLevel
|
enum CompressionLevel
|
||||||
{
|
{
|
||||||
Store,
|
Store,
|
||||||
Deflate1 = 1, Deflate2, Deflate3, Deflate4,
|
Deflate1 = 1,
|
||||||
Deflate5, Deflate6, Deflate7, Deflate8, Deflate9,
|
Deflate2,
|
||||||
AutoCPU, AutoMIME, AutoFull
|
Deflate3,
|
||||||
|
Deflate4,
|
||||||
|
Deflate5,
|
||||||
|
Deflate6,
|
||||||
|
Deflate7,
|
||||||
|
Deflate8,
|
||||||
|
Deflate9,
|
||||||
|
AutoCPU,
|
||||||
|
AutoMIME,
|
||||||
|
AutoFull
|
||||||
};
|
};
|
||||||
|
|
||||||
enum CompressionOption
|
enum CompressionOption
|
||||||
|
|
@ -113,32 +121,26 @@ public:
|
||||||
QString archiveComment() const;
|
QString archiveComment() const;
|
||||||
void setArchiveComment(const QString &comment);
|
void setArchiveComment(const QString &comment);
|
||||||
|
|
||||||
ErrorCode addDirectoryContents(const QString& path,
|
ErrorCode addDirectoryContents(const QString &path, CompressionLevel level = AutoFull);
|
||||||
CompressionLevel level = AutoFull);
|
ErrorCode addDirectoryContents(const QString &path, const QString &root, CompressionLevel level = AutoFull);
|
||||||
ErrorCode addDirectoryContents(const QString& path, const QString& root,
|
|
||||||
CompressionLevel level = AutoFull);
|
|
||||||
|
|
||||||
|
ErrorCode addDirectory(const QString &path, CompressionLevel level = AutoFull);
|
||||||
|
ErrorCode addDirectory(const QString &path, const QString &root, CompressionLevel level = AutoFull);
|
||||||
ErrorCode addDirectory(const QString &path,
|
ErrorCode addDirectory(const QString &path,
|
||||||
CompressionLevel level = AutoFull);
|
const QString &root,
|
||||||
ErrorCode addDirectory(const QString& path, const QString& root,
|
CompressionOptions options,
|
||||||
CompressionLevel level = AutoFull);
|
CompressionLevel level = AutoFull,
|
||||||
ErrorCode addDirectory(const QString& path, const QString& root,
|
|
||||||
CompressionOptions options, CompressionLevel level = AutoFull,
|
|
||||||
int *addedFiles = 0);
|
int *addedFiles = 0);
|
||||||
|
|
||||||
ErrorCode addFile(const QString& path,
|
ErrorCode addFile(const QString &path, CompressionLevel level = AutoFull);
|
||||||
CompressionLevel level = AutoFull);
|
ErrorCode addFile(const QString &path, const QString &root, CompressionLevel level = AutoFull);
|
||||||
ErrorCode addFile(const QString& path, const QString& root,
|
ErrorCode
|
||||||
CompressionLevel level = AutoFull);
|
addFile(const QString &path, const QString &root, CompressionOptions options, CompressionLevel level = AutoFull);
|
||||||
ErrorCode addFile(const QString& path, const QString& root,
|
|
||||||
CompressionOptions options,
|
|
||||||
CompressionLevel level = AutoFull);
|
|
||||||
|
|
||||||
|
ErrorCode addFiles(const QStringList &paths, CompressionLevel level = AutoFull);
|
||||||
|
ErrorCode addFiles(const QStringList &paths, const QString &root, CompressionLevel level = AutoFull);
|
||||||
ErrorCode addFiles(const QStringList &paths,
|
ErrorCode addFiles(const QStringList &paths,
|
||||||
CompressionLevel level = AutoFull);
|
const QString &root,
|
||||||
ErrorCode addFiles(const QStringList& paths, const QString& root,
|
|
||||||
CompressionLevel level = AutoFull);
|
|
||||||
ErrorCode addFiles(const QStringList& paths, const QString& root,
|
|
||||||
CompressionOptions options,
|
CompressionOptions options,
|
||||||
CompressionLevel level = AutoFull,
|
CompressionLevel level = AutoFull,
|
||||||
int *addedFiles = 0);
|
int *addedFiles = 0);
|
||||||
|
|
|
||||||
35
cockatrice/src/utility/external/zip/zip_p.h
vendored
Executable file → Normal file
35
cockatrice/src/utility/external/zip/zip_p.h
vendored
Executable file → Normal file
|
|
@ -45,7 +45,6 @@
|
||||||
#include <QtCore/QFileInfo>
|
#include <QtCore/QFileInfo>
|
||||||
#include <QtCore/QObject>
|
#include <QtCore/QObject>
|
||||||
#include <QtCore/QtGlobal>
|
#include <QtCore/QtGlobal>
|
||||||
|
|
||||||
#include <zlib/zconf.h>
|
#include <zlib/zconf.h>
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -90,15 +89,19 @@ public:
|
||||||
|
|
||||||
bool containsEntry(const QFileInfo &info) const;
|
bool containsEntry(const QFileInfo &info) const;
|
||||||
|
|
||||||
Zip::ErrorCode addDirectory(const QString& path, const QString& root,
|
Zip::ErrorCode addDirectory(const QString &path,
|
||||||
Zip::CompressionOptions options, Zip::CompressionLevel level,
|
const QString &root,
|
||||||
int hierarchyLevel, int* addedFiles = 0);
|
Zip::CompressionOptions options,
|
||||||
Zip::ErrorCode addFiles(const QStringList& paths, const QString& root,
|
Zip::CompressionLevel level,
|
||||||
Zip::CompressionOptions options, Zip::CompressionLevel level,
|
int hierarchyLevel,
|
||||||
|
int *addedFiles = 0);
|
||||||
|
Zip::ErrorCode addFiles(const QStringList &paths,
|
||||||
|
const QString &root,
|
||||||
|
Zip::CompressionOptions options,
|
||||||
|
Zip::CompressionLevel level,
|
||||||
int *addedFiles);
|
int *addedFiles);
|
||||||
|
|
||||||
Zip::ErrorCode createEntry(const QFileInfo& file, const QString& root,
|
Zip::ErrorCode createEntry(const QFileInfo &file, const QString &root, Zip::CompressionLevel level);
|
||||||
Zip::CompressionLevel level);
|
|
||||||
Zip::CompressionLevel detectCompressionByMime(const QString &ext);
|
Zip::CompressionLevel detectCompressionByMime(const QString &ext);
|
||||||
|
|
||||||
inline quint32 updateChecksum(const quint32 &crc, const quint32 &val) const;
|
inline quint32 updateChecksum(const quint32 &crc, const quint32 &val) const;
|
||||||
|
|
@ -118,11 +121,17 @@ private slots:
|
||||||
private:
|
private:
|
||||||
int compressionStrategy(const QString &path, QIODevice &file) const;
|
int compressionStrategy(const QString &path, QIODevice &file) const;
|
||||||
Zip::ErrorCode deflateFile(const QFileInfo &fileInfo,
|
Zip::ErrorCode deflateFile(const QFileInfo &fileInfo,
|
||||||
quint32& crc, qint64& written, const Zip::CompressionLevel& level, quint32** keys);
|
quint32 &crc,
|
||||||
Zip::ErrorCode storeFile(const QString& path, QIODevice& file,
|
qint64 &written,
|
||||||
quint32& crc, qint64& written, quint32** keys);
|
const Zip::CompressionLevel &level,
|
||||||
Zip::ErrorCode compressFile(const QString& path, QIODevice& file,
|
quint32 **keys);
|
||||||
quint32& crc, qint64& written, const Zip::CompressionLevel& level, quint32** keys);
|
Zip::ErrorCode storeFile(const QString &path, QIODevice &file, quint32 &crc, qint64 &written, quint32 **keys);
|
||||||
|
Zip::ErrorCode compressFile(const QString &path,
|
||||||
|
QIODevice &file,
|
||||||
|
quint32 &crc,
|
||||||
|
qint64 &written,
|
||||||
|
const Zip::CompressionLevel &level,
|
||||||
|
quint32 **keys);
|
||||||
Zip::ErrorCode do_closeArchive();
|
Zip::ErrorCode do_closeArchive();
|
||||||
Zip::ErrorCode writeEntry(const QString &fileName, const ZipEntryP *h, quint32 &szCentralDir);
|
Zip::ErrorCode writeEntry(const QString &fileName, const ZipEntryP *h, quint32 &szCentralDir);
|
||||||
Zip::ErrorCode writeCentralDir(quint32 offCentralDir, quint32 szCentralDir);
|
Zip::ErrorCode writeCentralDir(quint32 offCentralDir, quint32 szCentralDir);
|
||||||
|
|
|
||||||
26
cockatrice/src/utility/external/zip/zipentry_p.h
vendored
Executable file → Normal file
26
cockatrice/src/utility/external/zip/zipentry_p.h
vendored
Executable file → Normal file
|
|
@ -47,19 +47,9 @@ OSDAB_BEGIN_NAMESPACE(Zip)
|
||||||
class ZipEntryP
|
class ZipEntryP
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ZipEntryP() :
|
ZipEntryP()
|
||||||
lhOffset(0),
|
: lhOffset(0), dataOffset(0), gpFlag(), compMethod(0), modTime(), modDate(), crc(0), szComp(0), szUncomp(0),
|
||||||
dataOffset(0),
|
absolutePath(), fileSize(0), lhEntryChecked(false)
|
||||||
gpFlag(),
|
|
||||||
compMethod(0),
|
|
||||||
modTime(),
|
|
||||||
modDate(),
|
|
||||||
crc(0),
|
|
||||||
szComp(0),
|
|
||||||
szUncomp(0),
|
|
||||||
absolutePath(),
|
|
||||||
fileSize(0),
|
|
||||||
lhEntryChecked(false)
|
|
||||||
{
|
{
|
||||||
gpFlag[0] = gpFlag[1] = 0;
|
gpFlag[0] = gpFlag[1] = 0;
|
||||||
modTime[0] = modTime[1] = 0;
|
modTime[0] = modTime[1] = 0;
|
||||||
|
|
@ -82,8 +72,14 @@ public:
|
||||||
|
|
||||||
mutable bool lhEntryChecked; // Is true if the local header record for this entry has been parsed
|
mutable bool lhEntryChecked; // Is true if the local header record for this entry has been parsed
|
||||||
|
|
||||||
inline bool isEncrypted() const { return gpFlag[0] & 0x01; }
|
inline bool isEncrypted() const
|
||||||
inline bool hasDataDescriptor() const { return gpFlag[0] & 0x08; }
|
{
|
||||||
|
return gpFlag[0] & 0x01;
|
||||||
|
}
|
||||||
|
inline bool hasDataDescriptor() const
|
||||||
|
{
|
||||||
|
return gpFlag[0] & 0x08;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
OSDAB_END_NAMESPACE
|
OSDAB_END_NAMESPACE
|
||||||
|
|
|
||||||
10
cockatrice/src/utility/external/zip/zipglobal.h
vendored
Executable file → Normal file
10
cockatrice/src/utility/external/zip/zipglobal.h
vendored
Executable file → Normal file
|
|
@ -49,13 +49,19 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef OSDAB_NAMESPACE
|
#ifdef OSDAB_NAMESPACE
|
||||||
#define OSDAB_BEGIN_NAMESPACE(ModuleName) namespace Osdab { namespace ModuleName {
|
#define OSDAB_BEGIN_NAMESPACE(ModuleName) \
|
||||||
|
namespace Osdab \
|
||||||
|
{ \
|
||||||
|
namespace ModuleName \
|
||||||
|
{
|
||||||
#else
|
#else
|
||||||
#define OSDAB_BEGIN_NAMESPACE(ModuleName)
|
#define OSDAB_BEGIN_NAMESPACE(ModuleName)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef OSDAB_NAMESPACE
|
#ifdef OSDAB_NAMESPACE
|
||||||
#define OSDAB_END_NAMESPACE } }
|
#define OSDAB_END_NAMESPACE \
|
||||||
|
} \
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
#define OSDAB_END_NAMESPACE
|
#define OSDAB_END_NAMESPACE
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue