remove all dos line endings (#3489)
This commit is contained in:
parent
2621cc09ac
commit
84f6da103f
11 changed files with 4046 additions and 4046 deletions
|
@ -1,36 +1,36 @@
|
|||
# Find the MS Visual Studio VC redistributable package
|
||||
|
||||
if (WIN32)
|
||||
set(VCREDISTRUNTIME_FOUND "NO")
|
||||
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8) # 64-bit
|
||||
set(REDIST_ARCH x64)
|
||||
else()
|
||||
set(REDIST_ARCH x86)
|
||||
endif()
|
||||
|
||||
set(REDIST_FILE vcredist_${REDIST_ARCH}.exe)
|
||||
|
||||
set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
|
||||
include(InstallRequiredSystemLibraries)
|
||||
|
||||
# Check if the list contains minimum one element, to get the path from
|
||||
list(LENGTH CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS libsCount)
|
||||
if (libsCount GREATER 0)
|
||||
list(GET CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS 0 _path)
|
||||
|
||||
get_filename_component(_path ${_path} DIRECTORY)
|
||||
get_filename_component(_path ${_path}/../../ ABSOLUTE)
|
||||
|
||||
if (EXISTS "${_path}/${REDIST_FILE}") # VS 2017
|
||||
set(VCREDISTRUNTIME_FOUND "YES")
|
||||
set(VCREDISTRUNTIME_FILE ${_path}/${REDIST_FILE})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(VCREDISTRUNTIME_FOUND)
|
||||
message(STATUS "Found VCredist ${VCREDISTRUNTIME_FILE}")
|
||||
else()
|
||||
message(WARNING "Could not find VCredist package. It's not required for compiling, but needs to be available at runtime.")
|
||||
endif()
|
||||
endif()
|
||||
# Find the MS Visual Studio VC redistributable package
|
||||
|
||||
if (WIN32)
|
||||
set(VCREDISTRUNTIME_FOUND "NO")
|
||||
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8) # 64-bit
|
||||
set(REDIST_ARCH x64)
|
||||
else()
|
||||
set(REDIST_ARCH x86)
|
||||
endif()
|
||||
|
||||
set(REDIST_FILE vcredist_${REDIST_ARCH}.exe)
|
||||
|
||||
set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
|
||||
include(InstallRequiredSystemLibraries)
|
||||
|
||||
# Check if the list contains minimum one element, to get the path from
|
||||
list(LENGTH CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS libsCount)
|
||||
if (libsCount GREATER 0)
|
||||
list(GET CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS 0 _path)
|
||||
|
||||
get_filename_component(_path ${_path} DIRECTORY)
|
||||
get_filename_component(_path ${_path}/../../ ABSOLUTE)
|
||||
|
||||
if (EXISTS "${_path}/${REDIST_FILE}") # VS 2017
|
||||
set(VCREDISTRUNTIME_FOUND "YES")
|
||||
set(VCREDISTRUNTIME_FILE ${_path}/${REDIST_FILE})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(VCREDISTRUNTIME_FOUND)
|
||||
message(STATUS "Found VCredist ${VCREDISTRUNTIME_FILE}")
|
||||
else()
|
||||
message(WARNING "Could not find VCredist package. It's not required for compiling, but needs to be available at runtime.")
|
||||
endif()
|
||||
endif()
|
||||
|
|
|
@ -1,71 +1,71 @@
|
|||
# Find the OpenSSL runtime libraries (.dll) for Windows that
|
||||
# will be needed by Qt in order to access https urls.
|
||||
|
||||
if (WIN32)
|
||||
# Get standard installation paths for OpenSSL under Windows
|
||||
|
||||
# http://www.slproweb.com/products/Win32OpenSSL.html
|
||||
|
||||
if( CMAKE_SIZEOF_VOID_P EQUAL 8 )
|
||||
# target win64
|
||||
set(_OPENSSL_ROOT_HINTS
|
||||
${OPENSSL_ROOT_DIR}
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-bit)_is1;Inno Setup: App Path]"
|
||||
ENV OPENSSL_ROOT_DIR
|
||||
)
|
||||
file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles)
|
||||
set(_OPENSSL_ROOT_PATHS
|
||||
"C:/Tools/vcpkg/installed/x64-windows/bin"
|
||||
"${_programfiles}/OpenSSL-Win64"
|
||||
"C:/OpenSSL-Win64/"
|
||||
)
|
||||
unset(_programfiles)
|
||||
else( CMAKE_SIZEOF_VOID_P EQUAL 8 )
|
||||
# target win32
|
||||
set(_OPENSSL_ROOT_HINTS
|
||||
${OPENSSL_ROOT_DIR}
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;Inno Setup: App Path]"
|
||||
ENV OPENSSL_ROOT_DIR
|
||||
)
|
||||
file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles)
|
||||
set(_OPENSSL_ROOT_PATHS
|
||||
"C:/Tools/vcpkg/installed/x86-windows/bin"
|
||||
"${_programfiles}/OpenSSL"
|
||||
"${_programfiles}/OpenSSL-Win32"
|
||||
"C:/OpenSSL/"
|
||||
"C:/OpenSSL-Win32/"
|
||||
)
|
||||
unset(_programfiles)
|
||||
endif( CMAKE_SIZEOF_VOID_P EQUAL 8 )
|
||||
|
||||
else ()
|
||||
set(_OPENSSL_ROOT_HINTS
|
||||
${OPENSSL_ROOT_DIR}
|
||||
ENV OPENSSL_ROOT_DIR
|
||||
)
|
||||
endif ()
|
||||
|
||||
set(_OPENSSL_ROOT_HINTS_AND_PATHS
|
||||
HINTS ${_OPENSSL_ROOT_HINTS}
|
||||
PATHS ${_OPENSSL_ROOT_PATHS}
|
||||
)
|
||||
|
||||
# For OpenSSL < 1.1, they are named libeay32 and ssleay32 and even if the dll is 64bit, it's still suffixed as *32.dll
|
||||
# For OpenSSL >= 1.1, they are named libcrypto and libssl with no suffix
|
||||
FIND_FILE(WIN32SSLRUNTIME_LIBEAY NAMES libeay32.dll libcrypto.dll ${_OPENSSL_ROOT_HINTS_AND_PATHS})
|
||||
FIND_FILE(WIN32SSLRUNTIME_SSLEAY NAMES ssleay32.dll libssl.dll ${_OPENSSL_ROOT_HINTS_AND_PATHS})
|
||||
|
||||
|
||||
IF(WIN32SSLRUNTIME_LIBEAY AND WIN32SSLRUNTIME_SSLEAY)
|
||||
SET(WIN32SSLRUNTIME_LIBRARIES "${WIN32SSLRUNTIME_LIBEAY}" "${WIN32SSLRUNTIME_SSLEAY}")
|
||||
SET(WIN32SSLRUNTIME_FOUND "YES")
|
||||
message(STATUS "Found OpenSSL ${WIN32SSLRUNTIME_LIBRARIES}")
|
||||
ELSE()
|
||||
SET(WIN32SSLRUNTIME_FOUND "NO")
|
||||
message(WARNING "Could not find OpenSSL runtime libraries. They are not required for compiling, but needs to be available at runtime.")
|
||||
ENDIF()
|
||||
|
||||
MARK_AS_ADVANCED(
|
||||
WIN32SSLRUNTIME_LIBEAY
|
||||
WIN32SSLRUNTIME_SSLEAY
|
||||
)
|
||||
# Find the OpenSSL runtime libraries (.dll) for Windows that
|
||||
# will be needed by Qt in order to access https urls.
|
||||
|
||||
if (WIN32)
|
||||
# Get standard installation paths for OpenSSL under Windows
|
||||
|
||||
# http://www.slproweb.com/products/Win32OpenSSL.html
|
||||
|
||||
if( CMAKE_SIZEOF_VOID_P EQUAL 8 )
|
||||
# target win64
|
||||
set(_OPENSSL_ROOT_HINTS
|
||||
${OPENSSL_ROOT_DIR}
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-bit)_is1;Inno Setup: App Path]"
|
||||
ENV OPENSSL_ROOT_DIR
|
||||
)
|
||||
file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles)
|
||||
set(_OPENSSL_ROOT_PATHS
|
||||
"C:/Tools/vcpkg/installed/x64-windows/bin"
|
||||
"${_programfiles}/OpenSSL-Win64"
|
||||
"C:/OpenSSL-Win64/"
|
||||
)
|
||||
unset(_programfiles)
|
||||
else( CMAKE_SIZEOF_VOID_P EQUAL 8 )
|
||||
# target win32
|
||||
set(_OPENSSL_ROOT_HINTS
|
||||
${OPENSSL_ROOT_DIR}
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;Inno Setup: App Path]"
|
||||
ENV OPENSSL_ROOT_DIR
|
||||
)
|
||||
file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles)
|
||||
set(_OPENSSL_ROOT_PATHS
|
||||
"C:/Tools/vcpkg/installed/x86-windows/bin"
|
||||
"${_programfiles}/OpenSSL"
|
||||
"${_programfiles}/OpenSSL-Win32"
|
||||
"C:/OpenSSL/"
|
||||
"C:/OpenSSL-Win32/"
|
||||
)
|
||||
unset(_programfiles)
|
||||
endif( CMAKE_SIZEOF_VOID_P EQUAL 8 )
|
||||
|
||||
else ()
|
||||
set(_OPENSSL_ROOT_HINTS
|
||||
${OPENSSL_ROOT_DIR}
|
||||
ENV OPENSSL_ROOT_DIR
|
||||
)
|
||||
endif ()
|
||||
|
||||
set(_OPENSSL_ROOT_HINTS_AND_PATHS
|
||||
HINTS ${_OPENSSL_ROOT_HINTS}
|
||||
PATHS ${_OPENSSL_ROOT_PATHS}
|
||||
)
|
||||
|
||||
# For OpenSSL < 1.1, they are named libeay32 and ssleay32 and even if the dll is 64bit, it's still suffixed as *32.dll
|
||||
# For OpenSSL >= 1.1, they are named libcrypto and libssl with no suffix
|
||||
FIND_FILE(WIN32SSLRUNTIME_LIBEAY NAMES libeay32.dll libcrypto.dll ${_OPENSSL_ROOT_HINTS_AND_PATHS})
|
||||
FIND_FILE(WIN32SSLRUNTIME_SSLEAY NAMES ssleay32.dll libssl.dll ${_OPENSSL_ROOT_HINTS_AND_PATHS})
|
||||
|
||||
|
||||
IF(WIN32SSLRUNTIME_LIBEAY AND WIN32SSLRUNTIME_SSLEAY)
|
||||
SET(WIN32SSLRUNTIME_LIBRARIES "${WIN32SSLRUNTIME_LIBEAY}" "${WIN32SSLRUNTIME_SSLEAY}")
|
||||
SET(WIN32SSLRUNTIME_FOUND "YES")
|
||||
message(STATUS "Found OpenSSL ${WIN32SSLRUNTIME_LIBRARIES}")
|
||||
ELSE()
|
||||
SET(WIN32SSLRUNTIME_FOUND "NO")
|
||||
message(WARNING "Could not find OpenSSL runtime libraries. They are not required for compiling, but needs to be available at runtime.")
|
||||
ENDIF()
|
||||
|
||||
MARK_AS_ADVANCED(
|
||||
WIN32SSLRUNTIME_LIBEAY
|
||||
WIN32SSLRUNTIME_SSLEAY
|
||||
)
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,152 +1,152 @@
|
|||
/****************************************************************************
|
||||
** Filename: unzip.h
|
||||
** Last updated [dd/mm/yyyy]: 27/03/2011
|
||||
**
|
||||
** pkzip 2.0 decompression.
|
||||
**
|
||||
** Some of the code has been inspired by other open source projects,
|
||||
** (mainly Info-Zip and Gilles Vollant's minizip).
|
||||
** Compression and decompression actually uses the zlib library.
|
||||
**
|
||||
** Copyright (C) 2007-2012 Angius Fabrizio. All rights reserved.
|
||||
**
|
||||
** This file is part of the OSDaB project (http://osdab.42cows.org/).
|
||||
**
|
||||
** This file may be distributed and/or modified under the terms of the
|
||||
** GNU General Public License version 2 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||
** packaging of this file.
|
||||
**
|
||||
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
**
|
||||
** See the file LICENSE.GPL that came with this software distribution or
|
||||
** visit http://www.gnu.org/copyleft/gpl.html for GPL licensing information.
|
||||
**
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef OSDAB_UNZIP__H
|
||||
#define OSDAB_UNZIP__H
|
||||
|
||||
#include "zipglobal.h"
|
||||
|
||||
#include <QtCore/QDateTime>
|
||||
#include <QtCore/QMap>
|
||||
#include <QtCore/QtGlobal>
|
||||
|
||||
#include <zlib.h>
|
||||
|
||||
class QDir;
|
||||
class QFile;
|
||||
class QIODevice;
|
||||
class QString;
|
||||
class QStringList;
|
||||
|
||||
OSDAB_BEGIN_NAMESPACE(Zip)
|
||||
|
||||
class UnzipPrivate;
|
||||
|
||||
class OSDAB_ZIP_EXPORT UnZip
|
||||
{
|
||||
public:
|
||||
enum ErrorCode
|
||||
{
|
||||
Ok,
|
||||
ZlibInit,
|
||||
ZlibError,
|
||||
OpenFailed,
|
||||
PartiallyCorrupted,
|
||||
Corrupted,
|
||||
WrongPassword,
|
||||
NoOpenArchive,
|
||||
FileNotFound,
|
||||
ReadFailed,
|
||||
WriteFailed,
|
||||
SeekFailed,
|
||||
CreateDirFailed,
|
||||
InvalidDevice,
|
||||
InvalidArchive,
|
||||
HeaderConsistencyError,
|
||||
|
||||
Skip, SkipAll // internal use only
|
||||
};
|
||||
|
||||
enum ExtractionOption
|
||||
{
|
||||
ExtractPaths = 0x0001,
|
||||
SkipPaths = 0x0002,
|
||||
VerifyOnly = 0x0004,
|
||||
NoSilentDirectoryCreation = 0x0008
|
||||
};
|
||||
Q_DECLARE_FLAGS(ExtractionOptions, ExtractionOption)
|
||||
|
||||
enum CompressionMethod
|
||||
{
|
||||
NoCompression, Deflated, UnknownCompression
|
||||
};
|
||||
|
||||
enum FileType
|
||||
{
|
||||
File, Directory
|
||||
};
|
||||
|
||||
struct ZipEntry
|
||||
{
|
||||
ZipEntry();
|
||||
|
||||
QString filename;
|
||||
QString comment;
|
||||
|
||||
quint32 compressedSize;
|
||||
quint32 uncompressedSize;
|
||||
quint32 crc32;
|
||||
|
||||
QDateTime lastModified;
|
||||
|
||||
CompressionMethod compression;
|
||||
FileType type;
|
||||
|
||||
bool encrypted;
|
||||
};
|
||||
|
||||
UnZip();
|
||||
virtual ~UnZip();
|
||||
|
||||
bool isOpen() const;
|
||||
|
||||
ErrorCode openArchive(const QString& filename);
|
||||
ErrorCode openArchive(QIODevice* device);
|
||||
void closeArchive();
|
||||
|
||||
QString archiveComment() const;
|
||||
|
||||
QString formatError(UnZip::ErrorCode c) const;
|
||||
|
||||
bool contains(const QString& file) const;
|
||||
|
||||
QStringList fileList() const;
|
||||
QList<ZipEntry> entryList() const;
|
||||
|
||||
ErrorCode verifyArchive();
|
||||
|
||||
ErrorCode extractAll(const QString& dirname, ExtractionOptions options = ExtractPaths);
|
||||
ErrorCode extractAll(const QDir& dir, ExtractionOptions options = ExtractPaths);
|
||||
|
||||
ErrorCode extractFile(const QString& filename, const QString& dirname, ExtractionOptions options = ExtractPaths);
|
||||
ErrorCode extractFile(const QString& filename, const QDir& dir, ExtractionOptions options = ExtractPaths);
|
||||
ErrorCode extractFile(const QString& filename, QIODevice* device, ExtractionOptions options = ExtractPaths);
|
||||
|
||||
ErrorCode extractFiles(const QStringList& filenames, const QString& dirname, ExtractionOptions options = ExtractPaths);
|
||||
ErrorCode extractFiles(const QStringList& filenames, const QDir& dir, ExtractionOptions options = ExtractPaths);
|
||||
|
||||
void setPassword(const QString& pwd);
|
||||
|
||||
private:
|
||||
UnzipPrivate* d;
|
||||
};
|
||||
|
||||
Q_DECLARE_OPERATORS_FOR_FLAGS(UnZip::ExtractionOptions)
|
||||
|
||||
OSDAB_END_NAMESPACE
|
||||
|
||||
#endif // OSDAB_UNZIP__H
|
||||
/****************************************************************************
|
||||
** Filename: unzip.h
|
||||
** Last updated [dd/mm/yyyy]: 27/03/2011
|
||||
**
|
||||
** pkzip 2.0 decompression.
|
||||
**
|
||||
** Some of the code has been inspired by other open source projects,
|
||||
** (mainly Info-Zip and Gilles Vollant's minizip).
|
||||
** Compression and decompression actually uses the zlib library.
|
||||
**
|
||||
** Copyright (C) 2007-2012 Angius Fabrizio. All rights reserved.
|
||||
**
|
||||
** This file is part of the OSDaB project (http://osdab.42cows.org/).
|
||||
**
|
||||
** This file may be distributed and/or modified under the terms of the
|
||||
** GNU General Public License version 2 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||
** packaging of this file.
|
||||
**
|
||||
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
**
|
||||
** See the file LICENSE.GPL that came with this software distribution or
|
||||
** visit http://www.gnu.org/copyleft/gpl.html for GPL licensing information.
|
||||
**
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef OSDAB_UNZIP__H
|
||||
#define OSDAB_UNZIP__H
|
||||
|
||||
#include "zipglobal.h"
|
||||
|
||||
#include <QtCore/QDateTime>
|
||||
#include <QtCore/QMap>
|
||||
#include <QtCore/QtGlobal>
|
||||
|
||||
#include <zlib.h>
|
||||
|
||||
class QDir;
|
||||
class QFile;
|
||||
class QIODevice;
|
||||
class QString;
|
||||
class QStringList;
|
||||
|
||||
OSDAB_BEGIN_NAMESPACE(Zip)
|
||||
|
||||
class UnzipPrivate;
|
||||
|
||||
class OSDAB_ZIP_EXPORT UnZip
|
||||
{
|
||||
public:
|
||||
enum ErrorCode
|
||||
{
|
||||
Ok,
|
||||
ZlibInit,
|
||||
ZlibError,
|
||||
OpenFailed,
|
||||
PartiallyCorrupted,
|
||||
Corrupted,
|
||||
WrongPassword,
|
||||
NoOpenArchive,
|
||||
FileNotFound,
|
||||
ReadFailed,
|
||||
WriteFailed,
|
||||
SeekFailed,
|
||||
CreateDirFailed,
|
||||
InvalidDevice,
|
||||
InvalidArchive,
|
||||
HeaderConsistencyError,
|
||||
|
||||
Skip, SkipAll // internal use only
|
||||
};
|
||||
|
||||
enum ExtractionOption
|
||||
{
|
||||
ExtractPaths = 0x0001,
|
||||
SkipPaths = 0x0002,
|
||||
VerifyOnly = 0x0004,
|
||||
NoSilentDirectoryCreation = 0x0008
|
||||
};
|
||||
Q_DECLARE_FLAGS(ExtractionOptions, ExtractionOption)
|
||||
|
||||
enum CompressionMethod
|
||||
{
|
||||
NoCompression, Deflated, UnknownCompression
|
||||
};
|
||||
|
||||
enum FileType
|
||||
{
|
||||
File, Directory
|
||||
};
|
||||
|
||||
struct ZipEntry
|
||||
{
|
||||
ZipEntry();
|
||||
|
||||
QString filename;
|
||||
QString comment;
|
||||
|
||||
quint32 compressedSize;
|
||||
quint32 uncompressedSize;
|
||||
quint32 crc32;
|
||||
|
||||
QDateTime lastModified;
|
||||
|
||||
CompressionMethod compression;
|
||||
FileType type;
|
||||
|
||||
bool encrypted;
|
||||
};
|
||||
|
||||
UnZip();
|
||||
virtual ~UnZip();
|
||||
|
||||
bool isOpen() const;
|
||||
|
||||
ErrorCode openArchive(const QString& filename);
|
||||
ErrorCode openArchive(QIODevice* device);
|
||||
void closeArchive();
|
||||
|
||||
QString archiveComment() const;
|
||||
|
||||
QString formatError(UnZip::ErrorCode c) const;
|
||||
|
||||
bool contains(const QString& file) const;
|
||||
|
||||
QStringList fileList() const;
|
||||
QList<ZipEntry> entryList() const;
|
||||
|
||||
ErrorCode verifyArchive();
|
||||
|
||||
ErrorCode extractAll(const QString& dirname, ExtractionOptions options = ExtractPaths);
|
||||
ErrorCode extractAll(const QDir& dir, ExtractionOptions options = ExtractPaths);
|
||||
|
||||
ErrorCode extractFile(const QString& filename, const QString& dirname, ExtractionOptions options = ExtractPaths);
|
||||
ErrorCode extractFile(const QString& filename, const QDir& dir, ExtractionOptions options = ExtractPaths);
|
||||
ErrorCode extractFile(const QString& filename, QIODevice* device, ExtractionOptions options = ExtractPaths);
|
||||
|
||||
ErrorCode extractFiles(const QStringList& filenames, const QString& dirname, ExtractionOptions options = ExtractPaths);
|
||||
ErrorCode extractFiles(const QStringList& filenames, const QDir& dir, ExtractionOptions options = ExtractPaths);
|
||||
|
||||
void setPassword(const QString& pwd);
|
||||
|
||||
private:
|
||||
UnzipPrivate* d;
|
||||
};
|
||||
|
||||
Q_DECLARE_OPERATORS_FOR_FLAGS(UnZip::ExtractionOptions)
|
||||
|
||||
OSDAB_END_NAMESPACE
|
||||
|
||||
#endif // OSDAB_UNZIP__H
|
||||
|
|
|
@ -1,130 +1,130 @@
|
|||
/****************************************************************************
|
||||
** Filename: unzip_p.h
|
||||
** Last updated [dd/mm/yyyy]: 27/03/2011
|
||||
**
|
||||
** pkzip 2.0 decompression.
|
||||
**
|
||||
** Some of the code has been inspired by other open source projects,
|
||||
** (mainly Info-Zip and Gilles Vollant's minizip).
|
||||
** Compression and decompression actually uses the zlib library.
|
||||
**
|
||||
** Copyright (C) 2007-2012 Angius Fabrizio. All rights reserved.
|
||||
**
|
||||
** This file is part of the OSDaB project (http://osdab.42cows.org/).
|
||||
**
|
||||
** This file may be distributed and/or modified under the terms of the
|
||||
** GNU General Public License version 2 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||
** packaging of this file.
|
||||
**
|
||||
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
**
|
||||
** See the file LICENSE.GPL that came with this software distribution or
|
||||
** visit http://www.gnu.org/copyleft/gpl.html for GPL licensing information.
|
||||
**
|
||||
**********************************************************************/
|
||||
|
||||
//
|
||||
// W A R N I N G
|
||||
// -------------
|
||||
//
|
||||
// This file is not part of the Zip/UnZip API. It exists purely as an
|
||||
// implementation detail. This header file may change from version to
|
||||
// version without notice, or even be removed.
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#ifndef OSDAB_UNZIP_P__H
|
||||
#define OSDAB_UNZIP_P__H
|
||||
|
||||
#include "unzip.h"
|
||||
#include "zipentry_p.h"
|
||||
|
||||
#include <QtCore/QObject>
|
||||
#include <QtCore/QtGlobal>
|
||||
|
||||
// zLib authors suggest using larger buffers (128K or 256K) for (de)compression (especially for inflate())
|
||||
// we use a 256K buffer here - if you want to use this code on a pre-iceage mainframe please change it ;)
|
||||
#define UNZIP_READ_BUFFER (256*1024)
|
||||
|
||||
OSDAB_BEGIN_NAMESPACE(Zip)
|
||||
|
||||
class UnzipPrivate : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
UnzipPrivate();
|
||||
|
||||
// Replace this with whatever else you use to store/retrieve the password.
|
||||
QString password;
|
||||
|
||||
bool skipAllEncrypted;
|
||||
|
||||
QMap<QString,ZipEntryP*>* headers;
|
||||
|
||||
QIODevice* device;
|
||||
QFile* file;
|
||||
|
||||
char buffer1[UNZIP_READ_BUFFER];
|
||||
char buffer2[UNZIP_READ_BUFFER];
|
||||
|
||||
unsigned char* uBuffer;
|
||||
const quint32* crcTable;
|
||||
|
||||
// Central Directory (CD) offset
|
||||
quint32 cdOffset;
|
||||
// End of Central Directory (EOCD) offset
|
||||
quint32 eocdOffset;
|
||||
|
||||
// Number of entries in the Central Directory (as to the EOCD record)
|
||||
quint16 cdEntryCount;
|
||||
|
||||
// The number of detected entries that have been skipped because of a non compatible format
|
||||
quint16 unsupportedEntryCount;
|
||||
|
||||
QString comment;
|
||||
|
||||
UnZip::ErrorCode openArchive(QIODevice* device);
|
||||
|
||||
UnZip::ErrorCode seekToCentralDirectory();
|
||||
UnZip::ErrorCode parseCentralDirectoryRecord();
|
||||
UnZip::ErrorCode parseLocalHeaderRecord(const QString& path, const ZipEntryP& entry);
|
||||
|
||||
void closeArchive();
|
||||
|
||||
UnZip::ErrorCode 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);
|
||||
bool testKeys(const ZipEntryP& header, quint32* keys);
|
||||
|
||||
bool createDirectory(const QString& path);
|
||||
|
||||
inline void decryptBytes(quint32* keys, char* buffer, qint64 read);
|
||||
|
||||
inline quint32 getULong(const unsigned char* data, quint32 offset) const;
|
||||
inline quint64 getULLong(const unsigned char* data, quint32 offset) const;
|
||||
inline quint16 getUShort(const unsigned char* data, quint32 offset) const;
|
||||
inline int decryptByte(quint32 key2) const;
|
||||
inline void updateKeys(quint32* keys, int c) const;
|
||||
inline void initKeys(const QString& pwd, quint32* keys) const;
|
||||
|
||||
inline QDateTime convertDateTime(const unsigned char date[2], const unsigned char time[2]) const;
|
||||
|
||||
private slots:
|
||||
void deviceDestroyed(QObject*);
|
||||
|
||||
private:
|
||||
UnZip::ErrorCode extractStoredFile(const quint32 szComp, quint32** keys,
|
||||
quint32& myCRC, QIODevice* outDev, UnZip::ExtractionOptions options);
|
||||
UnZip::ErrorCode inflateFile(const quint32 szComp, quint32** keys,
|
||||
quint32& myCRC, QIODevice* outDev, UnZip::ExtractionOptions options);
|
||||
void do_closeArchive();
|
||||
};
|
||||
|
||||
OSDAB_END_NAMESPACE
|
||||
|
||||
#endif // OSDAB_UNZIP_P__H
|
||||
/****************************************************************************
|
||||
** Filename: unzip_p.h
|
||||
** Last updated [dd/mm/yyyy]: 27/03/2011
|
||||
**
|
||||
** pkzip 2.0 decompression.
|
||||
**
|
||||
** Some of the code has been inspired by other open source projects,
|
||||
** (mainly Info-Zip and Gilles Vollant's minizip).
|
||||
** Compression and decompression actually uses the zlib library.
|
||||
**
|
||||
** Copyright (C) 2007-2012 Angius Fabrizio. All rights reserved.
|
||||
**
|
||||
** This file is part of the OSDaB project (http://osdab.42cows.org/).
|
||||
**
|
||||
** This file may be distributed and/or modified under the terms of the
|
||||
** GNU General Public License version 2 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||
** packaging of this file.
|
||||
**
|
||||
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
**
|
||||
** See the file LICENSE.GPL that came with this software distribution or
|
||||
** visit http://www.gnu.org/copyleft/gpl.html for GPL licensing information.
|
||||
**
|
||||
**********************************************************************/
|
||||
|
||||
//
|
||||
// W A R N I N G
|
||||
// -------------
|
||||
//
|
||||
// This file is not part of the Zip/UnZip API. It exists purely as an
|
||||
// implementation detail. This header file may change from version to
|
||||
// version without notice, or even be removed.
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#ifndef OSDAB_UNZIP_P__H
|
||||
#define OSDAB_UNZIP_P__H
|
||||
|
||||
#include "unzip.h"
|
||||
#include "zipentry_p.h"
|
||||
|
||||
#include <QtCore/QObject>
|
||||
#include <QtCore/QtGlobal>
|
||||
|
||||
// zLib authors suggest using larger buffers (128K or 256K) for (de)compression (especially for inflate())
|
||||
// we use a 256K buffer here - if you want to use this code on a pre-iceage mainframe please change it ;)
|
||||
#define UNZIP_READ_BUFFER (256*1024)
|
||||
|
||||
OSDAB_BEGIN_NAMESPACE(Zip)
|
||||
|
||||
class UnzipPrivate : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
UnzipPrivate();
|
||||
|
||||
// Replace this with whatever else you use to store/retrieve the password.
|
||||
QString password;
|
||||
|
||||
bool skipAllEncrypted;
|
||||
|
||||
QMap<QString,ZipEntryP*>* headers;
|
||||
|
||||
QIODevice* device;
|
||||
QFile* file;
|
||||
|
||||
char buffer1[UNZIP_READ_BUFFER];
|
||||
char buffer2[UNZIP_READ_BUFFER];
|
||||
|
||||
unsigned char* uBuffer;
|
||||
const quint32* crcTable;
|
||||
|
||||
// Central Directory (CD) offset
|
||||
quint32 cdOffset;
|
||||
// End of Central Directory (EOCD) offset
|
||||
quint32 eocdOffset;
|
||||
|
||||
// Number of entries in the Central Directory (as to the EOCD record)
|
||||
quint16 cdEntryCount;
|
||||
|
||||
// The number of detected entries that have been skipped because of a non compatible format
|
||||
quint16 unsupportedEntryCount;
|
||||
|
||||
QString comment;
|
||||
|
||||
UnZip::ErrorCode openArchive(QIODevice* device);
|
||||
|
||||
UnZip::ErrorCode seekToCentralDirectory();
|
||||
UnZip::ErrorCode parseCentralDirectoryRecord();
|
||||
UnZip::ErrorCode parseLocalHeaderRecord(const QString& path, const ZipEntryP& entry);
|
||||
|
||||
void closeArchive();
|
||||
|
||||
UnZip::ErrorCode 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);
|
||||
bool testKeys(const ZipEntryP& header, quint32* keys);
|
||||
|
||||
bool createDirectory(const QString& path);
|
||||
|
||||
inline void decryptBytes(quint32* keys, char* buffer, qint64 read);
|
||||
|
||||
inline quint32 getULong(const unsigned char* data, quint32 offset) const;
|
||||
inline quint64 getULLong(const unsigned char* data, quint32 offset) const;
|
||||
inline quint16 getUShort(const unsigned char* data, quint32 offset) const;
|
||||
inline int decryptByte(quint32 key2) const;
|
||||
inline void updateKeys(quint32* keys, int c) const;
|
||||
inline void initKeys(const QString& pwd, quint32* keys) const;
|
||||
|
||||
inline QDateTime convertDateTime(const unsigned char date[2], const unsigned char time[2]) const;
|
||||
|
||||
private slots:
|
||||
void deviceDestroyed(QObject*);
|
||||
|
||||
private:
|
||||
UnZip::ErrorCode extractStoredFile(const quint32 szComp, quint32** keys,
|
||||
quint32& myCRC, QIODevice* outDev, UnZip::ExtractionOptions options);
|
||||
UnZip::ErrorCode inflateFile(const quint32 szComp, quint32** keys,
|
||||
quint32& myCRC, QIODevice* outDev, UnZip::ExtractionOptions options);
|
||||
void do_closeArchive();
|
||||
};
|
||||
|
||||
OSDAB_END_NAMESPACE
|
||||
|
||||
#endif // OSDAB_UNZIP_P__H
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,158 +1,158 @@
|
|||
/****************************************************************************
|
||||
** Filename: zip.h
|
||||
** Last updated [dd/mm/yyyy]: 27/03/2011
|
||||
**
|
||||
** pkzip 2.0 file compression.
|
||||
**
|
||||
** Some of the code has been inspired by other open source projects,
|
||||
** (mainly Info-Zip and Gilles Vollant's minizip).
|
||||
** Compression and decompression actually uses the zlib library.
|
||||
**
|
||||
** Copyright (C) 2007-2012 Angius Fabrizio. All rights reserved.
|
||||
**
|
||||
** This file is part of the OSDaB project (http://osdab.42cows.org/).
|
||||
**
|
||||
** This file may be distributed and/or modified under the terms of the
|
||||
** GNU General Public License version 2 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||
** packaging of this file.
|
||||
**
|
||||
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
**
|
||||
** See the file LICENSE.GPL that came with this software distribution or
|
||||
** visit http://www.gnu.org/copyleft/gpl.html for GPL licensing information.
|
||||
**
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef OSDAB_ZIP__H
|
||||
#define OSDAB_ZIP__H
|
||||
|
||||
#include "zipglobal.h"
|
||||
|
||||
#include <QtCore/QMap>
|
||||
#include <QtCore/QtGlobal>
|
||||
|
||||
#include <zlib/zlib.h>
|
||||
|
||||
class QIODevice;
|
||||
class QFile;
|
||||
class QDir;
|
||||
class QStringList;
|
||||
class QString;
|
||||
|
||||
OSDAB_BEGIN_NAMESPACE(Zip)
|
||||
|
||||
class ZipPrivate;
|
||||
|
||||
class OSDAB_ZIP_EXPORT Zip
|
||||
{
|
||||
public:
|
||||
enum ErrorCode
|
||||
{
|
||||
Ok,
|
||||
ZlibInit,
|
||||
ZlibError,
|
||||
FileExists,
|
||||
OpenFailed,
|
||||
NoOpenArchive,
|
||||
FileNotFound,
|
||||
ReadFailed,
|
||||
WriteFailed,
|
||||
SeekFailed,
|
||||
InternalError
|
||||
};
|
||||
|
||||
enum CompressionLevel
|
||||
{
|
||||
Store,
|
||||
Deflate1 = 1, Deflate2, Deflate3, Deflate4,
|
||||
Deflate5, Deflate6, Deflate7, Deflate8, Deflate9,
|
||||
AutoCPU, AutoMIME, AutoFull
|
||||
};
|
||||
|
||||
enum CompressionOption
|
||||
{
|
||||
/*! Does not preserve absolute paths in the zip file when adding a
|
||||
file or directory (default) */
|
||||
RelativePaths = 0x0001,
|
||||
/*! Preserve absolute paths */
|
||||
AbsolutePaths = 0x0002,
|
||||
/*! Do not store paths. All the files are put in the (evtl. user defined)
|
||||
root of the zip file */
|
||||
IgnorePaths = 0x0004,
|
||||
/*! Works only with addDirectory(). Adds the directory's contents,
|
||||
including subdirectories, but does not add an entry for the root
|
||||
directory itself. */
|
||||
IgnoreRoot = 0x0008,
|
||||
/*! Used only when compressing a directory or multiple files.
|
||||
If set invalid or unreadable files are simply skipped.
|
||||
*/
|
||||
SkipBadFiles = 0x0020,
|
||||
/*! Makes sure a file is never added twice to the same zip archive.
|
||||
This check is only necessary in certain usage scenarios and given
|
||||
that it slows down processing you need to enable it explicitly with
|
||||
this flag.
|
||||
*/
|
||||
CheckForDuplicates = 0x0040
|
||||
};
|
||||
Q_DECLARE_FLAGS(CompressionOptions, CompressionOption)
|
||||
|
||||
Zip();
|
||||
virtual ~Zip();
|
||||
|
||||
bool isOpen() const;
|
||||
|
||||
void setPassword(const QString& pwd);
|
||||
void clearPassword();
|
||||
QString password() const;
|
||||
|
||||
ErrorCode createArchive(const QString& file, bool overwrite = true);
|
||||
ErrorCode createArchive(QIODevice* device);
|
||||
|
||||
QString archiveComment() const;
|
||||
void setArchiveComment(const QString& comment);
|
||||
|
||||
ErrorCode addDirectoryContents(const QString& path,
|
||||
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, const QString& root,
|
||||
CompressionOptions options, CompressionLevel level = AutoFull,
|
||||
int* addedFiles = 0);
|
||||
|
||||
ErrorCode addFile(const QString& path,
|
||||
CompressionLevel level = AutoFull);
|
||||
ErrorCode addFile(const QString& path, const QString& root,
|
||||
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, const QString& root,
|
||||
CompressionOptions options,
|
||||
CompressionLevel level = AutoFull,
|
||||
int* addedFiles = 0);
|
||||
|
||||
ErrorCode closeArchive();
|
||||
|
||||
QString formatError(ErrorCode c) const;
|
||||
|
||||
private:
|
||||
ZipPrivate* d;
|
||||
};
|
||||
|
||||
Q_DECLARE_OPERATORS_FOR_FLAGS(Zip::CompressionOptions)
|
||||
|
||||
OSDAB_END_NAMESPACE
|
||||
|
||||
#endif // OSDAB_ZIP__H
|
||||
/****************************************************************************
|
||||
** Filename: zip.h
|
||||
** Last updated [dd/mm/yyyy]: 27/03/2011
|
||||
**
|
||||
** pkzip 2.0 file compression.
|
||||
**
|
||||
** Some of the code has been inspired by other open source projects,
|
||||
** (mainly Info-Zip and Gilles Vollant's minizip).
|
||||
** Compression and decompression actually uses the zlib library.
|
||||
**
|
||||
** Copyright (C) 2007-2012 Angius Fabrizio. All rights reserved.
|
||||
**
|
||||
** This file is part of the OSDaB project (http://osdab.42cows.org/).
|
||||
**
|
||||
** This file may be distributed and/or modified under the terms of the
|
||||
** GNU General Public License version 2 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||
** packaging of this file.
|
||||
**
|
||||
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
**
|
||||
** See the file LICENSE.GPL that came with this software distribution or
|
||||
** visit http://www.gnu.org/copyleft/gpl.html for GPL licensing information.
|
||||
**
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef OSDAB_ZIP__H
|
||||
#define OSDAB_ZIP__H
|
||||
|
||||
#include "zipglobal.h"
|
||||
|
||||
#include <QtCore/QMap>
|
||||
#include <QtCore/QtGlobal>
|
||||
|
||||
#include <zlib/zlib.h>
|
||||
|
||||
class QIODevice;
|
||||
class QFile;
|
||||
class QDir;
|
||||
class QStringList;
|
||||
class QString;
|
||||
|
||||
OSDAB_BEGIN_NAMESPACE(Zip)
|
||||
|
||||
class ZipPrivate;
|
||||
|
||||
class OSDAB_ZIP_EXPORT Zip
|
||||
{
|
||||
public:
|
||||
enum ErrorCode
|
||||
{
|
||||
Ok,
|
||||
ZlibInit,
|
||||
ZlibError,
|
||||
FileExists,
|
||||
OpenFailed,
|
||||
NoOpenArchive,
|
||||
FileNotFound,
|
||||
ReadFailed,
|
||||
WriteFailed,
|
||||
SeekFailed,
|
||||
InternalError
|
||||
};
|
||||
|
||||
enum CompressionLevel
|
||||
{
|
||||
Store,
|
||||
Deflate1 = 1, Deflate2, Deflate3, Deflate4,
|
||||
Deflate5, Deflate6, Deflate7, Deflate8, Deflate9,
|
||||
AutoCPU, AutoMIME, AutoFull
|
||||
};
|
||||
|
||||
enum CompressionOption
|
||||
{
|
||||
/*! Does not preserve absolute paths in the zip file when adding a
|
||||
file or directory (default) */
|
||||
RelativePaths = 0x0001,
|
||||
/*! Preserve absolute paths */
|
||||
AbsolutePaths = 0x0002,
|
||||
/*! Do not store paths. All the files are put in the (evtl. user defined)
|
||||
root of the zip file */
|
||||
IgnorePaths = 0x0004,
|
||||
/*! Works only with addDirectory(). Adds the directory's contents,
|
||||
including subdirectories, but does not add an entry for the root
|
||||
directory itself. */
|
||||
IgnoreRoot = 0x0008,
|
||||
/*! Used only when compressing a directory or multiple files.
|
||||
If set invalid or unreadable files are simply skipped.
|
||||
*/
|
||||
SkipBadFiles = 0x0020,
|
||||
/*! Makes sure a file is never added twice to the same zip archive.
|
||||
This check is only necessary in certain usage scenarios and given
|
||||
that it slows down processing you need to enable it explicitly with
|
||||
this flag.
|
||||
*/
|
||||
CheckForDuplicates = 0x0040
|
||||
};
|
||||
Q_DECLARE_FLAGS(CompressionOptions, CompressionOption)
|
||||
|
||||
Zip();
|
||||
virtual ~Zip();
|
||||
|
||||
bool isOpen() const;
|
||||
|
||||
void setPassword(const QString& pwd);
|
||||
void clearPassword();
|
||||
QString password() const;
|
||||
|
||||
ErrorCode createArchive(const QString& file, bool overwrite = true);
|
||||
ErrorCode createArchive(QIODevice* device);
|
||||
|
||||
QString archiveComment() const;
|
||||
void setArchiveComment(const QString& comment);
|
||||
|
||||
ErrorCode addDirectoryContents(const QString& path,
|
||||
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, const QString& root,
|
||||
CompressionOptions options, CompressionLevel level = AutoFull,
|
||||
int* addedFiles = 0);
|
||||
|
||||
ErrorCode addFile(const QString& path,
|
||||
CompressionLevel level = AutoFull);
|
||||
ErrorCode addFile(const QString& path, const QString& root,
|
||||
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, const QString& root,
|
||||
CompressionOptions options,
|
||||
CompressionLevel level = AutoFull,
|
||||
int* addedFiles = 0);
|
||||
|
||||
ErrorCode closeArchive();
|
||||
|
||||
QString formatError(ErrorCode c) const;
|
||||
|
||||
private:
|
||||
ZipPrivate* d;
|
||||
};
|
||||
|
||||
Q_DECLARE_OPERATORS_FOR_FLAGS(Zip::CompressionOptions)
|
||||
|
||||
OSDAB_END_NAMESPACE
|
||||
|
||||
#endif // OSDAB_ZIP__H
|
||||
|
|
|
@ -1,133 +1,133 @@
|
|||
/****************************************************************************
|
||||
** Filename: zip_p.h
|
||||
** Last updated [dd/mm/yyyy]: 27/03/2011
|
||||
**
|
||||
** pkzip 2.0 file compression.
|
||||
**
|
||||
** Some of the code has been inspired by other open source projects,
|
||||
** (mainly Info-Zip and Gilles Vollant's minizip).
|
||||
** Compression and decompression actually uses the zlib library.
|
||||
**
|
||||
** Copyright (C) 2007-2012 Angius Fabrizio. All rights reserved.
|
||||
**
|
||||
** This file is part of the OSDaB project (http://osdab.42cows.org/).
|
||||
**
|
||||
** This file may be distributed and/or modified under the terms of the
|
||||
** GNU General Public License version 2 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||
** packaging of this file.
|
||||
**
|
||||
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
**
|
||||
** See the file LICENSE.GPL that came with this software distribution or
|
||||
** visit http://www.gnu.org/copyleft/gpl.html for GPL licensing information.
|
||||
**
|
||||
**********************************************************************/
|
||||
|
||||
//
|
||||
// W A R N I N G
|
||||
// -------------
|
||||
//
|
||||
// This file is not part of the Zip/UnZip API. It exists purely as an
|
||||
// implementation detail. This header file may change from version to
|
||||
// version without notice, or even be removed.
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#ifndef OSDAB_ZIP_P__H
|
||||
#define OSDAB_ZIP_P__H
|
||||
|
||||
#include "zip.h"
|
||||
#include "zipentry_p.h"
|
||||
|
||||
#include <QtCore/QFileInfo>
|
||||
#include <QtCore/QObject>
|
||||
#include <QtCore/QtGlobal>
|
||||
|
||||
#include <zlib/zconf.h>
|
||||
|
||||
/*!
|
||||
zLib authors suggest using larger buffers (128K or 256K) for (de)compression (especially for inflate())
|
||||
we use a 256K buffer here - if you want to use this code on a pre-iceage mainframe please change it ;)
|
||||
*/
|
||||
#define ZIP_READ_BUFFER (256*1024)
|
||||
|
||||
OSDAB_BEGIN_NAMESPACE(Zip)
|
||||
|
||||
class ZipPrivate : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
// uLongf from zconf.h
|
||||
typedef uLongf crc_t;
|
||||
|
||||
ZipPrivate();
|
||||
virtual ~ZipPrivate();
|
||||
|
||||
QMap<QString,ZipEntryP*>* headers;
|
||||
|
||||
QIODevice* device;
|
||||
QFile* file;
|
||||
|
||||
char buffer1[ZIP_READ_BUFFER];
|
||||
char buffer2[ZIP_READ_BUFFER];
|
||||
|
||||
unsigned char* uBuffer;
|
||||
|
||||
const crc_t* crcTable;
|
||||
|
||||
QString comment;
|
||||
QString password;
|
||||
|
||||
Zip::ErrorCode createArchive(QIODevice* device);
|
||||
Zip::ErrorCode closeArchive();
|
||||
void reset();
|
||||
|
||||
bool zLibInit();
|
||||
|
||||
bool containsEntry(const QFileInfo& info) const;
|
||||
|
||||
Zip::ErrorCode addDirectory(const QString& path, const QString& root,
|
||||
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);
|
||||
|
||||
Zip::ErrorCode createEntry(const QFileInfo& file, const QString& root,
|
||||
Zip::CompressionLevel level);
|
||||
Zip::CompressionLevel detectCompressionByMime(const QString& ext);
|
||||
|
||||
inline quint32 updateChecksum(const quint32& crc, const quint32& val) const;
|
||||
|
||||
inline void encryptBytes(quint32* keys, char* buffer, qint64 read);
|
||||
|
||||
inline void setULong(quint32 v, char* buffer, unsigned int offset);
|
||||
inline void updateKeys(quint32* keys, int c) const;
|
||||
inline void initKeys(quint32* keys) const;
|
||||
inline int decryptByte(quint32 key2) const;
|
||||
|
||||
inline QString extractRoot(const QString& p, Zip::CompressionOptions o);
|
||||
|
||||
private slots:
|
||||
void deviceDestroyed(QObject*);
|
||||
|
||||
private:
|
||||
int compressionStrategy(const QString& path, QIODevice& file) const;
|
||||
Zip::ErrorCode deflateFile(const QFileInfo& fileInfo,
|
||||
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 writeEntry(const QString& fileName, const ZipEntryP* h, quint32& szCentralDir);
|
||||
Zip::ErrorCode writeCentralDir(quint32 offCentralDir, quint32 szCentralDir);
|
||||
};
|
||||
|
||||
OSDAB_END_NAMESPACE
|
||||
|
||||
#endif // OSDAB_ZIP_P__H
|
||||
/****************************************************************************
|
||||
** Filename: zip_p.h
|
||||
** Last updated [dd/mm/yyyy]: 27/03/2011
|
||||
**
|
||||
** pkzip 2.0 file compression.
|
||||
**
|
||||
** Some of the code has been inspired by other open source projects,
|
||||
** (mainly Info-Zip and Gilles Vollant's minizip).
|
||||
** Compression and decompression actually uses the zlib library.
|
||||
**
|
||||
** Copyright (C) 2007-2012 Angius Fabrizio. All rights reserved.
|
||||
**
|
||||
** This file is part of the OSDaB project (http://osdab.42cows.org/).
|
||||
**
|
||||
** This file may be distributed and/or modified under the terms of the
|
||||
** GNU General Public License version 2 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||
** packaging of this file.
|
||||
**
|
||||
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
**
|
||||
** See the file LICENSE.GPL that came with this software distribution or
|
||||
** visit http://www.gnu.org/copyleft/gpl.html for GPL licensing information.
|
||||
**
|
||||
**********************************************************************/
|
||||
|
||||
//
|
||||
// W A R N I N G
|
||||
// -------------
|
||||
//
|
||||
// This file is not part of the Zip/UnZip API. It exists purely as an
|
||||
// implementation detail. This header file may change from version to
|
||||
// version without notice, or even be removed.
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#ifndef OSDAB_ZIP_P__H
|
||||
#define OSDAB_ZIP_P__H
|
||||
|
||||
#include "zip.h"
|
||||
#include "zipentry_p.h"
|
||||
|
||||
#include <QtCore/QFileInfo>
|
||||
#include <QtCore/QObject>
|
||||
#include <QtCore/QtGlobal>
|
||||
|
||||
#include <zlib/zconf.h>
|
||||
|
||||
/*!
|
||||
zLib authors suggest using larger buffers (128K or 256K) for (de)compression (especially for inflate())
|
||||
we use a 256K buffer here - if you want to use this code on a pre-iceage mainframe please change it ;)
|
||||
*/
|
||||
#define ZIP_READ_BUFFER (256*1024)
|
||||
|
||||
OSDAB_BEGIN_NAMESPACE(Zip)
|
||||
|
||||
class ZipPrivate : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
// uLongf from zconf.h
|
||||
typedef uLongf crc_t;
|
||||
|
||||
ZipPrivate();
|
||||
virtual ~ZipPrivate();
|
||||
|
||||
QMap<QString,ZipEntryP*>* headers;
|
||||
|
||||
QIODevice* device;
|
||||
QFile* file;
|
||||
|
||||
char buffer1[ZIP_READ_BUFFER];
|
||||
char buffer2[ZIP_READ_BUFFER];
|
||||
|
||||
unsigned char* uBuffer;
|
||||
|
||||
const crc_t* crcTable;
|
||||
|
||||
QString comment;
|
||||
QString password;
|
||||
|
||||
Zip::ErrorCode createArchive(QIODevice* device);
|
||||
Zip::ErrorCode closeArchive();
|
||||
void reset();
|
||||
|
||||
bool zLibInit();
|
||||
|
||||
bool containsEntry(const QFileInfo& info) const;
|
||||
|
||||
Zip::ErrorCode addDirectory(const QString& path, const QString& root,
|
||||
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);
|
||||
|
||||
Zip::ErrorCode createEntry(const QFileInfo& file, const QString& root,
|
||||
Zip::CompressionLevel level);
|
||||
Zip::CompressionLevel detectCompressionByMime(const QString& ext);
|
||||
|
||||
inline quint32 updateChecksum(const quint32& crc, const quint32& val) const;
|
||||
|
||||
inline void encryptBytes(quint32* keys, char* buffer, qint64 read);
|
||||
|
||||
inline void setULong(quint32 v, char* buffer, unsigned int offset);
|
||||
inline void updateKeys(quint32* keys, int c) const;
|
||||
inline void initKeys(quint32* keys) const;
|
||||
inline int decryptByte(quint32 key2) const;
|
||||
|
||||
inline QString extractRoot(const QString& p, Zip::CompressionOptions o);
|
||||
|
||||
private slots:
|
||||
void deviceDestroyed(QObject*);
|
||||
|
||||
private:
|
||||
int compressionStrategy(const QString& path, QIODevice& file) const;
|
||||
Zip::ErrorCode deflateFile(const QFileInfo& fileInfo,
|
||||
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 writeEntry(const QString& fileName, const ZipEntryP* h, quint32& szCentralDir);
|
||||
Zip::ErrorCode writeCentralDir(quint32 offCentralDir, quint32 szCentralDir);
|
||||
};
|
||||
|
||||
OSDAB_END_NAMESPACE
|
||||
|
||||
#endif // OSDAB_ZIP_P__H
|
||||
|
|
|
@ -1,91 +1,91 @@
|
|||
/****************************************************************************
|
||||
** Filename: ZipEntryP.h
|
||||
** Last updated [dd/mm/yyyy]: 27/03/2011
|
||||
**
|
||||
** Wrapper for a ZIP local header.
|
||||
**
|
||||
** Some of the code has been inspired by other open source projects,
|
||||
** (mainly Info-Zip and Gilles Vollant's minizip).
|
||||
** Compression and decompression actually uses the zlib library.
|
||||
**
|
||||
** Copyright (C) 2007-2012 Angius Fabrizio. All rights reserved.
|
||||
**
|
||||
** This file is part of the OSDaB project (http://osdab.42cows.org/).
|
||||
**
|
||||
** This file may be distributed and/or modified under the terms of the
|
||||
** GNU General Public License version 2 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||
** packaging of this file.
|
||||
**
|
||||
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
**
|
||||
** See the file LICENSE.GPL that came with this software distribution or
|
||||
** visit http://www.gnu.org/copyleft/gpl.html for GPL licensing information.
|
||||
**
|
||||
**********************************************************************/
|
||||
|
||||
//
|
||||
// W A R N I N G
|
||||
// -------------
|
||||
//
|
||||
// This file is not part of the Zip/UnZip API. It exists purely as an
|
||||
// implementation detail. This header file may change from version to
|
||||
// version without notice, or even be removed.
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#ifndef OSDAB_ZIPENTRY_P__H
|
||||
#define OSDAB_ZIPENTRY_P__H
|
||||
|
||||
#include <QtCore/QString>
|
||||
#include <QtCore/QtGlobal>
|
||||
|
||||
OSDAB_BEGIN_NAMESPACE(Zip)
|
||||
|
||||
class ZipEntryP
|
||||
{
|
||||
public:
|
||||
ZipEntryP() :
|
||||
lhOffset(0),
|
||||
dataOffset(0),
|
||||
gpFlag(),
|
||||
compMethod(0),
|
||||
modTime(),
|
||||
modDate(),
|
||||
crc(0),
|
||||
szComp(0),
|
||||
szUncomp(0),
|
||||
absolutePath(),
|
||||
fileSize(0),
|
||||
lhEntryChecked(false)
|
||||
{
|
||||
gpFlag[0] = gpFlag[1] = 0;
|
||||
modTime[0] = modTime[1] = 0;
|
||||
modDate[0] = modDate[1] = 0;
|
||||
}
|
||||
|
||||
quint32 lhOffset; // Offset of the local header record for this entry
|
||||
mutable quint32 dataOffset; // Offset of the file data for this entry
|
||||
unsigned char gpFlag[2]; // General purpose flag
|
||||
quint16 compMethod; // Compression method
|
||||
unsigned char modTime[2]; // Last modified time
|
||||
unsigned char modDate[2]; // Last modified date
|
||||
quint32 crc; // CRC32
|
||||
quint32 szComp; // Compressed file size
|
||||
quint32 szUncomp; // Uncompressed file size
|
||||
QString comment; // File comment
|
||||
|
||||
QString absolutePath; // Internal use
|
||||
qint64 fileSize; // Internal use
|
||||
|
||||
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 hasDataDescriptor() const { return gpFlag[0] & 0x08; }
|
||||
};
|
||||
|
||||
OSDAB_END_NAMESPACE
|
||||
|
||||
#endif // OSDAB_ZIPENTRY_P__H
|
||||
/****************************************************************************
|
||||
** Filename: ZipEntryP.h
|
||||
** Last updated [dd/mm/yyyy]: 27/03/2011
|
||||
**
|
||||
** Wrapper for a ZIP local header.
|
||||
**
|
||||
** Some of the code has been inspired by other open source projects,
|
||||
** (mainly Info-Zip and Gilles Vollant's minizip).
|
||||
** Compression and decompression actually uses the zlib library.
|
||||
**
|
||||
** Copyright (C) 2007-2012 Angius Fabrizio. All rights reserved.
|
||||
**
|
||||
** This file is part of the OSDaB project (http://osdab.42cows.org/).
|
||||
**
|
||||
** This file may be distributed and/or modified under the terms of the
|
||||
** GNU General Public License version 2 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||
** packaging of this file.
|
||||
**
|
||||
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
**
|
||||
** See the file LICENSE.GPL that came with this software distribution or
|
||||
** visit http://www.gnu.org/copyleft/gpl.html for GPL licensing information.
|
||||
**
|
||||
**********************************************************************/
|
||||
|
||||
//
|
||||
// W A R N I N G
|
||||
// -------------
|
||||
//
|
||||
// This file is not part of the Zip/UnZip API. It exists purely as an
|
||||
// implementation detail. This header file may change from version to
|
||||
// version without notice, or even be removed.
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#ifndef OSDAB_ZIPENTRY_P__H
|
||||
#define OSDAB_ZIPENTRY_P__H
|
||||
|
||||
#include <QtCore/QString>
|
||||
#include <QtCore/QtGlobal>
|
||||
|
||||
OSDAB_BEGIN_NAMESPACE(Zip)
|
||||
|
||||
class ZipEntryP
|
||||
{
|
||||
public:
|
||||
ZipEntryP() :
|
||||
lhOffset(0),
|
||||
dataOffset(0),
|
||||
gpFlag(),
|
||||
compMethod(0),
|
||||
modTime(),
|
||||
modDate(),
|
||||
crc(0),
|
||||
szComp(0),
|
||||
szUncomp(0),
|
||||
absolutePath(),
|
||||
fileSize(0),
|
||||
lhEntryChecked(false)
|
||||
{
|
||||
gpFlag[0] = gpFlag[1] = 0;
|
||||
modTime[0] = modTime[1] = 0;
|
||||
modDate[0] = modDate[1] = 0;
|
||||
}
|
||||
|
||||
quint32 lhOffset; // Offset of the local header record for this entry
|
||||
mutable quint32 dataOffset; // Offset of the file data for this entry
|
||||
unsigned char gpFlag[2]; // General purpose flag
|
||||
quint16 compMethod; // Compression method
|
||||
unsigned char modTime[2]; // Last modified time
|
||||
unsigned char modDate[2]; // Last modified date
|
||||
quint32 crc; // CRC32
|
||||
quint32 szComp; // Compressed file size
|
||||
quint32 szUncomp; // Uncompressed file size
|
||||
QString comment; // File comment
|
||||
|
||||
QString absolutePath; // Internal use
|
||||
qint64 fileSize; // Internal use
|
||||
|
||||
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 hasDataDescriptor() const { return gpFlag[0] & 0x08; }
|
||||
};
|
||||
|
||||
OSDAB_END_NAMESPACE
|
||||
|
||||
#endif // OSDAB_ZIPENTRY_P__H
|
||||
|
|
|
@ -1,152 +1,152 @@
|
|||
/****************************************************************************
|
||||
** Filename: zipglobal.cpp
|
||||
** Last updated [dd/mm/yyyy]: 06/02/2011
|
||||
**
|
||||
** pkzip 2.0 file compression.
|
||||
**
|
||||
** Some of the code has been inspired by other open source projects,
|
||||
** (mainly Info-Zip and Gilles Vollant's minizip).
|
||||
** Compression and decompression actually uses the zlib library.
|
||||
**
|
||||
** Copyright (C) 2007-2012 Angius Fabrizio. All rights reserved.
|
||||
**
|
||||
** This file is part of the OSDaB project (http://osdab.42cows.org/).
|
||||
**
|
||||
** This file may be distributed and/or modified under the terms of the
|
||||
** GNU General Public License version 2 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||
** packaging of this file.
|
||||
**
|
||||
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
**
|
||||
** See the file LICENSE.GPL that came with this software distribution or
|
||||
** visit http://www.gnu.org/copyleft/gpl.html for GPL licensing information.
|
||||
**
|
||||
**********************************************************************/
|
||||
|
||||
#include "zipglobal.h"
|
||||
|
||||
#if defined(Q_OS_WIN) || defined(Q_OS_WINCE) || defined(Q_OS_LINUX) || defined (Q_OS_MACX)
|
||||
#define OSDAB_ZIP_HAS_UTC
|
||||
#include <ctime>
|
||||
#else
|
||||
#undef OSDAB_ZIP_HAS_UTC
|
||||
#endif
|
||||
|
||||
#if defined(Q_OS_WIN)
|
||||
#include <QtCore/qt_windows.h>
|
||||
#elif defined(Q_OS_LINUX) || defined(Q_OS_MACX)
|
||||
#include <utime.h>
|
||||
#endif
|
||||
|
||||
OSDAB_BEGIN_NAMESPACE(Zip)
|
||||
|
||||
/*! Returns the current UTC offset in seconds unless OSDAB_ZIP_NO_UTC is defined
|
||||
and method is implemented for the current platform and 0 otherwise.
|
||||
*/
|
||||
int OSDAB_ZIP_MANGLE(currentUtcOffset)()
|
||||
{
|
||||
#if !(!defined OSDAB_ZIP_NO_UTC && defined OSDAB_ZIP_HAS_UTC)
|
||||
return 0;
|
||||
#else
|
||||
time_t curr_time_t;
|
||||
time(&curr_time_t);
|
||||
|
||||
#if defined Q_OS_WIN
|
||||
struct tm _tm_struct;
|
||||
struct tm* tm_struct = &_tm_struct;
|
||||
#else
|
||||
struct tm* tm_struct = 0;
|
||||
#endif
|
||||
|
||||
#if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS)
|
||||
// use the reentrant version of localtime() where available
|
||||
tzset();
|
||||
tm res;
|
||||
tm_struct = gmtime_r(&curr_time_t, &res);
|
||||
#elif defined Q_OS_WIN && !defined Q_CC_MINGW
|
||||
if (gmtime_s(tm_struct, &curr_time_t))
|
||||
return 0;
|
||||
#else
|
||||
tm_struct = gmtime(&curr_time_t);
|
||||
#endif
|
||||
|
||||
if (!tm_struct)
|
||||
return 0;
|
||||
|
||||
const time_t global_time_t = mktime(tm_struct);
|
||||
|
||||
#if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS)
|
||||
// use the reentrant version of localtime() where available
|
||||
tm_struct = localtime_r(&curr_time_t, &res);
|
||||
#elif defined Q_OS_WIN && !defined Q_CC_MINGW
|
||||
if (localtime_s(tm_struct, &curr_time_t))
|
||||
return 0;
|
||||
#else
|
||||
tm_struct = localtime(&curr_time_t);
|
||||
#endif
|
||||
|
||||
if (!tm_struct)
|
||||
return 0;
|
||||
|
||||
const time_t local_time_t = mktime(tm_struct);
|
||||
|
||||
const int utcOffset = - qRound(difftime(global_time_t, local_time_t));
|
||||
return tm_struct->tm_isdst > 0 ? utcOffset + 3600 : utcOffset;
|
||||
#endif // No UTC
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
QDateTime OSDAB_ZIP_MANGLE(fromFileTimestamp)(const QDateTime& dateTime)
|
||||
{
|
||||
#if !defined OSDAB_ZIP_NO_UTC && defined OSDAB_ZIP_HAS_UTC
|
||||
const int utc = OSDAB_ZIP_MANGLE(currentUtcOffset)();
|
||||
return dateTime.toUTC().addSecs(utc);
|
||||
#else
|
||||
return dateTime;
|
||||
#endif // OSDAB_ZIP_NO_UTC
|
||||
}
|
||||
|
||||
bool OSDAB_ZIP_MANGLE(setFileTimestamp)(const QString& fileName, const QDateTime& dateTime)
|
||||
{
|
||||
if (fileName.isEmpty())
|
||||
return true;
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
HANDLE hFile = CreateFileW(fileName.toStdWString().c_str(),
|
||||
GENERIC_WRITE, FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0);
|
||||
if (hFile == INVALID_HANDLE_VALUE) {
|
||||
return false;
|
||||
}
|
||||
|
||||
SYSTEMTIME st;
|
||||
FILETIME ft, ftLastMod;
|
||||
const QDate date = dateTime.date();
|
||||
const QTime time = dateTime.time();
|
||||
st.wYear = date.year();
|
||||
st.wMonth = date.month();
|
||||
st.wDay = date.day();
|
||||
st.wHour = time.hour();
|
||||
st.wMinute = time.minute();
|
||||
st.wSecond = time.second();
|
||||
st.wMilliseconds = time.msec();
|
||||
|
||||
SystemTimeToFileTime(&st, &ft);
|
||||
LocalFileTimeToFileTime(&ft, &ftLastMod);
|
||||
|
||||
const bool success = SetFileTime(hFile, NULL, NULL, &ftLastMod);
|
||||
CloseHandle(hFile);
|
||||
return success;
|
||||
|
||||
#elif defined(Q_OS_LINUX) || defined(Q_OS_MACX)
|
||||
|
||||
struct utimbuf t_buffer;
|
||||
t_buffer.actime = t_buffer.modtime = dateTime.toTime_t();
|
||||
return utime(fileName.toLocal8Bit().constData(), &t_buffer) == 0;
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
OSDAB_END_NAMESPACE
|
||||
/****************************************************************************
|
||||
** Filename: zipglobal.cpp
|
||||
** Last updated [dd/mm/yyyy]: 06/02/2011
|
||||
**
|
||||
** pkzip 2.0 file compression.
|
||||
**
|
||||
** Some of the code has been inspired by other open source projects,
|
||||
** (mainly Info-Zip and Gilles Vollant's minizip).
|
||||
** Compression and decompression actually uses the zlib library.
|
||||
**
|
||||
** Copyright (C) 2007-2012 Angius Fabrizio. All rights reserved.
|
||||
**
|
||||
** This file is part of the OSDaB project (http://osdab.42cows.org/).
|
||||
**
|
||||
** This file may be distributed and/or modified under the terms of the
|
||||
** GNU General Public License version 2 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||
** packaging of this file.
|
||||
**
|
||||
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
**
|
||||
** See the file LICENSE.GPL that came with this software distribution or
|
||||
** visit http://www.gnu.org/copyleft/gpl.html for GPL licensing information.
|
||||
**
|
||||
**********************************************************************/
|
||||
|
||||
#include "zipglobal.h"
|
||||
|
||||
#if defined(Q_OS_WIN) || defined(Q_OS_WINCE) || defined(Q_OS_LINUX) || defined (Q_OS_MACX)
|
||||
#define OSDAB_ZIP_HAS_UTC
|
||||
#include <ctime>
|
||||
#else
|
||||
#undef OSDAB_ZIP_HAS_UTC
|
||||
#endif
|
||||
|
||||
#if defined(Q_OS_WIN)
|
||||
#include <QtCore/qt_windows.h>
|
||||
#elif defined(Q_OS_LINUX) || defined(Q_OS_MACX)
|
||||
#include <utime.h>
|
||||
#endif
|
||||
|
||||
OSDAB_BEGIN_NAMESPACE(Zip)
|
||||
|
||||
/*! Returns the current UTC offset in seconds unless OSDAB_ZIP_NO_UTC is defined
|
||||
and method is implemented for the current platform and 0 otherwise.
|
||||
*/
|
||||
int OSDAB_ZIP_MANGLE(currentUtcOffset)()
|
||||
{
|
||||
#if !(!defined OSDAB_ZIP_NO_UTC && defined OSDAB_ZIP_HAS_UTC)
|
||||
return 0;
|
||||
#else
|
||||
time_t curr_time_t;
|
||||
time(&curr_time_t);
|
||||
|
||||
#if defined Q_OS_WIN
|
||||
struct tm _tm_struct;
|
||||
struct tm* tm_struct = &_tm_struct;
|
||||
#else
|
||||
struct tm* tm_struct = 0;
|
||||
#endif
|
||||
|
||||
#if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS)
|
||||
// use the reentrant version of localtime() where available
|
||||
tzset();
|
||||
tm res;
|
||||
tm_struct = gmtime_r(&curr_time_t, &res);
|
||||
#elif defined Q_OS_WIN && !defined Q_CC_MINGW
|
||||
if (gmtime_s(tm_struct, &curr_time_t))
|
||||
return 0;
|
||||
#else
|
||||
tm_struct = gmtime(&curr_time_t);
|
||||
#endif
|
||||
|
||||
if (!tm_struct)
|
||||
return 0;
|
||||
|
||||
const time_t global_time_t = mktime(tm_struct);
|
||||
|
||||
#if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS)
|
||||
// use the reentrant version of localtime() where available
|
||||
tm_struct = localtime_r(&curr_time_t, &res);
|
||||
#elif defined Q_OS_WIN && !defined Q_CC_MINGW
|
||||
if (localtime_s(tm_struct, &curr_time_t))
|
||||
return 0;
|
||||
#else
|
||||
tm_struct = localtime(&curr_time_t);
|
||||
#endif
|
||||
|
||||
if (!tm_struct)
|
||||
return 0;
|
||||
|
||||
const time_t local_time_t = mktime(tm_struct);
|
||||
|
||||
const int utcOffset = - qRound(difftime(global_time_t, local_time_t));
|
||||
return tm_struct->tm_isdst > 0 ? utcOffset + 3600 : utcOffset;
|
||||
#endif // No UTC
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
QDateTime OSDAB_ZIP_MANGLE(fromFileTimestamp)(const QDateTime& dateTime)
|
||||
{
|
||||
#if !defined OSDAB_ZIP_NO_UTC && defined OSDAB_ZIP_HAS_UTC
|
||||
const int utc = OSDAB_ZIP_MANGLE(currentUtcOffset)();
|
||||
return dateTime.toUTC().addSecs(utc);
|
||||
#else
|
||||
return dateTime;
|
||||
#endif // OSDAB_ZIP_NO_UTC
|
||||
}
|
||||
|
||||
bool OSDAB_ZIP_MANGLE(setFileTimestamp)(const QString& fileName, const QDateTime& dateTime)
|
||||
{
|
||||
if (fileName.isEmpty())
|
||||
return true;
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
HANDLE hFile = CreateFileW(fileName.toStdWString().c_str(),
|
||||
GENERIC_WRITE, FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0);
|
||||
if (hFile == INVALID_HANDLE_VALUE) {
|
||||
return false;
|
||||
}
|
||||
|
||||
SYSTEMTIME st;
|
||||
FILETIME ft, ftLastMod;
|
||||
const QDate date = dateTime.date();
|
||||
const QTime time = dateTime.time();
|
||||
st.wYear = date.year();
|
||||
st.wMonth = date.month();
|
||||
st.wDay = date.day();
|
||||
st.wHour = time.hour();
|
||||
st.wMinute = time.minute();
|
||||
st.wSecond = time.second();
|
||||
st.wMilliseconds = time.msec();
|
||||
|
||||
SystemTimeToFileTime(&st, &ft);
|
||||
LocalFileTimeToFileTime(&ft, &ftLastMod);
|
||||
|
||||
const bool success = SetFileTime(hFile, NULL, NULL, &ftLastMod);
|
||||
CloseHandle(hFile);
|
||||
return success;
|
||||
|
||||
#elif defined(Q_OS_LINUX) || defined(Q_OS_MACX)
|
||||
|
||||
struct utimbuf t_buffer;
|
||||
t_buffer.actime = t_buffer.modtime = dateTime.toTime_t();
|
||||
return utime(fileName.toLocal8Bit().constData(), &t_buffer) == 0;
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
OSDAB_END_NAMESPACE
|
||||
|
|
|
@ -1,77 +1,77 @@
|
|||
/****************************************************************************
|
||||
** Filename: zipglobal.h
|
||||
** Last updated [dd/mm/yyyy]: 27/03/2011
|
||||
**
|
||||
** pkzip 2.0 file compression.
|
||||
**
|
||||
** Some of the code has been inspired by other open source projects,
|
||||
** (mainly Info-Zip and Gilles Vollant's minizip).
|
||||
** Compression and decompression actually uses the zlib library.
|
||||
**
|
||||
** Copyright (C) 2007-2012 Angius Fabrizio. All rights reserved.
|
||||
**
|
||||
** This file is part of the OSDaB project (http://osdab.42cows.org/).
|
||||
**
|
||||
** This file may be distributed and/or modified under the terms of the
|
||||
** GNU General Public License version 2 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||
** packaging of this file.
|
||||
**
|
||||
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
**
|
||||
** See the file LICENSE.GPL that came with this software distribution or
|
||||
** visit http://www.gnu.org/copyleft/gpl.html for GPL licensing information.
|
||||
**
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef OSDAB_ZIPGLOBAL__H
|
||||
#define OSDAB_ZIPGLOBAL__H
|
||||
|
||||
#include <QtCore/QDateTime>
|
||||
#include <QtCore/QtGlobal>
|
||||
|
||||
/* If you want to build the OSDaB Zip code as
|
||||
a library, define OSDAB_ZIP_LIB in the library's .pro file and
|
||||
in the libraries using it OR remove the #ifndef OSDAB_ZIP_LIB
|
||||
define below and leave the #else body. Also remember to define
|
||||
OSDAB_ZIP_BUILD_LIB in the library's project).
|
||||
*/
|
||||
|
||||
#ifndef OSDAB_ZIP_LIB
|
||||
# define OSDAB_ZIP_EXPORT
|
||||
#else
|
||||
# if defined(OSDAB_ZIP_BUILD_LIB)
|
||||
# define OSDAB_ZIP_EXPORT Q_DECL_EXPORT
|
||||
# else
|
||||
# define OSDAB_ZIP_EXPORT Q_DECL_IMPORT
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef OSDAB_NAMESPACE
|
||||
#define OSDAB_BEGIN_NAMESPACE(ModuleName) namespace Osdab { namespace ModuleName {
|
||||
#else
|
||||
#define OSDAB_BEGIN_NAMESPACE(ModuleName)
|
||||
#endif
|
||||
|
||||
#ifdef OSDAB_NAMESPACE
|
||||
#define OSDAB_END_NAMESPACE } }
|
||||
#else
|
||||
#define OSDAB_END_NAMESPACE
|
||||
#endif
|
||||
|
||||
#ifndef OSDAB_NAMESPACE
|
||||
#define OSDAB_ZIP_MANGLE(x) zip_##x
|
||||
#else
|
||||
#define OSDAB_ZIP_MANGLE(x) x
|
||||
#endif
|
||||
|
||||
OSDAB_BEGIN_NAMESPACE(Zip)
|
||||
|
||||
OSDAB_ZIP_EXPORT int OSDAB_ZIP_MANGLE(currentUtcOffset)();
|
||||
OSDAB_ZIP_EXPORT QDateTime OSDAB_ZIP_MANGLE(fromFileTimestamp)(const QDateTime& dateTime);
|
||||
OSDAB_ZIP_EXPORT bool OSDAB_ZIP_MANGLE(setFileTimestamp)(const QString& fileName, const QDateTime& dateTime);
|
||||
|
||||
OSDAB_END_NAMESPACE
|
||||
|
||||
#endif // OSDAB_ZIPGLOBAL__H
|
||||
/****************************************************************************
|
||||
** Filename: zipglobal.h
|
||||
** Last updated [dd/mm/yyyy]: 27/03/2011
|
||||
**
|
||||
** pkzip 2.0 file compression.
|
||||
**
|
||||
** Some of the code has been inspired by other open source projects,
|
||||
** (mainly Info-Zip and Gilles Vollant's minizip).
|
||||
** Compression and decompression actually uses the zlib library.
|
||||
**
|
||||
** Copyright (C) 2007-2012 Angius Fabrizio. All rights reserved.
|
||||
**
|
||||
** This file is part of the OSDaB project (http://osdab.42cows.org/).
|
||||
**
|
||||
** This file may be distributed and/or modified under the terms of the
|
||||
** GNU General Public License version 2 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||
** packaging of this file.
|
||||
**
|
||||
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
**
|
||||
** See the file LICENSE.GPL that came with this software distribution or
|
||||
** visit http://www.gnu.org/copyleft/gpl.html for GPL licensing information.
|
||||
**
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef OSDAB_ZIPGLOBAL__H
|
||||
#define OSDAB_ZIPGLOBAL__H
|
||||
|
||||
#include <QtCore/QDateTime>
|
||||
#include <QtCore/QtGlobal>
|
||||
|
||||
/* If you want to build the OSDaB Zip code as
|
||||
a library, define OSDAB_ZIP_LIB in the library's .pro file and
|
||||
in the libraries using it OR remove the #ifndef OSDAB_ZIP_LIB
|
||||
define below and leave the #else body. Also remember to define
|
||||
OSDAB_ZIP_BUILD_LIB in the library's project).
|
||||
*/
|
||||
|
||||
#ifndef OSDAB_ZIP_LIB
|
||||
# define OSDAB_ZIP_EXPORT
|
||||
#else
|
||||
# if defined(OSDAB_ZIP_BUILD_LIB)
|
||||
# define OSDAB_ZIP_EXPORT Q_DECL_EXPORT
|
||||
# else
|
||||
# define OSDAB_ZIP_EXPORT Q_DECL_IMPORT
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef OSDAB_NAMESPACE
|
||||
#define OSDAB_BEGIN_NAMESPACE(ModuleName) namespace Osdab { namespace ModuleName {
|
||||
#else
|
||||
#define OSDAB_BEGIN_NAMESPACE(ModuleName)
|
||||
#endif
|
||||
|
||||
#ifdef OSDAB_NAMESPACE
|
||||
#define OSDAB_END_NAMESPACE } }
|
||||
#else
|
||||
#define OSDAB_END_NAMESPACE
|
||||
#endif
|
||||
|
||||
#ifndef OSDAB_NAMESPACE
|
||||
#define OSDAB_ZIP_MANGLE(x) zip_##x
|
||||
#else
|
||||
#define OSDAB_ZIP_MANGLE(x) x
|
||||
#endif
|
||||
|
||||
OSDAB_BEGIN_NAMESPACE(Zip)
|
||||
|
||||
OSDAB_ZIP_EXPORT int OSDAB_ZIP_MANGLE(currentUtcOffset)();
|
||||
OSDAB_ZIP_EXPORT QDateTime OSDAB_ZIP_MANGLE(fromFileTimestamp)(const QDateTime& dateTime);
|
||||
OSDAB_ZIP_EXPORT bool OSDAB_ZIP_MANGLE(setFileTimestamp)(const QString& fileName, const QDateTime& dateTime);
|
||||
|
||||
OSDAB_END_NAMESPACE
|
||||
|
||||
#endif // OSDAB_ZIPGLOBAL__H
|
||||
|
|
Loading…
Reference in a new issue