@@ -32,10 +32,16 @@ #import "OFNotImplementedException.h" #import "OFNotOpenException.h" #import "OFOutOfRangeException.h" #import "OFTruncatedDataException.h" #import "OFWriteFailedException.h" + +enum { + modeRead, + modeWrite, + modeAppend +}; OF_DIRECT_MEMBERS @interface OFLHAArchiveFileReadStream: OFStream { OFStream *_stream, *_decompressedStream; @@ -92,24 +98,23 @@ @try { _stream = [stream retain]; if ([mode isEqual: @"r"]) - _mode = OFLHAArchiveModeRead; + _mode = modeRead; else if ([mode isEqual: @"w"]) - _mode = OFLHAArchiveModeWrite; + _mode = modeWrite; else if ([mode isEqual: @"a"]) - _mode = OFLHAArchiveModeAppend; + _mode = modeAppend; else @throw [OFInvalidArgumentException exception]; - if ((_mode == OFLHAArchiveModeWrite || - _mode == OFLHAArchiveModeAppend) && + if ((_mode == modeWrite || _mode == modeAppend) && ![_stream isKindOfClass: [OFSeekableStream class]]) @throw [OFInvalidArgumentException exception]; - if (_mode == OFLHAArchiveModeAppend) + if (_mode == modeAppend) [(OFSeekableStream *)_stream seekToOffset: 0 whence: SEEK_END]; _encoding = OFStringEncodingISO8859_1; } @catch (id e) { @@ -152,11 +157,11 @@ { OFLHAArchiveEntry *entry; char header[21]; size_t headerLen; - if (_mode != OFLHAArchiveModeRead) + if (_mode != modeRead) @throw [OFInvalidArgumentException exception]; [(OFLHAArchiveFileReadStream *)_lastReturnedStream of_skip]; @try { [_lastReturnedStream close]; @@ -193,11 +198,11 @@ return entry; } - (OFStream *)streamForReadingCurrentEntry { - if (_mode != OFLHAArchiveModeRead) + if (_mode != modeRead) @throw [OFInvalidArgumentException exception]; if (_lastReturnedStream == nil) @throw [OFInvalidArgumentException exception]; @@ -207,11 +212,11 @@ - (OFStream *)streamForWritingEntry: (OFLHAArchiveEntry *)entry { OFString *compressionMethod; - if (_mode != OFLHAArchiveModeWrite && _mode != OFLHAArchiveModeAppend) + if (_mode != modeWrite && _mode != modeAppend) @throw [OFInvalidArgumentException exception]; compressionMethod = entry.compressionMethod; if (![compressionMethod isEqual: @"-lh0-"] &&