19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
-
-
+
|
#import "OFZIPArchiveEntry.h"
OF_ASSUME_NONNULL_BEGIN
@class OFArray OF_GENERIC(ObjectType);
@class OFMutableArray OF_GENERIC(ObjectType);
@class OFMutableDictionary OF_GENERIC(KeyType, ObjectType);
@class OFSeekableStream;
@class OFStream;
/*!
* @class OFZIPArchive OFZIPArchive.h ObjFW/OFZIPArchive.h
*
* @brief A class for accessing and manipulating ZIP files.
*/
@interface OFZIPArchive: OFObject
{
OFSeekableStream *_stream;
OF_KINDOF(OFStream *) _stream;
enum {
OF_ZIP_ARCHIVE_MODE_READ,
OF_ZIP_ARCHIVE_MODE_WRITE,
OF_ZIP_ARCHIVE_MODE_APPEND
} _mode;
uint32_t _diskNumber, _centralDirectoryDisk;
uint64_t _centralDirectoryEntriesInDisk, _centralDirectoryEntries;
|
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
-
+
-
+
+
-
-
+
+
-
+
-
+
+
-
-
+
+
|
/*!
* The archive comment.
*/
@property (readonly, nonatomic) OFString *archiveComment;
/*!
* @brief Creates a new OFZIPArchive object with the specified seekable stream.
* @brief Creates a new OFZIPArchive object with the specified stream.
*
* @param stream A seekable stream from which the ZIP archive will be read
* @param stream A stream from which the ZIP archive will be read.
* For read and append mode, this needs to be an OFSeekableStream.
* @param mode The mode for the ZIP file. Valid modes are "r" for reading,
* "w" for creating a new file and "a" for appending to an existing
* archive.
* @return A new, autoreleased OFZIPArchive
*/
+ (instancetype)archiveWithSeekableStream: (OFSeekableStream *)stream
mode: (OFString *)mode;
+ (instancetype)archiveWithStream: (OF_KINDOF(OFStream *))stream
mode: (OFString *)mode;
#ifdef OF_HAVE_FILES
/*!
* @brief Creates a new OFZIPArchive object with the specified file.
*
* @param path The path to the ZIP file
* @param mode The mode for the ZIP file. Valid modes are "r" for reading,
* "w" for creating a new file and "a" for appending to an existing
* archive.
* @return A new, autoreleased OFZIPArchive
*/
+ (instancetype)archiveWithPath: (OFString *)path
mode: (OFString *)mode;
#endif
- init OF_UNAVAILABLE;
/*!
* @brief Initializes an already allocated OFZIPArchive object with the
* specified seekable stream.
* specified stream.
*
* @param stream A seekable stream from which the ZIP archive will be read
* @param stream A stream from which the ZIP archive will be read.
* For read and append mode, this needs to be an OFSeekableStream.
* @param mode The mode for the ZIP file. Valid modes are "r" for reading,
* "w" for creating a new file and "a" for appending to an existing
* archive.
* @return An initialized OFZIPArchive
*/
- initWithSeekableStream: (OFSeekableStream *)stream
mode: (OFString *)mode OF_DESIGNATED_INITIALIZER;
- initWithStream: (OF_KINDOF(OFStream *))stream
mode: (OFString *)mode OF_DESIGNATED_INITIALIZER;
#ifdef OF_HAVE_FILES
/*!
* @brief Initializes an already allocated OFZIPArchive object with the
* specified file.
*
* @param path The path to the ZIP file
|