@@ -33,10 +33,16 @@ #import "OFInvalidFormatException.h" #import "OFNotOpenException.h" #import "OFOutOfRangeException.h" #import "OFTruncatedDataException.h" #import "OFWriteFailedException.h" + +enum { + modeRead, + modeWrite, + modeAppend +}; OF_DIRECT_MEMBERS @interface OFTarArchiveFileReadStream: OFStream { OFTarArchive *_archive; @@ -95,19 +101,19 @@ @try { _stream = [stream retain]; if ([mode isEqual: @"r"]) - _mode = OFTarArchiveModeRead; + _mode = modeRead; else if ([mode isEqual: @"w"]) - _mode = OFTarArchiveModeWrite; + _mode = modeWrite; else if ([mode isEqual: @"a"]) - _mode = OFTarArchiveModeAppend; + _mode = modeAppend; else @throw [OFInvalidArgumentException exception]; - if (_mode == OFTarArchiveModeAppend) { + if (_mode == modeAppend) { uint32_t buffer[1024 / sizeof(uint32_t)]; bool empty = true; if (![_stream isKindOfClass: [OFSeekableStream class]]) @throw [OFInvalidArgumentException exception]; @@ -170,11 +176,11 @@ - (OFTarArchiveEntry *)nextEntry { uint32_t buffer[512 / sizeof(uint32_t)]; bool empty = true; - if (_mode != OFTarArchiveModeRead) + if (_mode != modeRead) @throw [OFInvalidArgumentException exception]; if (_currentEntry != nil && _lastReturnedStream == nil) { /* * No read stream was created since the last call to @@ -225,11 +231,11 @@ return _currentEntry; } - (OFStream *)streamForReadingCurrentEntry { - if (_mode != OFTarArchiveModeRead) + if (_mode != modeRead) @throw [OFInvalidArgumentException exception]; if (_currentEntry == nil) @throw [OFInvalidArgumentException exception]; @@ -243,11 +249,11 @@ return _lastReturnedStream; } - (OFStream *)streamForWritingEntry: (OFTarArchiveEntry *)entry { - if (_mode != OFTarArchiveModeWrite && _mode != OFTarArchiveModeAppend) + if (_mode != modeWrite && _mode != modeAppend) @throw [OFInvalidArgumentException exception]; @try { [_lastReturnedStream close]; } @catch (OFNotOpenException *e) { @@ -275,11 +281,11 @@ } @catch (OFNotOpenException *e) { /* Might have already been closed by the user - that's fine. */ } _lastReturnedStream = nil; - if (_mode == OFTarArchiveModeWrite || _mode == OFTarArchiveModeAppend) { + if (_mode == modeWrite || _mode == modeAppend) { char buffer[1024]; memset(buffer, '\0', 1024); [_stream writeBuffer: buffer length: 1024]; }