Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qzip.cpp File Reference

(fb29033565408e0b5dcba013c80cb1a145ab3408)

#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
}
 
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
}
 
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
}
 
enum  GeneralPurposeFlag {
  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
}
 

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 23 of file qzip.cpp.

Referenced by QZipWriterPrivate::addEntry(), and QZipReaderPrivate::scanFiles().

◆ ZIP_VERSION

#define ZIP_VERSION   20

Definition at line 18 of file qzip.cpp.

Referenced by QZipWriterPrivate::addEntry(), and QZipReader::fileData().

Enumeration Type Documentation

◆ CompressionMethod

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

Definition at line 289 of file qzip.cpp.

◆ GeneralPurposeFlag

Enumerator
Encrypted 
AlgTune1 
AlgTune2 
HasDataDescriptor 
PatchedData 
StrongEncrypted 
Utf8Names 
CentralDirectoryEncrypted 

Definition at line 277 of file qzip.cpp.

◆ HostOS

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 

Definition at line 253 of file qzip.cpp.

Function Documentation

◆ copyUInt()

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

Definition at line 52 of file qzip.cpp.

Referenced by toLocalHeader().

+ Here is the caller graph for this function:

◆ copyUShort()

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

Definition at line 60 of file qzip.cpp.

Referenced by toLocalHeader().

+ Here is the caller graph for this function:

◆ deflate()

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

Definition at line 127 of file qzip.cpp.

References deflate().

Referenced by QZipWriterPrivate::addEntry(), deflate(), and QByteArray::qCompress().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ inflate()

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

Definition at line 92 of file qzip.cpp.

References inflate().

Referenced by QZipReader::fileData(), inflate(), QSvgTinyDocument::isLikelySvg(), and qt_inflateSvgzDataFrom().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ modeToPermissions()

◆ 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()

static QDateTime readMSDosDate ( const uchar * src)
static

Definition at line 236 of file qzip.cpp.

References readUInt().

Referenced by QZipPrivate::fillFileInfo().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ readUInt()

static QT_BEGIN_NAMESPACE uint readUInt ( const uchar * data)
inlinestatic

Definition at line 28 of file qzip.cpp.

Referenced by QZipReader::fileData(), QZipPrivate::fillFileInfo(), QOpenGLProgramBinaryCache::load(), readMSDosDate(), and QZipReaderPrivate::scanFiles().

+ Here is the caller graph for this function:

◆ readUShort()

static ushort readUShort ( const uchar * data)
inlinestatic

Definition at line 33 of file qzip.cpp.

Referenced by QZipReader::fileData(), QZipPrivate::fillFileInfo(), and QZipReaderPrivate::scanFiles().

+ Here is the caller graph for this function:

◆ toLocalHeader()

static LocalFileHeader toLocalHeader ( const CentralFileHeader & ch)
static

Definition at line 506 of file qzip.cpp.

References ch, copyUInt(), copyUShort(), and writeUInt().

Referenced by QZipWriterPrivate::addEntry().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ writeMSDosDate()

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

Definition at line 66 of file qzip.cpp.

References date, and time.

Referenced by QZipWriterPrivate::addEntry().

+ Here is the caller graph for this function:

◆ writeUInt()

static void writeUInt ( uchar * data,
uint i )
inlinestatic

Definition at line 38 of file qzip.cpp.

References i.

Referenced by QZipWriterPrivate::addEntry(), QZipWriter::close(), QOpenGLProgramBinaryCache::save(), and toLocalHeader().

+ Here is the caller graph for this function:

◆ writeUShort()

static void writeUShort ( uchar * data,
ushort i )
inlinestatic

Definition at line 46 of file qzip.cpp.

References i.

Referenced by QZipWriterPrivate::addEntry(), and QZipWriter::close().

+ Here is the caller graph for this function: