463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
|
_lastReturnedStream = [[OFZIPArchive_FileReadStream alloc]
initWithStream: _stream
entry: entry];
objc_autoreleasePoolPop(pool);
return [[_lastReturnedStream retain] autorelease];
}
- (OFStream *)streamForWritingEntry: (OFZIPArchiveEntry *)entry_
{
/* TODO: Avoid data descriptor when _stream is an OFSeekableStream */
int64_t offsetAdd = 0;
void *pool;
|
|
|
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
|
_lastReturnedStream = [[OFZIPArchive_FileReadStream alloc]
initWithStream: _stream
entry: entry];
objc_autoreleasePoolPop(pool);
return [[(OFStream *)_lastReturnedStream retain] autorelease];
}
- (OFStream *)streamForWritingEntry: (OFZIPArchiveEntry *)entry_
{
/* TODO: Avoid data descriptor when _stream is an OFSeekableStream */
int64_t offsetAdd = 0;
void *pool;
|
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
|
_lastReturnedStream = [[OFZIPArchive_FileWriteStream alloc]
initWithStream: _stream
entry: entry];
objc_autoreleasePoolPop(pool);
return [[_lastReturnedStream retain] autorelease];
}
- (void)of_writeCentralDirectory
{
void *pool = objc_autoreleasePoolPush();
_centralDirectoryEntries = 0;
|
|
|
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
|
_lastReturnedStream = [[OFZIPArchive_FileWriteStream alloc]
initWithStream: _stream
entry: entry];
objc_autoreleasePoolPop(pool);
return [[(OFStream *)_lastReturnedStream retain] autorelease];
}
- (void)of_writeCentralDirectory
{
void *pool = objc_autoreleasePoolPush();
_centralDirectoryEntries = 0;
|
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
|
[_stream writeLittleEndianInt16: 0xFFFF]; /* CD disk */
[_stream writeLittleEndianInt16: 0xFFFF]; /* CD entries in disk */
[_stream writeLittleEndianInt16: 0xFFFF]; /* CD entries */
[_stream writeLittleEndianInt32: 0xFFFFFFFF]; /* CD size */
[_stream writeLittleEndianInt32: 0xFFFFFFFF]; /* CD offset */
[_stream writeLittleEndianInt16: [_archiveComment UTF8StringLength]];
if (_archiveComment != nil)
[_stream writeString: _archiveComment];
objc_autoreleasePoolPop(pool);
}
- (void)close
{
if (_stream == nil)
|
|
|
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
|
[_stream writeLittleEndianInt16: 0xFFFF]; /* CD disk */
[_stream writeLittleEndianInt16: 0xFFFF]; /* CD entries in disk */
[_stream writeLittleEndianInt16: 0xFFFF]; /* CD entries */
[_stream writeLittleEndianInt32: 0xFFFFFFFF]; /* CD size */
[_stream writeLittleEndianInt32: 0xFFFFFFFF]; /* CD offset */
[_stream writeLittleEndianInt16: [_archiveComment UTF8StringLength]];
if (_archiveComment != nil)
[_stream writeString: (OFString *)_archiveComment];
objc_autoreleasePoolPop(pool);
}
- (void)close
{
if (_stream == nil)
|