96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
uint32_t buffer[1024 / sizeof(uint32_t)];
bool empty = true;
if (![_stream isKindOfClass: [OFSeekableStream class]])
@throw [OFInvalidArgumentException exception];
[(OFSeekableStream *)_stream seekToOffset: -1024
whence: SEEK_END];
[_stream readIntoBuffer: buffer exactLength: 1024];
for (size_t i = 0; i < 1024 / sizeof(uint32_t); i++)
if (buffer[i] != 0)
empty = false;
if (!empty)
@throw [OFInvalidFormatException exception];
[(OFSeekableStream *)stream seekToOffset: -1024
whence: SEEK_END];
}
_encoding = OFStringEncodingUTF8;
} @catch (id e) {
[self release];
@throw e;
}
|
|
|
|
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
uint32_t buffer[1024 / sizeof(uint32_t)];
bool empty = true;
if (![_stream isKindOfClass: [OFSeekableStream class]])
@throw [OFInvalidArgumentException exception];
[(OFSeekableStream *)_stream seekToOffset: -1024
whence: OFSeekEnd];
[_stream readIntoBuffer: buffer exactLength: 1024];
for (size_t i = 0; i < 1024 / sizeof(uint32_t); i++)
if (buffer[i] != 0)
empty = false;
if (!empty)
@throw [OFInvalidFormatException exception];
[(OFSeekableStream *)stream seekToOffset: -1024
whence: OFSeekEnd];
}
_encoding = OFStringEncodingUTF8;
} @catch (id e) {
[self release];
@throw e;
}
|
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
|
if ([_stream isKindOfClass: [OFSeekableStream class]] &&
_toRead <= LLONG_MAX &&
(OFStreamOffset)_toRead == (long long)_toRead) {
unsigned long long size;
[(OFSeekableStream *)_stream
seekToOffset: (OFStreamOffset)_toRead
whence: SEEK_CUR];
_toRead = 0;
size = _entry.size;
if (size % 512 != 0)
[(OFSeekableStream *)_stream
seekToOffset: 512 - (size % 512)
whence: SEEK_CUR];
} else {
char buffer[512];
unsigned long long size;
while (_toRead >= 512) {
[_stream readIntoBuffer: buffer exactLength: 512];
_toRead -= 512;
|
|
|
|
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
|
if ([_stream isKindOfClass: [OFSeekableStream class]] &&
_toRead <= LLONG_MAX &&
(OFStreamOffset)_toRead == (long long)_toRead) {
unsigned long long size;
[(OFSeekableStream *)_stream
seekToOffset: (OFStreamOffset)_toRead
whence: OFSeekCurrent];
_toRead = 0;
size = _entry.size;
if (size % 512 != 0)
[(OFSeekableStream *)_stream
seekToOffset: 512 - (size % 512)
whence: OFSeekCurrent];
} else {
char buffer[512];
unsigned long long size;
while (_toRead >= 512) {
[_stream readIntoBuffer: buffer exactLength: 512];
_toRead -= 512;
|