Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qzip.cpp File Reference

(53cc56279cc71f1895e10c3f0d1d6f1d71f03923)

#include "qzipreader_p.h"
#include "qzipwriter_p.h"
#include <qdatetime.h>
#include <qendian.h>
#include <qdebug.h>
#include <qdir.h>
#include <memory>
#include <zlib.h>
Include dependency graph for qzip.cpp:

Go to the source code of this file.

Classes

struct  LocalFileHeader
struct  DataDescriptor
struct  CentralFileHeader
struct  EndOfDirectory
struct  FileHeader
class  QZipPrivate
class  QZipReaderPrivate
class  QZipWriterPrivate

Namespaces

namespace  WindowsFileAttributes
namespace  UnixFileAttributes

Macros

#define ZIP_VERSION   20
#define ZDEBUG   if (0) qDebug

Enumerations

enum  {
  WindowsFileAttributes::Dir = 0x10 , WindowsFileAttributes::File = 0x80 , WindowsFileAttributes::TypeMask = 0x90 , WindowsFileAttributes::ReadOnly = 0x01 ,
  WindowsFileAttributes::PermMask = 0x01 , WindowsFileAttributes::Dir = 0x10 , WindowsFileAttributes::File = 0x80 , WindowsFileAttributes::TypeMask = 0x90 ,
  WindowsFileAttributes::ReadOnly = 0x01 , WindowsFileAttributes::PermMask = 0x01
}
enum  {
  UnixFileAttributes::Dir = 0040000 , UnixFileAttributes::File = 0100000 , UnixFileAttributes::SymLink = 0120000 , UnixFileAttributes::TypeMask = 0170000 ,
  UnixFileAttributes::ReadUser = 0400 , UnixFileAttributes::WriteUser = 0200 , UnixFileAttributes::ExeUser = 0100 , UnixFileAttributes::ReadGroup = 0040 ,
  UnixFileAttributes::WriteGroup = 0020 , UnixFileAttributes::ExeGroup = 0010 , UnixFileAttributes::ReadOther = 0004 , UnixFileAttributes::WriteOther = 0002 ,
  UnixFileAttributes::ExeOther = 0001 , UnixFileAttributes::PermMask = 0777 , UnixFileAttributes::Dir = 0040000 , UnixFileAttributes::File = 0100000 ,
  UnixFileAttributes::SymLink = 0120000 , UnixFileAttributes::TypeMask = 0170000 , UnixFileAttributes::ReadUser = 0400 , UnixFileAttributes::WriteUser = 0200 ,
  UnixFileAttributes::ExeUser = 0100 , UnixFileAttributes::ReadGroup = 0040 , UnixFileAttributes::WriteGroup = 0020 , UnixFileAttributes::ExeGroup = 0010 ,
  UnixFileAttributes::ReadOther = 0004 , UnixFileAttributes::WriteOther = 0002 , UnixFileAttributes::ExeOther = 0001 , UnixFileAttributes::PermMask = 0777
}
enum  HostOS {
  HostFAT = 0 , HostAMIGA = 1 , HostVMS = 2 , HostUnix = 3 ,
  HostVM_CMS = 4 , HostAtari = 5 , HostHPFS = 6 , HostMac = 7 ,
  HostZ_System = 8 , HostCPM = 9 , HostTOPS20 = 10 , HostNTFS = 11 ,
  HostQDOS = 12 , HostAcorn = 13 , HostVFAT = 14 , HostMVS = 15 ,
  HostBeOS = 16 , HostTandem = 17 , HostOS400 = 18 , HostOSX = 19 ,
  HostFAT = 0 , HostAMIGA = 1 , HostVMS = 2 , HostUnix = 3 ,
  HostVM_CMS = 4 , HostAtari = 5 , HostHPFS = 6 , HostMac = 7 ,
  HostZ_System = 8 , HostCPM = 9 , HostTOPS20 = 10 , HostNTFS = 11 ,
  HostQDOS = 12 , HostAcorn = 13 , HostVFAT = 14 , HostMVS = 15 ,
  HostBeOS = 16 , HostTandem = 17 , HostOS400 = 18 , HostOSX = 19
}
enum  GeneralPurposeFlag {
  Encrypted = 0x01 , AlgTune1 = 0x02 , AlgTune2 = 0x04 , HasDataDescriptor = 0x08 ,
  PatchedData = 0x20 , StrongEncrypted = 0x40 , Utf8Names = 0x0800 , CentralDirectoryEncrypted = 0x2000 ,
  Encrypted = 0x01 , AlgTune1 = 0x02 , AlgTune2 = 0x04 , HasDataDescriptor = 0x08 ,
  PatchedData = 0x20 , StrongEncrypted = 0x40 , Utf8Names = 0x0800 , CentralDirectoryEncrypted = 0x2000
}
enum  CompressionMethod {
  CompressionMethodStored = 0 , CompressionMethodShrunk = 1 , CompressionMethodReduced1 = 2 , CompressionMethodReduced2 = 3 ,
  CompressionMethodReduced3 = 4 , CompressionMethodReduced4 = 5 , CompressionMethodImploded = 6 , CompressionMethodReservedTokenizing = 7 ,
  CompressionMethodDeflated = 8 , CompressionMethodDeflated64 = 9 , CompressionMethodPKImploding = 10 , CompressionMethodBZip2 = 12 ,
  CompressionMethodLZMA = 14 , CompressionMethodTerse = 18 , CompressionMethodLz77 = 19 , CompressionMethodJpeg = 96 ,
  CompressionMethodWavPack = 97 , CompressionMethodPPMd = 98 , CompressionMethodWzAES = 99 , CompressionMethodStored = 0 ,
  CompressionMethodShrunk = 1 , CompressionMethodReduced1 = 2 , CompressionMethodReduced2 = 3 , CompressionMethodReduced3 = 4 ,
  CompressionMethodReduced4 = 5 , CompressionMethodImploded = 6 , CompressionMethodReservedTokenizing = 7 , CompressionMethodDeflated = 8 ,
  CompressionMethodDeflated64 = 9 , CompressionMethodPKImploding = 10 , CompressionMethodBZip2 = 12 , CompressionMethodLZMA = 14 ,
  CompressionMethodTerse = 18 , CompressionMethodLz77 = 19 , CompressionMethodJpeg = 96 , CompressionMethodWavPack = 97 ,
  CompressionMethodPPMd = 98 , CompressionMethodWzAES = 99
}
enum  {
  WindowsFileAttributes::Dir = 0x10 , WindowsFileAttributes::File = 0x80 , WindowsFileAttributes::TypeMask = 0x90 , WindowsFileAttributes::ReadOnly = 0x01 ,
  WindowsFileAttributes::PermMask = 0x01 , WindowsFileAttributes::Dir = 0x10 , WindowsFileAttributes::File = 0x80 , WindowsFileAttributes::TypeMask = 0x90 ,
  WindowsFileAttributes::ReadOnly = 0x01 , WindowsFileAttributes::PermMask = 0x01
}
enum  {
  UnixFileAttributes::Dir = 0040000 , UnixFileAttributes::File = 0100000 , UnixFileAttributes::SymLink = 0120000 , UnixFileAttributes::TypeMask = 0170000 ,
  UnixFileAttributes::ReadUser = 0400 , UnixFileAttributes::WriteUser = 0200 , UnixFileAttributes::ExeUser = 0100 , UnixFileAttributes::ReadGroup = 0040 ,
  UnixFileAttributes::WriteGroup = 0020 , UnixFileAttributes::ExeGroup = 0010 , UnixFileAttributes::ReadOther = 0004 , UnixFileAttributes::WriteOther = 0002 ,
  UnixFileAttributes::ExeOther = 0001 , UnixFileAttributes::PermMask = 0777 , UnixFileAttributes::Dir = 0040000 , UnixFileAttributes::File = 0100000 ,
  UnixFileAttributes::SymLink = 0120000 , UnixFileAttributes::TypeMask = 0170000 , UnixFileAttributes::ReadUser = 0400 , UnixFileAttributes::WriteUser = 0200 ,
  UnixFileAttributes::ExeUser = 0100 , UnixFileAttributes::ReadGroup = 0040 , UnixFileAttributes::WriteGroup = 0020 , UnixFileAttributes::ExeGroup = 0010 ,
  UnixFileAttributes::ReadOther = 0004 , UnixFileAttributes::WriteOther = 0002 , UnixFileAttributes::ExeOther = 0001 , UnixFileAttributes::PermMask = 0777
}
enum  HostOS {
  HostFAT = 0 , HostAMIGA = 1 , HostVMS = 2 , HostUnix = 3 ,
  HostVM_CMS = 4 , HostAtari = 5 , HostHPFS = 6 , HostMac = 7 ,
  HostZ_System = 8 , HostCPM = 9 , HostTOPS20 = 10 , HostNTFS = 11 ,
  HostQDOS = 12 , HostAcorn = 13 , HostVFAT = 14 , HostMVS = 15 ,
  HostBeOS = 16 , HostTandem = 17 , HostOS400 = 18 , HostOSX = 19 ,
  HostFAT = 0 , HostAMIGA = 1 , HostVMS = 2 , HostUnix = 3 ,
  HostVM_CMS = 4 , HostAtari = 5 , HostHPFS = 6 , HostMac = 7 ,
  HostZ_System = 8 , HostCPM = 9 , HostTOPS20 = 10 , HostNTFS = 11 ,
  HostQDOS = 12 , HostAcorn = 13 , HostVFAT = 14 , HostMVS = 15 ,
  HostBeOS = 16 , HostTandem = 17 , HostOS400 = 18 , HostOSX = 19
}
enum  GeneralPurposeFlag {
  Encrypted = 0x01 , AlgTune1 = 0x02 , AlgTune2 = 0x04 , HasDataDescriptor = 0x08 ,
  PatchedData = 0x20 , StrongEncrypted = 0x40 , Utf8Names = 0x0800 , CentralDirectoryEncrypted = 0x2000 ,
  Encrypted = 0x01 , AlgTune1 = 0x02 , AlgTune2 = 0x04 , HasDataDescriptor = 0x08 ,
  PatchedData = 0x20 , StrongEncrypted = 0x40 , Utf8Names = 0x0800 , CentralDirectoryEncrypted = 0x2000
}
enum  CompressionMethod {
  CompressionMethodStored = 0 , CompressionMethodShrunk = 1 , CompressionMethodReduced1 = 2 , CompressionMethodReduced2 = 3 ,
  CompressionMethodReduced3 = 4 , CompressionMethodReduced4 = 5 , CompressionMethodImploded = 6 , CompressionMethodReservedTokenizing = 7 ,
  CompressionMethodDeflated = 8 , CompressionMethodDeflated64 = 9 , CompressionMethodPKImploding = 10 , CompressionMethodBZip2 = 12 ,
  CompressionMethodLZMA = 14 , CompressionMethodTerse = 18 , CompressionMethodLz77 = 19 , CompressionMethodJpeg = 96 ,
  CompressionMethodWavPack = 97 , CompressionMethodPPMd = 98 , CompressionMethodWzAES = 99 , CompressionMethodStored = 0 ,
  CompressionMethodShrunk = 1 , CompressionMethodReduced1 = 2 , CompressionMethodReduced2 = 3 , CompressionMethodReduced3 = 4 ,
  CompressionMethodReduced4 = 5 , CompressionMethodImploded = 6 , CompressionMethodReservedTokenizing = 7 , CompressionMethodDeflated = 8 ,
  CompressionMethodDeflated64 = 9 , CompressionMethodPKImploding = 10 , CompressionMethodBZip2 = 12 , CompressionMethodLZMA = 14 ,
  CompressionMethodTerse = 18 , CompressionMethodLz77 = 19 , CompressionMethodJpeg = 96 , CompressionMethodWavPack = 97 ,
  CompressionMethodPPMd = 98 , CompressionMethodWzAES = 99
}

Functions

static QT_BEGIN_NAMESPACE uint readUInt (const uchar *data)
static ushort readUShort (const uchar *data)
static void writeUInt (uchar *data, uint i)
static void writeUShort (uchar *data, ushort i)
static void copyUInt (uchar *dest, const uchar *src)
static void copyUShort (uchar *dest, const uchar *src)
static void writeMSDosDate (uchar *dest, const QDateTime &dt)
static int inflate (Bytef *dest, ulong *destLen, const Bytef *source, ulong sourceLen)
static int deflate (Bytef *dest, ulong *destLen, const Bytef *source, ulong sourceLen)
static QFile::Permissions modeToPermissions (quint32 mode)
static quint32 permissionsToMode (QFile::Permissions perms)
static QDateTime readMSDosDate (const uchar *src)
 Q_DECLARE_TYPEINFO (HostOS, Q_PRIMITIVE_TYPE)
 Q_DECLARE_TYPEINFO (GeneralPurposeFlag, Q_PRIMITIVE_TYPE)
 Q_DECLARE_TYPEINFO (CompressionMethod, Q_PRIMITIVE_TYPE)
 Q_DECLARE_TYPEINFO (LocalFileHeader, Q_PRIMITIVE_TYPE)
 Q_DECLARE_TYPEINFO (DataDescriptor, Q_PRIMITIVE_TYPE)
 Q_DECLARE_TYPEINFO (CentralFileHeader, Q_PRIMITIVE_TYPE)
 Q_DECLARE_TYPEINFO (EndOfDirectory, Q_PRIMITIVE_TYPE)
 Q_DECLARE_TYPEINFO (FileHeader, Q_RELOCATABLE_TYPE)
static LocalFileHeader toLocalHeader (const CentralFileHeader &ch)

Macro Definition Documentation

◆ ZDEBUG

#define ZDEBUG   if (0) qDebug

Definition at line 24 of file qzip.cpp.

◆ ZIP_VERSION

#define ZIP_VERSION   20

Definition at line 19 of file qzip.cpp.

Enumeration Type Documentation

◆ CompressionMethod [1/2]

Enumerator
CompressionMethodStored 
CompressionMethodShrunk 
CompressionMethodReduced1 
CompressionMethodReduced2 
CompressionMethodReduced3 
CompressionMethodReduced4 
CompressionMethodImploded 
CompressionMethodReservedTokenizing 
CompressionMethodDeflated 
CompressionMethodDeflated64 
CompressionMethodPKImploding 
CompressionMethodBZip2 
CompressionMethodLZMA 
CompressionMethodTerse 
CompressionMethodLz77 
CompressionMethodJpeg 
CompressionMethodWavPack 
CompressionMethodPPMd 
CompressionMethodWzAES 
CompressionMethodStored 
CompressionMethodShrunk 
CompressionMethodReduced1 
CompressionMethodReduced2 
CompressionMethodReduced3 
CompressionMethodReduced4 
CompressionMethodImploded 
CompressionMethodReservedTokenizing 
CompressionMethodDeflated 
CompressionMethodDeflated64 
CompressionMethodPKImploding 
CompressionMethodBZip2 
CompressionMethodLZMA 
CompressionMethodTerse 
CompressionMethodLz77 
CompressionMethodJpeg 
CompressionMethodWavPack 
CompressionMethodPPMd 
CompressionMethodWzAES 

Definition at line 287 of file qzip.cpp.

◆ CompressionMethod [2/2]

Enumerator
CompressionMethodStored 
CompressionMethodShrunk 
CompressionMethodReduced1 
CompressionMethodReduced2 
CompressionMethodReduced3 
CompressionMethodReduced4 
CompressionMethodImploded 
CompressionMethodReservedTokenizing 
CompressionMethodDeflated 
CompressionMethodDeflated64 
CompressionMethodPKImploding 
CompressionMethodBZip2 
CompressionMethodLZMA 
CompressionMethodTerse 
CompressionMethodLz77 
CompressionMethodJpeg 
CompressionMethodWavPack 
CompressionMethodPPMd 
CompressionMethodWzAES 
CompressionMethodStored 
CompressionMethodShrunk 
CompressionMethodReduced1 
CompressionMethodReduced2 
CompressionMethodReduced3 
CompressionMethodReduced4 
CompressionMethodImploded 
CompressionMethodReservedTokenizing 
CompressionMethodDeflated 
CompressionMethodDeflated64 
CompressionMethodPKImploding 
CompressionMethodBZip2 
CompressionMethodLZMA 
CompressionMethodTerse 
CompressionMethodLz77 
CompressionMethodJpeg 
CompressionMethodWavPack 
CompressionMethodPPMd 
CompressionMethodWzAES 

Definition at line 287 of file qzip.cpp.

◆ GeneralPurposeFlag [1/2]

Enumerator
Encrypted 
AlgTune1 
AlgTune2 
HasDataDescriptor 
PatchedData 
StrongEncrypted 
Utf8Names 
CentralDirectoryEncrypted 
Encrypted 
AlgTune1 
AlgTune2 
HasDataDescriptor 
PatchedData 
StrongEncrypted 
Utf8Names 
CentralDirectoryEncrypted 

Definition at line 275 of file qzip.cpp.

◆ GeneralPurposeFlag [2/2]

Enumerator
Encrypted 
AlgTune1 
AlgTune2 
HasDataDescriptor 
PatchedData 
StrongEncrypted 
Utf8Names 
CentralDirectoryEncrypted 
Encrypted 
AlgTune1 
AlgTune2 
HasDataDescriptor 
PatchedData 
StrongEncrypted 
Utf8Names 
CentralDirectoryEncrypted 

Definition at line 275 of file qzip.cpp.

◆ HostOS [1/2]

enum HostOS
Enumerator
HostFAT 
HostAMIGA 
HostVMS 
HostUnix 
HostVM_CMS 
HostAtari 
HostHPFS 
HostMac 
HostZ_System 
HostCPM 
HostTOPS20 
HostNTFS 
HostQDOS 
HostAcorn 
HostVFAT 
HostMVS 
HostBeOS 
HostTandem 
HostOS400 
HostOSX 
HostFAT 
HostAMIGA 
HostVMS 
HostUnix 
HostVM_CMS 
HostAtari 
HostHPFS 
HostMac 
HostZ_System 
HostCPM 
HostTOPS20 
HostNTFS 
HostQDOS 
HostAcorn 
HostVFAT 
HostMVS 
HostBeOS 
HostTandem 
HostOS400 
HostOSX 

Definition at line 251 of file qzip.cpp.

◆ HostOS [2/2]

enum HostOS
Enumerator
HostFAT 
HostAMIGA 
HostVMS 
HostUnix 
HostVM_CMS 
HostAtari 
HostHPFS 
HostMac 
HostZ_System 
HostCPM 
HostTOPS20 
HostNTFS 
HostQDOS 
HostAcorn 
HostVFAT 
HostMVS 
HostBeOS 
HostTandem 
HostOS400 
HostOSX 
HostFAT 
HostAMIGA 
HostVMS 
HostUnix 
HostVM_CMS 
HostAtari 
HostHPFS 
HostMac 
HostZ_System 
HostCPM 
HostTOPS20 
HostNTFS 
HostQDOS 
HostAcorn 
HostVFAT 
HostMVS 
HostBeOS 
HostTandem 
HostOS400 
HostOSX 

Definition at line 251 of file qzip.cpp.

Function Documentation

◆ copyUInt()

void copyUInt ( uchar * dest,
const uchar * src )
inlinestatic

Definition at line 53 of file qzip.cpp.

◆ copyUShort()

void copyUShort ( uchar * dest,
const uchar * src )
inlinestatic

Definition at line 61 of file qzip.cpp.

◆ deflate()

int deflate ( Bytef * dest,
ulong * destLen,
const Bytef * source,
ulong sourceLen )
static

Definition at line 125 of file qzip.cpp.

◆ inflate()

int inflate ( Bytef * dest,
ulong * destLen,
const Bytef * source,
ulong sourceLen )
static

Definition at line 93 of file qzip.cpp.

◆ modeToPermissions()

QFile::Permissions modeToPermissions ( quint32 mode)
static

Definition at line 186 of file qzip.cpp.

◆ permissionsToMode()

◆ Q_DECLARE_TYPEINFO() [1/8]

Q_DECLARE_TYPEINFO ( CentralFileHeader ,
Q_PRIMITIVE_TYPE  )

◆ Q_DECLARE_TYPEINFO() [2/8]

Q_DECLARE_TYPEINFO ( CompressionMethod ,
Q_PRIMITIVE_TYPE  )

◆ Q_DECLARE_TYPEINFO() [3/8]

Q_DECLARE_TYPEINFO ( DataDescriptor ,
Q_PRIMITIVE_TYPE  )

◆ Q_DECLARE_TYPEINFO() [4/8]

Q_DECLARE_TYPEINFO ( EndOfDirectory ,
Q_PRIMITIVE_TYPE  )

◆ Q_DECLARE_TYPEINFO() [5/8]

Q_DECLARE_TYPEINFO ( FileHeader ,
Q_RELOCATABLE_TYPE  )

◆ Q_DECLARE_TYPEINFO() [6/8]

Q_DECLARE_TYPEINFO ( GeneralPurposeFlag ,
Q_PRIMITIVE_TYPE  )

◆ Q_DECLARE_TYPEINFO() [7/8]

Q_DECLARE_TYPEINFO ( HostOS ,
Q_PRIMITIVE_TYPE  )

◆ Q_DECLARE_TYPEINFO() [8/8]

Q_DECLARE_TYPEINFO ( LocalFileHeader ,
Q_PRIMITIVE_TYPE  )

◆ readMSDosDate()

QDateTime readMSDosDate ( const uchar * src)
static

Definition at line 234 of file qzip.cpp.

◆ readUInt()

QT_BEGIN_NAMESPACE uint readUInt ( const uchar * data)
inlinestatic

Definition at line 29 of file qzip.cpp.

◆ readUShort()

ushort readUShort ( const uchar * data)
inlinestatic

Definition at line 34 of file qzip.cpp.

◆ toLocalHeader()

LocalFileHeader toLocalHeader ( const CentralFileHeader & ch)
static

Definition at line 504 of file qzip.cpp.

◆ writeMSDosDate()

void writeMSDosDate ( uchar * dest,
const QDateTime & dt )
static

Definition at line 67 of file qzip.cpp.

◆ writeUInt()

void writeUInt ( uchar * data,
uint i )
inlinestatic

Definition at line 39 of file qzip.cpp.

◆ writeUShort()

void writeUShort ( uchar * data,
ushort i )
inlinestatic

Definition at line 47 of file qzip.cpp.