Scribus
Open source desktop publishing at your fingertips
unzip.h
1 /****************************************************************************
2 ** Filename: unzip.h
3 ** Last updated [dd/mm/yyyy]: 27/03/2011
4 **
5 ** pkzip 2.0 decompression.
6 **
7 ** Some of the code has been inspired by other open source projects,
8 ** (mainly Info-Zip and Gilles Vollant's minizip).
9 ** Compression and decompression actually uses the zlib library.
10 **
11 ** Copyright (C) 2007-2012 Angius Fabrizio. All rights reserved.
12 **
13 ** This file is part of the OSDaB project (http://osdab.42cows.org/).
14 **
15 ** This file may be distributed and/or modified under the terms of the
16 ** GNU General Public License version 2 as published by the Free Software
17 ** Foundation and appearing in the file LICENSE.GPL included in the
18 ** packaging of this file.
19 **
20 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
21 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
22 **
23 ** See the file LICENSE.GPL that came with this software distribution or
24 ** visit http://www.gnu.org/copyleft/gpl.html for GPL licensing information.
25 **
26 **********************************************************************/
27 
28 #ifndef OSDAB_UNZIP__H
29 #define OSDAB_UNZIP__H
30 
31 #include "zipglobal.h"
32 
33 #include <QtCore/QDateTime>
34 #include <QtCore/QMap>
35 #include <QtCore/QtGlobal>
36 
37 #include <zlib.h>
38 //#include <zlib/zlib.h>
39 
40 class QDir;
41 class QFile;
42 class QIODevice;
43 class QString;
44 class QStringList;
45 
46 OSDAB_BEGIN_NAMESPACE(Zip)
47 
48 class UnzipPrivate;
49 
50 class /*OSDAB_ZIP_EXPORT*/ UnZip
51 {
52 public:
53  enum ErrorCode
54  {
55  Ok,
56  ZlibInit,
57  ZlibError,
58  OpenFailed,
59  PartiallyCorrupted,
60  Corrupted,
61  WrongPassword,
62  NoOpenArchive,
63  FileNotFound,
64  ReadFailed,
65  WriteFailed,
66  SeekFailed,
67  CreateDirFailed,
68  InvalidDevice,
69  InvalidArchive,
70  HeaderConsistencyError,
71 
72  Skip, SkipAll // internal use only
73  };
74 
75  enum ExtractionOption
76  {
77  ExtractPaths = 0x0001,
78  SkipPaths = 0x0002,
79  VerifyOnly = 0x0004,
80  NoSilentDirectoryCreation = 0x0008
81  };
82  Q_DECLARE_FLAGS(ExtractionOptions, ExtractionOption)
83 
84  enum CompressionMethod
85  {
86  NoCompression, Deflated, UnknownCompression
87  };
88 
89  enum FileType
90  {
91  File, Directory
92  };
93 
94  struct ZipEntry
95  {
96  ZipEntry();
97 
98  QString filename;
99  QString comment;
100 
101  quint32 compressedSize;
102  quint32 uncompressedSize;
103  quint32 crc32;
104 
105  QDateTime lastModified;
106 
107  CompressionMethod compression;
108  FileType type;
109 
110  bool encrypted;
111  };
112 
113  UnZip();
114  virtual ~UnZip();
115 
116  bool isOpen() const;
117 
118  ErrorCode openArchive(const QString& filename);
119  ErrorCode openArchive(QIODevice* device);
120  void closeArchive();
121 
122  QString archiveComment() const;
123 
124  QString formatError(UnZip::ErrorCode c) const;
125 
126  bool contains(const QString& file) const;
127 
128  QStringList fileList() const;
129  QList<ZipEntry> entryList() const;
130 
131  ErrorCode verifyArchive();
132 
133  ErrorCode extractAll(const QString& dirname, ExtractionOptions options = ExtractPaths);
134  ErrorCode extractAll(const QDir& dir, ExtractionOptions options = ExtractPaths);
135 
136  ErrorCode extractFile(const QString& filename, const QString& dirname, ExtractionOptions options = ExtractPaths);
137  ErrorCode extractFile(const QString& filename, const QDir& dir, ExtractionOptions options = ExtractPaths);
138  ErrorCode extractFile(const QString& filename, QIODevice* device, ExtractionOptions options = ExtractPaths);
139 
140  ErrorCode extractFiles(const QStringList& filenames, const QString& dirname, ExtractionOptions options = ExtractPaths);
141  ErrorCode extractFiles(const QStringList& filenames, const QDir& dir, ExtractionOptions options = ExtractPaths);
142 
143  void setPassword(const QString& pwd);
144 
145 private:
146  UnzipPrivate* d;
147 };
148 
149 Q_DECLARE_OPERATORS_FOR_FLAGS(UnZip::ExtractionOptions)
150 
151 OSDAB_END_NAMESPACE
152 
153 #endif // OSDAB_UNZIP__H
ErrorCode
Definition: unzip.h:53
Zip file compression.
Definition: zip.h:49
Definition: unzip_p.h:54
Definition: unzip.h:94
Definition: fpoptimizer.cc:789
PKZip 2.0 file decompression. Compatibility with later versions is not ensured as they may use unsupp...
Definition: unzip.h:50