209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
|
{
self = [super init];
@try {
void *pool = objc_autoreleasePoolPush();
OFMutableData *extraField = nil;
uint16_t fileNameLength, extraFieldLength, fileCommentLength;
of_string_encoding_t encoding;
size_t ZIP64Index;
uint16_t ZIP64Size;
if ([stream readLittleEndianInt32] != 0x02014B50)
@throw [OFInvalidFormatException exception];
_versionMadeBy = [stream readLittleEndianInt16];
|
|
|
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
|
{
self = [super init];
@try {
void *pool = objc_autoreleasePoolPush();
OFMutableData *extraField = nil;
uint16_t fileNameLength, extraFieldLength, fileCommentLength;
OFStringEncoding encoding;
size_t ZIP64Index;
uint16_t ZIP64Size;
if ([stream readLittleEndianInt32] != 0x02014B50)
@throw [OFInvalidFormatException exception];
_versionMadeBy = [stream readLittleEndianInt16];
|
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
|
fileCommentLength = [stream readLittleEndianInt16];
_startDiskNumber = [stream readLittleEndianInt16];
_internalAttributes = [stream readLittleEndianInt16];
_versionSpecificAttributes = [stream readLittleEndianInt32];
_localFileHeaderOffset = [stream readLittleEndianInt32];
encoding = (_generalPurposeBitFlag & (1u << 11)
? OF_STRING_ENCODING_UTF_8
: OF_STRING_ENCODING_CODEPAGE_437);
_fileName = [[stream readStringWithLength: fileNameLength
encoding: encoding] copy];
if (extraFieldLength > 0)
extraField = [[[stream readDataWithCount:
extraFieldLength] mutableCopy] autorelease];
if (fileCommentLength > 0)
|
|
<
|
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
|
fileCommentLength = [stream readLittleEndianInt16];
_startDiskNumber = [stream readLittleEndianInt16];
_internalAttributes = [stream readLittleEndianInt16];
_versionSpecificAttributes = [stream readLittleEndianInt32];
_localFileHeaderOffset = [stream readLittleEndianInt32];
encoding = (_generalPurposeBitFlag & (1u << 11)
? OFStringEncodingUTF8 : OFStringEncodingCodepage437);
_fileName = [[stream readStringWithLength: fileNameLength
encoding: encoding] copy];
if (extraFieldLength > 0)
extraField = [[[stream readDataWithCount:
extraFieldLength] mutableCopy] autorelease];
if (fileCommentLength > 0)
|