Overview
Context
Changes
Modified src/OFTarArchive.h
from [d9a5ab9e23]
to [0314df0a93].
︙ | | |
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
-
+
-
+
-
+
|
/*!
* @class OFTarArchive OFTarArchive.h ObjFW/OFTarArchive.h
*
* @brief A class for accessing and manipulating tar archives.
*/
@interface OFTarArchive: OFObject
{
OFStream *_stream;
OF_KINDOF(OFStream *) _stream;
enum {
OF_TAR_ARCHIVE_MODE_READ,
OF_TAR_ARCHIVE_MODE_WRITE,
OF_TAR_ARCHIVE_MODE_APPEND
} _mode;
OF_KINDOF(OFStream *) _lastReturnedStream;
}
/*!
* @brief Creates a new OFTarArchive object with the specified stream.
*
* @param stream A stream from which the tar archive will be read.
* For append mode, this needs to be a seekable stream.
* For append mode, this needs to be an OFSeekableStream.
* @param mode The mode for the tar 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 OFTarArchive
*/
+ (instancetype)archiveWithStream: (OFStream *)stream
+ (instancetype)archiveWithStream: (OF_KINDOF(OFStream *))stream
mode: (OFString *)mode;
#ifdef OF_HAVE_FILES
/*!
* @brief Creates a new OFTarArchive object with the specified file.
*
* @param path The path to the tar archive
|
︙ | | |
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
-
+
-
+
|
#endif
/*!
* @brief Initializes an already allocated OFTarArchive object with the
* specified stream.
*
* @param stream A stream from which the tar archive will be read.
* For append mode, this needs to be a seekable stream.
* For append mode, this needs to be an OFSeekableStream.
* @param mode The mode for the tar file. Valid modes are "r" for reading,
* "w" for creating a new file and "a" for appending to an existing
* archive.
* @return An initialized OFTarArchive
*/
- initWithStream: (OFStream *)stream
- initWithStream: (OF_KINDOF(OFStream *))stream
mode: (OFString *)mode OF_DESIGNATED_INITIALIZER;
#ifdef OF_HAVE_FILES
/*!
* @brief Initializes an already allocated OFTarArchive object with the
* specified file.
*
|
︙ | | |
Modified src/OFTarArchive.m
from [69e4750cf1]
to [cb4c96888d].
︙ | | |
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
|
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
|
-
+
-
+
|
memcpy(buffer, [string UTF8String], UTF8StringLength);
for (size_t i = UTF8StringLength; i < length; i++)
buffer[i] = '\0';
}
@implementation OFTarArchive: OFObject
+ (instancetype)archiveWithStream: (OFStream *)stream
+ (instancetype)archiveWithStream: (OF_KINDOF(OFStream *))stream
mode: (OFString *)mode
{
return [[[self alloc] initWithStream: stream
mode: mode] autorelease];
}
#ifdef OF_HAVE_FILES
+ (instancetype)archiveWithPath: (OFString *)path
mode: (OFString *)mode
{
return [[[self alloc] initWithPath: path
mode: mode] autorelease];
}
#endif
- initWithStream: (OFStream *)stream
- initWithStream: (OF_KINDOF(OFStream *))stream
mode: (OFString *)mode
{
self = [super init];
@try {
_stream = [stream retain];
|
︙ | | |
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
-
-
+
+
-
-
+
+
|
uint32_t u32[1024 / sizeof(uint32_t)];
} buffer;
bool empty = true;
if (![_stream isKindOfClass: [OFSeekableStream class]])
@throw [OFInvalidArgumentException exception];
[(OFSeekableStream *)stream seekToOffset: -1024
whence: SEEK_END];
[stream seekToOffset: -1024
whence: SEEK_END];
[stream readIntoBuffer: buffer.c
exactLength: 1024];
for (size_t i = 0; i < 1024 / sizeof(uint32_t); i++)
if (buffer.u32[i] != 0)
empty = false;
if (!empty)
@throw [OFInvalidFormatException exception];
[(OFSeekableStream *)stream seekToOffset: -1024
whence: SEEK_END];
[stream seekToOffset: -1024
whence: SEEK_END];
}
} @catch (id e) {
[self release];
@throw e;
}
return self;
|
︙ | | |
Modified src/OFZIPArchive.h
from [fba8310c32]
to [b0cecbd912].
︙ | | |
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
|
︙ | | |
Modified src/OFZIPArchive.m
from [1114c696d8]
to [a7134be3c5].
︙ | | |
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
+
|
#import "OFZIPArchive.h"
#import "OFZIPArchiveEntry.h"
#import "OFZIPArchiveEntry+Private.h"
#import "OFData.h"
#import "OFArray.h"
#import "OFDictionary.h"
#import "OFStream.h"
#import "OFSeekableStream.h"
#ifdef OF_HAVE_FILES
# import "OFFile.h"
#endif
#import "OFInflateStream.h"
#import "OFInflate64Stream.h"
|
︙ | | |
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
|
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
|
-
-
+
+
-
-
+
+
-
-
+
+
+
+
+
|
@throw e;
}
}
@implementation OFZIPArchive
@synthesize archiveComment = _archiveComment;
+ (instancetype)archiveWithSeekableStream: (OFSeekableStream *)stream
mode: (OFString *)mode
+ (instancetype)archiveWithStream: (OF_KINDOF(OFStream *))stream
mode: (OFString *)mode
{
return [[[self alloc] initWithSeekableStream: stream
mode: mode] autorelease];
return [[[self alloc] initWithStream: stream
mode: mode] autorelease];
}
#ifdef OF_HAVE_FILES
+ (instancetype)archiveWithPath: (OFString *)path
mode: (OFString *)mode
{
return [[[self alloc] initWithPath: path
mode: mode] autorelease];
}
#endif
- init
{
OF_INVALID_INIT_METHOD
}
- initWithSeekableStream: (OFSeekableStream *)stream
mode: (OFString *)mode
- initWithStream: (OF_KINDOF(OFStream *))stream
mode: (OFString *)mode
{
self = [super init];
@try {
_stream = [stream retain];
if ([mode isEqual: @"r"]) {
if (![stream isKindOfClass: [OFSeekableStream class]])
@throw [OFInvalidArgumentException exception];
_mode = OF_ZIP_ARCHIVE_MODE_READ;
[self of_readZIPInfo];
[self of_readEntries];
} else if ([mode isEqual: @"w"] || [mode isEqual: @"a"])
@throw [OFNotImplementedException
exceptionWithSelector: _cmd
|
︙ | | |
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
|
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
|
-
-
+
+
|
#ifdef OF_HAVE_FILES
- initWithPath: (OFString *)path
mode: (OFString *)mode
{
OFFile *file = [[OFFile alloc] initWithPath: path
mode: mode];
@try {
self = [self initWithSeekableStream: file
mode: mode];
self = [self initWithStream: file
mode: mode];
} @finally {
[file release];
}
return self;
}
#endif
|
︙ | | |
Modified utils/ofzip/ZIPArchive.m
from [4d9fbe54f7]
to [44e262af33].
︙ | | |
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
-
-
+
+
|
- initWithStream: (OF_KINDOF(OFStream *))stream
mode: (OFString *)mode
{
self = [super init];
@try {
_archive = [[OFZIPArchive alloc] initWithSeekableStream: stream
mode: mode];
_archive = [[OFZIPArchive alloc] initWithStream: stream
mode: mode];
} @catch (id e) {
[self release];
@throw e;
}
return self;
}
|
︙ | | |