summaryrefslogtreecommitdiff
path: root/rbutil/rbutilqt/zip/unzip.h
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2007-07-25 20:21:06 +0000
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2007-07-25 20:21:06 +0000
commit680408f4ac8b04d716fd8921c01b73d30a3c66c7 (patch)
tree08908a7d5e3b95daa9a1d3ed0703e64cff712022 /rbutil/rbutilqt/zip/unzip.h
parentaa643db434e230643e18e454032fb708e0f1848d (diff)
downloadrockbox-680408f4ac8b04d716fd8921c01b73d30a3c66c7.tar.gz
rockbox-680408f4ac8b04d716fd8921c01b73d30a3c66c7.zip
First stab at porting rbutil to Qt4. Currently only installing a current or archived build is working. To build, run qmake && make in the source folder. Beware that the syntax of rbutil.ini has slightly changed. Caching of the downloaded files is also still missing.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13989 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'rbutil/rbutilqt/zip/unzip.h')
-rw-r--r--rbutil/rbutilqt/zip/unzip.h144
1 files changed, 144 insertions, 0 deletions
diff --git a/rbutil/rbutilqt/zip/unzip.h b/rbutil/rbutilqt/zip/unzip.h
new file mode 100644
index 0000000000..a48fbe8724
--- /dev/null
+++ b/rbutil/rbutilqt/zip/unzip.h
@@ -0,0 +1,144 @@
1/****************************************************************************
2** Filename: unzip.h
3** Last updated [dd/mm/yyyy]: 28/01/2007
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 Angius Fabrizio. All rights reserved.
12**
13** This file is part of the OSDaB project (http://osdab.sourceforge.net/).
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 <QtGlobal>
32#include <QMap>
33#include <QDateTime>
34
35#include <zlib/zlib.h>
36
37class UnzipPrivate;
38class QIODevice;
39class QFile;
40class QDir;
41class QStringList;
42class QString;
43
44
45class UnZip
46{
47public:
48 enum ErrorCode
49 {
50 Ok,
51 ZlibInit,
52 ZlibError,
53 OpenFailed,
54 PartiallyCorrupted,
55 Corrupted,
56 WrongPassword,
57 NoOpenArchive,
58 FileNotFound,
59 ReadFailed,
60 WriteFailed,
61 SeekFailed,
62 CreateDirFailed,
63 InvalidDevice,
64 InvalidArchive,
65 HeaderConsistencyError,
66
67 Skip, SkipAll // internal use only
68 };
69
70 enum ExtractionOption
71 {
72 //! Extracts paths (default)
73 ExtractPaths = 0x0001,
74 //! Ignores paths and extracts all the files to the same directory
75 SkipPaths = 0x0002
76 };
77 Q_DECLARE_FLAGS(ExtractionOptions, ExtractionOption)
78
79 enum CompressionMethod
80 {
81 NoCompression, Deflated, UnknownCompression
82 };
83
84 enum FileType
85 {
86 File, Directory
87 };
88
89 typedef struct ZipEntry
90 {
91 ZipEntry();
92
93 QString filename;
94 QString comment;
95
96 quint32 compressedSize;
97 quint32 uncompressedSize;
98 quint32 crc32;
99
100 QDateTime lastModified;
101
102 CompressionMethod compression;
103 FileType type;
104
105 bool encrypted;
106 };
107
108 UnZip();
109 virtual ~UnZip();
110
111 bool isOpen() const;
112
113 ErrorCode openArchive(const QString& filename);
114 ErrorCode openArchive(QIODevice* device);
115 void closeArchive();
116
117 QString archiveComment() const;
118
119 QString formatError(UnZip::ErrorCode c) const;
120
121 bool contains(const QString& file) const;
122
123 QStringList fileList() const;
124 QList<ZipEntry> entryList() const;
125
126 ErrorCode extractAll(const QString& dirname, ExtractionOptions options = ExtractPaths);
127 ErrorCode extractAll(const QDir& dir, ExtractionOptions options = ExtractPaths);
128
129 ErrorCode extractFile(const QString& filename, const QString& dirname, ExtractionOptions options = ExtractPaths);
130 ErrorCode extractFile(const QString& filename, const QDir& dir, ExtractionOptions options = ExtractPaths);
131 ErrorCode extractFile(const QString& filename, QIODevice* device, ExtractionOptions options = ExtractPaths);
132
133 ErrorCode extractFiles(const QStringList& filenames, const QString& dirname, ExtractionOptions options = ExtractPaths);
134 ErrorCode extractFiles(const QStringList& filenames, const QDir& dir, ExtractionOptions options = ExtractPaths);
135
136 void setPassword(const QString& pwd);
137
138private:
139 UnzipPrivate* d;
140};
141
142Q_DECLARE_OPERATORS_FOR_FLAGS(UnZip::ExtractionOptions)
143
144#endif // OSDAB_UNZIP__H