︙ | | | ︙ | |
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
if ((_mode == modeWrite || _mode == modeAppend) &&
![_stream isKindOfClass: [OFSeekableStream class]])
@throw [OFInvalidArgumentException exception];
if (_mode == modeAppend)
[(OFSeekableStream *)_stream seekToOffset: 0
whence: SEEK_END];
_encoding = OFStringEncodingISO8859_1;
} @catch (id e) {
[self release];
@throw e;
}
|
|
|
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
if ((_mode == modeWrite || _mode == modeAppend) &&
![_stream isKindOfClass: [OFSeekableStream class]])
@throw [OFInvalidArgumentException exception];
if (_mode == modeAppend)
[(OFSeekableStream *)_stream seekToOffset: 0
whence: OFSeekEnd];
_encoding = OFStringEncodingISO8859_1;
} @catch (id e) {
[self release];
@throw e;
}
|
︙ | | | ︙ | |
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
|
stream = _stream;
}
if ([stream isKindOfClass: [OFSeekableStream class]] &&
(sizeof(OFStreamOffset) > 4 || toRead != (OFStreamOffset)toRead))
[(OFSeekableStream *)stream seekToOffset: (OFStreamOffset)toRead
whence: SEEK_CUR];
else {
while (toRead > 0) {
char buffer[512];
unsigned long long min = toRead;
if (min > 512)
min = 512;
|
|
|
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
|
stream = _stream;
}
if ([stream isKindOfClass: [OFSeekableStream class]] &&
(sizeof(OFStreamOffset) > 4 || toRead != (OFStreamOffset)toRead))
[(OFSeekableStream *)stream seekToOffset: (OFStreamOffset)toRead
whence: OFSeekCurrent];
else {
while (toRead > 0) {
char buffer[512];
unsigned long long min = toRead;
if (min > 512)
min = 512;
|
︙ | | | ︙ | |
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
|
{
self = [super init];
@try {
_entry = [entry mutableCopy];
_encoding = encoding;
_headerOffset = [stream seekToOffset: 0 whence: SEEK_CUR];
[_entry of_writeToStream: stream encoding: _encoding];
/*
* Retain stream last, so that -[close] called by -[dealloc]
* doesn't write in case of an error.
*/
_stream = [stream retain];
|
|
|
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
|
{
self = [super init];
@try {
_entry = [entry mutableCopy];
_encoding = encoding;
_headerOffset = [stream seekToOffset: 0 whence: OFSeekCurrent];
[_entry of_writeToStream: stream encoding: _encoding];
/*
* Retain stream last, so that -[close] called by -[dealloc]
* doesn't write in case of an error.
*/
_stream = [stream retain];
|
︙ | | | ︙ | |
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
|
if (_stream == nil)
@throw [OFNotOpenException exceptionWithObject: self];
_entry.uncompressedSize = _bytesWritten;
_entry.compressedSize = _bytesWritten;
_entry.CRC16 = _CRC16;
offset = [_stream seekToOffset: 0 whence: SEEK_CUR];
[_stream seekToOffset: _headerOffset whence: SEEK_SET];
[_entry of_writeToStream: _stream encoding: _encoding];
[_stream seekToOffset: offset whence: SEEK_SET];
[_stream release];
_stream = nil;
[super close];
}
@end
|
|
|
|
|
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
|
if (_stream == nil)
@throw [OFNotOpenException exceptionWithObject: self];
_entry.uncompressedSize = _bytesWritten;
_entry.compressedSize = _bytesWritten;
_entry.CRC16 = _CRC16;
offset = [_stream seekToOffset: 0 whence: OFSeekCurrent];
[_stream seekToOffset: _headerOffset whence: OFSeekSet];
[_entry of_writeToStream: _stream encoding: _encoding];
[_stream seekToOffset: offset whence: OFSeekSet];
[_stream release];
_stream = nil;
[super close];
}
@end
|