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
qzipreader_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QZIPREADER_H
6#define QZIPREADER_H
7
8#include <QtCore/private/qglobal_p.h>
9
10//
11// W A R N I N G
12// -------------
13//
14// This file is not part of the Qt API. It exists for the convenience
15// of the QZipReader class. This header file may change from
16// version to version without notice, or even be removed.
17//
18// We mean it.
19//
20
21#include <QtCore/qdatetime.h>
22#include <QtCore/qfile.h>
23#include <QtCore/qstring.h>
24
25QT_BEGIN_NAMESPACE
26
27class QZipReaderPrivate;
28
29class Q_CORE_EXPORT QZipReader
30{
31public:
32 explicit QZipReader(const QString &fileName, QIODevice::OpenMode mode = QIODevice::ReadOnly );
33
34 explicit QZipReader(QIODevice *device);
35 ~QZipReader();
36
37 QIODevice* device() const;
38
39 bool isReadable() const;
40 bool exists() const;
41
42 struct FileInfo
43 {
44 FileInfo() noexcept
45 : isDir(false), isFile(false), isSymLink(false), crc(0), size(0)
46 {}
47
48 bool isValid() const noexcept { return isDir || isFile || isSymLink; }
49
50 QString filePath;
51 uint isDir : 1;
52 uint isFile : 1;
53 uint isSymLink : 1;
54 QFile::Permissions permissions;
55 uint crc;
56 qint64 size;
57 QDateTime lastModified;
58 };
59
60 QList<FileInfo> fileInfoList() const;
61 int count() const;
62
63 FileInfo entryInfoAt(int index) const;
64 QByteArray fileData(const QString &fileName) const;
65 bool extractAll(const QString &destinationDir) const;
66
67 enum Status {
68 NoError,
69 FileReadError,
70 FileOpenError,
71 FilePermissionsError,
72 FileError
73 };
74
75 Status status() const;
76
77 void close();
78
79private:
80 QZipReaderPrivate *d;
81 Q_DISABLE_COPY_MOVE(QZipReader)
82};
83Q_DECLARE_TYPEINFO(QZipReader::FileInfo, Q_RELOCATABLE_TYPE);
84Q_DECLARE_TYPEINFO(QZipReader::Status, Q_PRIMITIVE_TYPE);
85
86QT_END_NAMESPACE
87
88#endif // QZIPREADER_H
~QZipPrivate()
Definition qzip.cpp:388
QByteArray comment
Definition qzip.cpp:400
QList< FileHeader > fileHeaders
Definition qzip.cpp:399
QIODevice * device
Definition qzip.cpp:396
uint start_of_directory
Definition qzip.cpp:401
QZipPrivate(QIODevice *device, bool ownDev)
Definition qzip.cpp:383
bool ownDevice
Definition qzip.cpp:397
bool dirtyFileTree
Definition qzip.cpp:398
void scanFiles()
Definition qzip.cpp:520
QZipReaderPrivate(QIODevice *device, bool ownDev)
Definition qzip.cpp:474
\variable QZipReader::FileInfo::filePath The full filepath inside the archive.
void addEntry(EntryType type, const QString &fileName, const QByteArray &contents)
Definition qzip.cpp:609
QFile::Permissions permissions
Definition qzip.cpp:496
QZipWriterPrivate(QIODevice *device, bool ownDev)
Definition qzip.cpp:487
#define ZIP_VERSION
Definition qzip.cpp:19
static QFile::Permissions modeToPermissions(quint32 mode)
Definition qzip.cpp:186
static void copyUShort(uchar *dest, const uchar *src)
Definition qzip.cpp:61
Q_DECLARE_TYPEINFO(HostOS, Q_PRIMITIVE_TYPE)
static void copyUInt(uchar *dest, const uchar *src)
Definition qzip.cpp:53
CompressionMethod
Definition qzip.cpp:287
@ CompressionMethodBZip2
Definition qzip.cpp:300
@ CompressionMethodJpeg
Definition qzip.cpp:307
@ CompressionMethodReduced1
Definition qzip.cpp:290
@ CompressionMethodReduced4
Definition qzip.cpp:293
@ CompressionMethodTerse
Definition qzip.cpp:304
@ CompressionMethodDeflated
Definition qzip.cpp:296
@ CompressionMethodReduced2
Definition qzip.cpp:291
@ CompressionMethodWzAES
Definition qzip.cpp:310
@ CompressionMethodStored
Definition qzip.cpp:288
@ CompressionMethodReduced3
Definition qzip.cpp:292
@ CompressionMethodReservedTokenizing
Definition qzip.cpp:295
@ CompressionMethodWavPack
Definition qzip.cpp:308
@ CompressionMethodShrunk
Definition qzip.cpp:289
@ CompressionMethodLz77
Definition qzip.cpp:305
@ CompressionMethodDeflated64
Definition qzip.cpp:297
@ CompressionMethodImploded
Definition qzip.cpp:294
@ CompressionMethodPPMd
Definition qzip.cpp:309
@ CompressionMethodLZMA
Definition qzip.cpp:302
@ CompressionMethodPKImploding
Definition qzip.cpp:298
Q_DECLARE_TYPEINFO(FileHeader, Q_RELOCATABLE_TYPE)
static void writeUInt(uchar *data, uint i)
Definition qzip.cpp:39
Q_DECLARE_TYPEINFO(CompressionMethod, Q_PRIMITIVE_TYPE)
static QDateTime readMSDosDate(const uchar *src)
Definition qzip.cpp:234
#define ZDEBUG
Definition qzip.cpp:24
static void writeMSDosDate(uchar *dest, const QDateTime &dt)
Definition qzip.cpp:67
Q_DECLARE_TYPEINFO(CentralFileHeader, Q_PRIMITIVE_TYPE)
static LocalFileHeader toLocalHeader(const CentralFileHeader &ch)
Definition qzip.cpp:504
HostOS
Definition qzip.cpp:251
@ HostFAT
Definition qzip.cpp:252
@ HostOS400
Definition qzip.cpp:270
@ HostVMS
Definition qzip.cpp:254
@ HostVFAT
Definition qzip.cpp:266
@ HostQDOS
Definition qzip.cpp:264
@ HostTandem
Definition qzip.cpp:269
@ HostVM_CMS
Definition qzip.cpp:256
@ HostMac
Definition qzip.cpp:259
@ HostCPM
Definition qzip.cpp:261
@ HostZ_System
Definition qzip.cpp:260
@ HostMVS
Definition qzip.cpp:267
@ HostAcorn
Definition qzip.cpp:265
@ HostTOPS20
Definition qzip.cpp:262
@ HostAtari
Definition qzip.cpp:257
@ HostUnix
Definition qzip.cpp:255
@ HostHPFS
Definition qzip.cpp:258
@ HostBeOS
Definition qzip.cpp:268
@ HostOSX
Definition qzip.cpp:271
@ HostAMIGA
Definition qzip.cpp:253
@ HostNTFS
Definition qzip.cpp:263
Q_DECLARE_TYPEINFO(LocalFileHeader, Q_PRIMITIVE_TYPE)
static quint32 permissionsToMode(QFile::Permissions perms)
Definition qzip.cpp:210
static void writeUShort(uchar *data, ushort i)
Definition qzip.cpp:47
GeneralPurposeFlag
Definition qzip.cpp:275
@ CentralDirectoryEncrypted
Definition qzip.cpp:283
@ AlgTune2
Definition qzip.cpp:278
@ StrongEncrypted
Definition qzip.cpp:281
@ HasDataDescriptor
Definition qzip.cpp:279
@ Utf8Names
Definition qzip.cpp:282
@ PatchedData
Definition qzip.cpp:280
@ Encrypted
Definition qzip.cpp:276
@ AlgTune1
Definition qzip.cpp:277
static int inflate(Bytef *dest, ulong *destLen, const Bytef *source, ulong sourceLen)
Definition qzip.cpp:93
static int deflate(Bytef *dest, ulong *destLen, const Bytef *source, ulong sourceLen)
Definition qzip.cpp:125
Q_DECLARE_TYPEINFO(DataDescriptor, Q_PRIMITIVE_TYPE)
Q_DECLARE_TYPEINFO(EndOfDirectory, Q_PRIMITIVE_TYPE)
Q_DECLARE_TYPEINFO(GeneralPurposeFlag, Q_PRIMITIVE_TYPE)
static ushort readUShort(const uchar *data)
Definition qzip.cpp:34
uchar last_mod_file[4]
Definition qzip.cpp:344
uchar crc_32[4]
Definition qzip.cpp:345
uchar version_made[2]
Definition qzip.cpp:340
uchar extra_field_length[2]
Definition qzip.cpp:349
uchar signature[4]
Definition qzip.cpp:339
uchar version_needed[2]
Definition qzip.cpp:341
uchar disk_start[2]
Definition qzip.cpp:351
uchar uncompressed_size[4]
Definition qzip.cpp:347
uchar compressed_size[4]
Definition qzip.cpp:346
uchar internal_file_attributes[2]
Definition qzip.cpp:352
uchar file_name_length[2]
Definition qzip.cpp:348
uchar offset_local_header[4]
Definition qzip.cpp:354
uchar external_file_attributes[4]
Definition qzip.cpp:353
uchar compression_method[2]
Definition qzip.cpp:343
uchar file_comment_length[2]
Definition qzip.cpp:350
uchar general_purpose_bits[2]
Definition qzip.cpp:342
uchar crc_32[4]
Definition qzip.cpp:331
uchar uncompressed_size[4]
Definition qzip.cpp:333
uchar compressed_size[4]
Definition qzip.cpp:332
uchar num_dir_entries_this_disk[2]
Definition qzip.cpp:363
uchar signature[4]
Definition qzip.cpp:360
uchar comment_length[2]
Definition qzip.cpp:367
uchar this_disk[2]
Definition qzip.cpp:361
uchar start_of_directory_disk[2]
Definition qzip.cpp:362
uchar dir_start_offset[4]
Definition qzip.cpp:366
uchar num_dir_entries[2]
Definition qzip.cpp:364
uchar directory_size[4]
Definition qzip.cpp:365
QByteArray extra_field
Definition qzip.cpp:375
QByteArray file_name
Definition qzip.cpp:374
CentralFileHeader h
Definition qzip.cpp:373
QByteArray file_comment
Definition qzip.cpp:376
uchar extra_field_length[2]
Definition qzip.cpp:325
uchar general_purpose_bits[2]
Definition qzip.cpp:318
uchar last_mod_file[4]
Definition qzip.cpp:320
uchar version_needed[2]
Definition qzip.cpp:317
uchar compressed_size[4]
Definition qzip.cpp:322
uchar signature[4]
Definition qzip.cpp:316
uchar crc_32[4]
Definition qzip.cpp:321
uchar uncompressed_size[4]
Definition qzip.cpp:323
uchar file_name_length[2]
Definition qzip.cpp:324
uchar compression_method[2]
Definition qzip.cpp:319