QuaZIP  quazip-0-9
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 <QtCore/QTextCodec>
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  // not (and will not be) implemented
131  QuaZip(const QuaZip& that);
132  // not (and will not be) implemented
133  QuaZip& operator=(const QuaZip& that);
134  public:
136 
137  QuaZip();
139  QuaZip(const QString& zipName);
141 
142  QuaZip(QIODevice *ioDevice);
144 
145  ~QuaZip();
147 
193  bool open(Mode mode, zlib_filefunc_def *ioApi =NULL);
195 
217  void close();
219 
224  void setFileNameCodec(QTextCodec *fileNameCodec);
226 
229  void setFileNameCodec(const char *fileNameCodecName);
231 
235  void setOsCode(uint osCode);
237  uint getOsCode() const;
239  QTextCodec* getFileNameCodec() const;
241 
243  void setCommentCodec(QTextCodec *commentCodec);
245 
248  void setCommentCodec(const char *commentCodecName);
250  QTextCodec* getCommentCodec() const;
252 
257  QString getZipName() const;
259 
264  void setZipName(const QString& zipName);
266 
270  QIODevice *getIoDevice() const;
272 
277  void setIoDevice(QIODevice *ioDevice);
279  Mode getMode() const;
281  bool isOpen() const;
283 
291  int getZipError() const;
293 
296  int getEntriesCount() const;
298  QString getComment() const;
300 
308  void setComment(const QString& comment);
310 
313  bool goToFirstFile();
315 
332  bool goToNextFile();
334 
358  bool setCurrentFile(const QString& fileName, CaseSensitivity cs =csDefault);
360  bool hasCurrentFile() const;
362 
383  bool getCurrentFileInfo(QuaZipFileInfo* info)const;
385 
393  bool getCurrentFileInfo(QuaZipFileInfo64* info)const;
395 
401  QString getCurrentFileName()const;
403 
418  unzFile getUnzFile();
420 
424  zipFile getZipFile();
426 
453  void setDataDescriptorWritingEnabled(bool enabled);
455 
458  bool isDataDescriptorWritingEnabled() const;
460 
466  QStringList getFileNameList() const;
468 
480  QList<QuaZipFileInfo> getFileInfoList() const;
482 
490  QList<QuaZipFileInfo64> getFileInfoList64() const;
492 
505  void setZip64Enabled(bool zip64);
507 
512  bool isZip64Enabled() const;
514 
527  void setUtf8Enabled(bool utf8);
529 
534  bool isUtf8Enabled() const;
536 
539  bool isAutoClose() const;
541 
561  void setAutoClose(bool autoClose) const;
563 
592  static void setDefaultFileNameCodec(QTextCodec *codec);
598  static void setDefaultFileNameCodec(const char *codecName);
600 
603  static void setDefaultOsCode(uint osCode);
605 
608  static uint getDefaultOsCode();
609 };
610 
611 #endif
QuaZip::setDataDescriptorWritingEnabled
void setDataDescriptorWritingEnabled(bool enabled)
Changes the data descriptor writing mode.
Definition: quazip.cpp:687
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:610
QuaZip::setDefaultOsCode
static void setDefaultOsCode(uint osCode)
Sets default OS code.
Definition: quazip.cpp:808
QuaZipFileInfo64::toQuaZipFileInfo
bool toQuaZipFileInfo(QuaZipFileInfo &info) const
Converts to QuaZipFileInfo.
Definition: quazipfileinfo.cpp:64
QuaZip::setUtf8Enabled
void setUtf8Enabled(bool utf8)
Enables the use of UTF-8 encoding for file names and comments text.
Definition: quazip.cpp:828
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:657
QuaZip::setDefaultFileNameCodec
static void setDefaultFileNameCodec(QTextCodec *codec)
Sets the default file name codec to use.
Definition: quazip.cpp:798
QuaZip::getFileInfoList
QList< QuaZipFileInfo > getFileInfoList() const
Returns information list about all files inside the archive.
Definition: quazip.cpp:767
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:652
QuaZip::setCommentCodec
void setCommentCodec(QTextCodec *commentCodec)
Sets the codec used to encode/decode comments inside archive.
Definition: quazip.cpp:625
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:785
QuaZip::setIoDevice
void setIoDevice(QIODevice *ioDevice)
Sets the device representing the ZIP file.
Definition: quazip.cpp:388
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:838
QuaZip::getDefaultOsCode
static uint getDefaultOsCode()
Returns default OS code.
Definition: quazip.cpp:813
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:776
QuaZip::isZip64Enabled
bool isZip64Enabled() const
Returns whether the zip64 mode is enabled.
Definition: quazip.cpp:823
QuaZip::getOsCode
uint getOsCode() const
Returns the OS code for new files.
Definition: quazip.cpp:615
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:833
QuaZip::getIoDevice
QIODevice * getIoDevice() const
Returns the device representing this ZIP file.
Definition: quazip.cpp:645
QuaZip::goToNextFile
bool goToNextFile()
Sets the current file to the next file in the archive.
Definition: quazip.cpp:503
QuaZip::getCurrentFileInfo
bool getCurrentFileInfo(QuaZipFileInfo *info) const
Retrieves information about the current file.
Definition: quazip.cpp:517
QuaZip::getZipError
int getZipError() const
Returns the error code of the last operation.
Definition: quazip.cpp:662
QuaZip::setCurrentFile
bool setCurrentFile(const QString &fileName, CaseSensitivity cs=csDefault)
Sets current file by its name.
Definition: quazip.cpp:433
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:843
QuaZip::getFileNameList
QStringList getFileNameList() const
Returns a list of files inside the archive.
Definition: quazip.cpp:758
QuaZip::getZipName
QString getZipName() const
Returns the name of the ZIP file.
Definition: quazip.cpp:640
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:677
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:692
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:620
QuaZip::getZipFile
zipFile getZipFile()
Returns zipFile handle.
Definition: quazip.cpp:682
QuaZip::QuaZip
QuaZip()
Constructs QuaZip object.
Definition: quazip.cpp:214
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:398
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:412
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:378
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:600
QuaZip::getCurrentFileName
QString getCurrentFileName() const
Returns the current file name.
Definition: quazip.cpp:576
QuaZip::setZip64Enabled
void setZip64Enabled(bool zip64)
Enables the zip64 mode.
Definition: quazip.cpp:818
QuaZip::hasCurrentFile
bool hasCurrentFile() const
Returns true if the current file has been set.
Definition: quazip.cpp:672
QuaZipFileInfo64
Information about a file inside archive (with zip64 support).
Definition: quazipfileinfo.h:85
QuaZip::close
void close()
Closes ZIP file.
Definition: quazip.cpp:347
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:491
QuaZip::open
bool open(Mode mode, zlib_filefunc_def *ioApi=NULL)
Opens ZIP file.
Definition: quazip.cpp:236
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:635
QuaZip::setComment
void setComment(const QString &comment)
Sets the global comment in the ZIP file.
Definition: quazip.cpp:667
QuaZip::~QuaZip
~QuaZip()
Destroys QuaZip object.
Definition: quazip.cpp:229