QuaZip  quazip-1-4
quazip.h
1 #ifndef QUA_ZIP_H
2 #define QUA_ZIP_H
3 
4 /*
5 Copyright (C) 2005-2014 Sergey A. Tachenov
6 
7 This file is part of QuaZip.
8 
9 QuaZip is free software: you can redistribute it and/or modify
10 it under the terms of the GNU Lesser General Public License as published by
11 the Free Software Foundation, either version 2.1 of the License, or
12 (at your option) any later version.
13 
14 QuaZip is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU Lesser General Public License for more details.
18 
19 You should have received a copy of the GNU Lesser General Public License
20 along with QuaZip. If not, see <http://www.gnu.org/licenses/>.
21 
22 See COPYING file for the full LGPL text.
23 
24 Original ZIP package is copyrighted by Gilles Vollant, see
25 quazip/(un)zip.h files for details, basically it's zlib license.
26  **/
27 
28 #include <QtCore/QString>
29 #include <QtCore/QStringList>
30 #include "quazip_qt_compat.h"
31 
32 #include "zip.h"
33 #include "unzip.h"
34 
35 #include "quazip_global.h"
36 #include "quazipfileinfo.h"
37 
38 // just in case it will be defined in the later versions of the ZIP/UNZIP
39 #ifndef UNZ_OPENERROR
40 // define additional error code
41 #define UNZ_OPENERROR -1000
42 #endif
43 
44 class QuaZipPrivate;
45 
47 
84 class QUAZIP_EXPORT QuaZip {
85  friend class QuaZipPrivate;
86  public:
88  enum Constants {
89  MAX_FILE_NAME_LENGTH=256
92  };
94  enum Mode {
98  mdAppend,
106  mdAdd
107  };
109 
115  csDefault=0,
116  csSensitive=1,
117  csInsensitive=2
118  };
120 
126  static Qt::CaseSensitivity convertCaseSensitivity(
127  CaseSensitivity cs);
128  private:
129  QuaZipPrivate *p;
130  public:
132 
133  QuaZip();
135  QuaZip(const QString& zipName);
137 
138  QuaZip(QIODevice *ioDevice);
139  // not (and will not be) implemented
140  QuaZip(const QuaZip& that) = delete;
141  // not (and will not be) implemented
142  QuaZip& operator=(const QuaZip& that) = delete;
144 
145  ~QuaZip();
147 
193  bool open(Mode mode, zlib_filefunc_def *ioApi =nullptr);
195 
222  void close();
224 
229  void setFileNameCodec(QTextCodec *fileNameCodec);
231 
234  void setFileNameCodec(const char *fileNameCodecName);
236 
240  void setOsCode(uint osCode);
242  uint getOsCode() const;
244  QTextCodec* getFileNameCodec() const;
246 
248  void setCommentCodec(QTextCodec *commentCodec);
250 
253  void setCommentCodec(const char *commentCodecName);
255  QTextCodec* getCommentCodec() const;
257 
262  QString getZipName() const;
264 
269  void setZipName(const QString& zipName);
271 
275  QIODevice *getIoDevice() const;
277 
282  void setIoDevice(QIODevice *ioDevice);
284  Mode getMode() const;
286  bool isOpen() const;
288 
296  int getZipError() const;
298 
301  int getEntriesCount() const;
303  QString getComment() const;
305 
313  void setComment(const QString& comment);
315 
318  bool goToFirstFile();
320 
337  bool goToNextFile();
339 
363  bool setCurrentFile(const QString& fileName, CaseSensitivity cs =csDefault);
365  bool hasCurrentFile() const;
367 
388  bool getCurrentFileInfo(QuaZipFileInfo* info)const;
390 
398  bool getCurrentFileInfo(QuaZipFileInfo64* info)const;
400 
406  QString getCurrentFileName()const;
408 
423  unzFile getUnzFile();
425 
429  zipFile getZipFile();
431 
458  void setDataDescriptorWritingEnabled(bool enabled);
460 
463  bool isDataDescriptorWritingEnabled() const;
465 
471  QStringList getFileNameList() const;
473 
485  QList<QuaZipFileInfo> getFileInfoList() const;
487 
495  QList<QuaZipFileInfo64> getFileInfoList64() const;
497 
510  void setZip64Enabled(bool zip64);
512 
517  bool isZip64Enabled() const;
519 
532  void setUtf8Enabled(bool utf8);
534 
539  bool isUtf8Enabled() const;
541 
544  bool isAutoClose() const;
546 
566  void setAutoClose(bool autoClose) const;
568 
597  static void setDefaultFileNameCodec(QTextCodec *codec);
603  static void setDefaultFileNameCodec(const char *codecName);
605 
608  static void setDefaultOsCode(uint osCode);
610 
613  static uint getDefaultOsCode();
614 };
615 
616 #endif
QuaZip::setDataDescriptorWritingEnabled
void setDataDescriptorWritingEnabled(bool enabled)
Changes the data descriptor writing mode.
Definition: quazip.cpp:678
QuaZip::open
bool open(Mode mode, zlib_filefunc_def *ioApi=nullptr)
Opens ZIP file.
Definition: quazip.cpp:235
QuaZip::setOsCode
void setOsCode(uint osCode)
Sets the OS code (highest 8 bits of the “version made by” field) for new files.
Definition: quazip.cpp:601
QuaZip::setDefaultOsCode
static void setDefaultOsCode(uint osCode)
Sets default OS code.
Definition: quazip.cpp:796
QuaZipFileInfo64::toQuaZipFileInfo
bool toQuaZipFileInfo(QuaZipFileInfo &info) const
Converts to QuaZipFileInfo.
Definition: quazipfileinfo.cpp:70
QuaZip::setUtf8Enabled
void setUtf8Enabled(bool utf8)
Enables the use of UTF-8 encoding for file names and comments text.
Definition: quazip.cpp:816
QuaZip::mdAppend
@ mdAppend
Definition: quazip.h:98
QuaZipFileInfo64::versionCreated
quint16 versionCreated
Version created by.
Definition: quazipfileinfo.h:89
QuaZipFileInfo64::comment
QString comment
Comment.
Definition: quazipfileinfo.h:118
QuaZip::isOpen
bool isOpen() const
Returns true if ZIP file is open, false otherwise.
Definition: quazip.cpp:648
QuaZip::setDefaultFileNameCodec
static void setDefaultFileNameCodec(QTextCodec *codec)
Sets the default file name codec to use.
Definition: quazip.cpp:786
QuaZip::getFileInfoList
QList< QuaZipFileInfo > getFileInfoList() const
Returns information list about all files inside the archive.
Definition: quazip.cpp:757
QuaZipFileInfo64::extra
QByteArray extra
Extra field.
Definition: quazipfileinfo.h:120
QuaZip::getMode
Mode getMode() const
Returns the mode in which ZIP file was opened.
Definition: quazip.cpp:643
QuaZip::setCommentCodec
void setCommentCodec(QTextCodec *commentCodec)
Sets the codec used to encode/decode comments inside archive.
Definition: quazip.cpp:616
QuaZip::mdCreate
@ mdCreate
ZIP file was created with open() call.
Definition: quazip.h:97
QuaZipPrivate::unzFile_f
unzFile unzFile_f
The internal handle for UNZIP modes.
Definition: quazip.cpp:61
QuaZip::convertCaseSensitivity
static Qt::CaseSensitivity convertCaseSensitivity(CaseSensitivity cs)
Returns the actual case sensitivity for the specified QuaZip one.
Definition: quazip.cpp:773
QuaZip::setIoDevice
void setIoDevice(QIODevice *ioDevice)
Sets the device representing the ZIP file.
Definition: quazip.cpp:380
QuaZipFileInfo64::versionNeeded
quint16 versionNeeded
Version needed to extract.
Definition: quazipfileinfo.h:91
QuaZipFileInfo64::externalAttr
quint32 externalAttr
External file attributes.
Definition: quazipfileinfo.h:116
QuaZip::isAutoClose
bool isAutoClose() const
Returns the auto-close flag.
Definition: quazip.cpp:826
QuaZip::getDefaultOsCode
static uint getDefaultOsCode()
Returns default OS code.
Definition: quazip.cpp:801
QuaZip::mdUnzip
@ mdUnzip
ZIP file is open for reading files inside it.
Definition: quazip.h:96
QuaZip::getFileInfoList64
QList< QuaZipFileInfo64 > getFileInfoList64() const
Returns information list about all files inside the archive.
Definition: quazip.cpp:765
QuaZip::isZip64Enabled
bool isZip64Enabled() const
Returns whether the zip64 mode is enabled.
Definition: quazip.cpp:811
QuaZip::getOsCode
uint getOsCode() const
Returns the OS code for new files.
Definition: quazip.cpp:606
QuaZip::Mode
Mode
Open mode of the ZIP file.
Definition: quazip.h:94
QuaZip::isUtf8Enabled
bool isUtf8Enabled() const
Returns whether the UTF-8 encoding mode is enabled.
Definition: quazip.cpp:821
QuaZip::getIoDevice
QIODevice * getIoDevice() const
Returns the device representing this ZIP file.
Definition: quazip.cpp:636
QuaZip::goToNextFile
bool goToNextFile()
Sets the current file to the next file in the archive.
Definition: quazip.cpp:495
QuaZip::getCurrentFileInfo
bool getCurrentFileInfo(QuaZipFileInfo *info) const
Retrieves information about the current file.
Definition: quazip.cpp:509
QuaZip::getZipError
int getZipError() const
Returns the error code of the last operation.
Definition: quazip.cpp:653
QuaZip::setCurrentFile
bool setCurrentFile(const QString &fileName, CaseSensitivity cs=csDefault)
Sets current file by its name.
Definition: quazip.cpp:425
QuaZipFileInfo
Information about a file inside archive.
Definition: quazipfileinfo.h:45
QuaZip::setAutoClose
void setAutoClose(bool autoClose) const
Sets or unsets the auto-close flag.
Definition: quazip.cpp:831
QuaZip::getFileNameList
QStringList getFileNameList() const
Returns a list of files inside the archive.
Definition: quazip.cpp:749
QuaZip::getZipName
QString getZipName() const
Returns the name of the ZIP file.
Definition: quazip.cpp:631
QuaZipFileInfo64::crc
quint32 crc
CRC.
Definition: quazipfileinfo.h:106
QuaZipFileInfo64::compressedSize
quint64 compressedSize
Compressed file size.
Definition: quazipfileinfo.h:108
QuaZip::getUnzFile
unzFile getUnzFile()
Returns unzFile handle.
Definition: quazip.cpp:668
QuaZip::CaseSensitivity
CaseSensitivity
Case sensitivity for the file names.
Definition: quazip.h:114
QuaZip
ZIP archive.
Definition: quazip.h:84
QuaZipFileInfo64::method
quint16 method
Compression method.
Definition: quazipfileinfo.h:95
QuaZip::isDataDescriptorWritingEnabled
bool isDataDescriptorWritingEnabled() const
Returns the data descriptor default writing mode.
Definition: quazip.cpp:683
QuaZipFileInfo64::uncompressedSize
quint64 uncompressedSize
Uncompressed file size.
Definition: quazipfileinfo.h:110
QuaZip::getFileNameCodec
QTextCodec * getFileNameCodec() const
Returns the codec used to encode/decode comments inside archive.
Definition: quazip.cpp:611
QuaZip::getZipFile
zipFile getZipFile()
Returns zipFile handle.
Definition: quazip.cpp:673
QuaZip::QuaZip
QuaZip()
Constructs QuaZip object.
Definition: quazip.cpp:213
QuaZip::csSensitive
@ csSensitive
Case sensitive.
Definition: quazip.h:116
QuaZipPrivate
All the internal stuff for the QuaZip class.
Definition: quazip.cpp:41
QuaZip::getEntriesCount
int getEntriesCount() const
Returns number of the entries in the ZIP central directory.
Definition: quazip.cpp:390
QuaZipFileInfo64::dateTime
QDateTime dateTime
Last modification date and time.
Definition: quazipfileinfo.h:104
QuaZip::getComment
QString getComment() const
Returns global comment in the ZIP file.
Definition: quazip.cpp:404
QuaZipFileInfo64::flags
quint16 flags
General purpose flags.
Definition: quazipfileinfo.h:93
QuaZip::setZipName
void setZipName(const QString &zipName)
Sets the name of the ZIP file.
Definition: quazip.cpp:370
QuaZip::csDefault
@ csDefault
Default for platform. Case sensitive for UNIX, not for Windows.
Definition: quazip.h:115
QuaZip::setFileNameCodec
void setFileNameCodec(QTextCodec *fileNameCodec)
Sets the codec used to encode/decode file names inside archive.
Definition: quazip.cpp:591
QuaZip::getCurrentFileName
QString getCurrentFileName() const
Returns the current file name.
Definition: quazip.cpp:567
QuaZip::setZip64Enabled
void setZip64Enabled(bool zip64)
Enables the zip64 mode.
Definition: quazip.cpp:806
QuaZip::hasCurrentFile
bool hasCurrentFile() const
Returns true if the current file has been set.
Definition: quazip.cpp:663
QuaZipFileInfo64
Information about a file inside archive (with zip64 support).
Definition: quazipfileinfo.h:85
QuaZip::close
void close()
Closes ZIP file.
Definition: quazip.cpp:341
QuaZipFileInfo64::name
QString name
File name.
Definition: quazipfileinfo.h:87
QuaZip::Constants
Constants
Useful constants.
Definition: quazip.h:88
QuaZipPrivate::zipFile_f
zipFile zipFile_f
The internal handle for ZIP modes.
Definition: quazip.cpp:63
QuaZip::goToFirstFile
bool goToFirstFile()
Sets the current file to the first file in the archive.
Definition: quazip.cpp:483
QuaZip::MAX_FILE_NAME_LENGTH
@ MAX_FILE_NAME_LENGTH
Definition: quazip.h:89
QuaZip::mdAdd
@ mdAdd
ZIP file was opened for adding files in the archive.
Definition: quazip.h:106
QuaZipFileInfo64::diskNumberStart
quint16 diskNumberStart
Disk number start.
Definition: quazipfileinfo.h:112
QuaZip::mdNotOpen
@ mdNotOpen
ZIP file is not open. This is the initial mode.
Definition: quazip.h:95
QuaZipFileInfo64::internalAttr
quint16 internalAttr
Internal file attributes.
Definition: quazipfileinfo.h:114
QuaZip::getCommentCodec
QTextCodec * getCommentCodec() const
Returns the codec used to encode/decode comments inside archive.
Definition: quazip.cpp:626
QuaZip::setComment
void setComment(const QString &comment)
Sets the global comment in the ZIP file.
Definition: quazip.cpp:658
QuaZip::~QuaZip
~QuaZip()
Destroys QuaZip object.
Definition: quazip.cpp:228