Index: src/OFGZIPStream.h ================================================================== --- src/OFGZIPStream.h +++ src/OFGZIPStream.h @@ -31,11 +31,11 @@ OFGZIPStreamOperatingSystemVM_CMS = 4, OFGZIPStreamOperatingSystemAtariTOS = 5, OFGZIPStreamOperatingSystemHPFS = 6, OFGZIPStreamOperatingSystemMacintosh = 7, OFGZIPStreamOperatingSystemZSystem = 8, - OFGZIPStreamOperatingSystemCP_M = 9, + OFGZIPStreamOperatingSystemCPM = 9, OFGZIPStreamOperatingSystemTOPS20 = 10, OFGZIPStreamOperatingSystemNTFS = 11, OFGZIPStreamOperatingSystemQDO = 12, OFGZIPStreamOperatingSystemAcornRISCOS = 13, OFGZIPStreamOperatingSystemUnknown = 255 Index: src/OFLHAArchive.h ================================================================== --- src/OFLHAArchive.h +++ src/OFLHAArchive.h @@ -30,13 +30,13 @@ OF_SUBCLASSING_RESTRICTED @interface OFLHAArchive: OFObject { OFStream *_stream; enum { - OF_LHA_ARCHIVE_MODE_READ, - OF_LHA_ARCHIVE_MODE_WRITE, - OF_LHA_ARCHIVE_MODE_APPEND + OFLHAArchiveModeRead, + OFLHAArchiveModeWrite, + OFLHAArchiveModeAppend } _mode; OFStringEncoding _encoding; OFStream *_Nullable _lastReturnedStream; } Index: src/OFLHAArchive.m ================================================================== --- src/OFLHAArchive.m +++ src/OFLHAArchive.m @@ -93,24 +93,24 @@ @try { _stream = [stream retain]; if ([mode isEqual: @"r"]) - _mode = OF_LHA_ARCHIVE_MODE_READ; + _mode = OFLHAArchiveModeRead; else if ([mode isEqual: @"w"]) - _mode = OF_LHA_ARCHIVE_MODE_WRITE; + _mode = OFLHAArchiveModeWrite; else if ([mode isEqual: @"a"]) - _mode = OF_LHA_ARCHIVE_MODE_APPEND; + _mode = OFLHAArchiveModeAppend; else @throw [OFInvalidArgumentException exception]; - if ((_mode == OF_LHA_ARCHIVE_MODE_WRITE || - _mode == OF_LHA_ARCHIVE_MODE_APPEND) && + if ((_mode == OFLHAArchiveModeWrite || + _mode == OFLHAArchiveModeAppend) && ![_stream isKindOfClass: [OFSeekableStream class]]) @throw [OFInvalidArgumentException exception]; - if (_mode == OF_LHA_ARCHIVE_MODE_APPEND) + if (_mode == OFLHAArchiveModeAppend) [(OFSeekableStream *)_stream seekToOffset: 0 whence: SEEK_END]; _encoding = OFStringEncodingISO8859_1; } @catch (id e) { @@ -153,11 +153,11 @@ { OFLHAArchiveEntry *entry; char header[21]; size_t headerLen; - if (_mode != OF_LHA_ARCHIVE_MODE_READ) + if (_mode != OFLHAArchiveModeRead) @throw [OFInvalidArgumentException exception]; [(OFLHAArchiveFileReadStream *)_lastReturnedStream of_skip]; @try { [_lastReturnedStream close]; @@ -194,11 +194,11 @@ return entry; } - (OFStream *)streamForReadingCurrentEntry { - if (_mode != OF_LHA_ARCHIVE_MODE_READ) + if (_mode != OFLHAArchiveModeRead) @throw [OFInvalidArgumentException exception]; if (_lastReturnedStream == nil) @throw [OFInvalidArgumentException exception]; @@ -208,12 +208,11 @@ - (OFStream *)streamForWritingEntry: (OFLHAArchiveEntry *)entry { OFString *compressionMethod; - if (_mode != OF_LHA_ARCHIVE_MODE_WRITE && - _mode != OF_LHA_ARCHIVE_MODE_APPEND) + if (_mode != OFLHAArchiveModeWrite && _mode != OFLHAArchiveModeAppend) @throw [OFInvalidArgumentException exception]; compressionMethod = entry.compressionMethod; if (![compressionMethod isEqual: @"-lh0-"] && Index: src/OFLHADecompressingStream.h ================================================================== --- src/OFLHADecompressingStream.h +++ src/OFLHADecompressingStream.h @@ -15,18 +15,18 @@ #import "OFStream.h" OF_ASSUME_NONNULL_BEGIN -#define OF_LHA_DECOMPRESSING_STREAM_BUFFER_SIZE 4096 +#define OFLHADecompressingStreamBufferSize 4096 OF_DIRECT_MEMBERS @interface OFLHADecompressingStream: OFStream { OFStream *_stream; uint8_t _distanceBits, _dictionaryBits; - unsigned char _buffer[OF_LHA_DECOMPRESSING_STREAM_BUFFER_SIZE]; + unsigned char _buffer[OFLHADecompressingStreamBufferSize]; uint32_t _bytesConsumed; uint16_t _bufferIndex, _bufferLength; uint8_t _byte; uint8_t _bitIndex, _savedBitsLength; uint16_t _savedBits; Index: src/OFLHADecompressingStream.m ================================================================== --- src/OFLHADecompressingStream.m +++ src/OFLHADecompressingStream.m @@ -58,11 +58,11 @@ stream->_bufferLength) stream->_byte = stream->_buffer[stream->_bufferIndex++]; else { const size_t bufferLength = - OF_LHA_DECOMPRESSING_STREAM_BUFFER_SIZE; + OFLHADecompressingStreamBufferSize; size_t length = [stream->_stream readIntoBuffer: stream->_buffer length: bufferLength]; stream->_bytesConsumed += (uint32_t)length; Index: src/OFMutableZIPArchiveEntry.h ================================================================== --- src/OFMutableZIPArchiveEntry.h +++ src/OFMutableZIPArchiveEntry.h @@ -50,22 +50,24 @@ /** * @brief The version which made the entry. * * The lower 8 bits are the ZIP specification version.@n * The upper 8 bits are the attribute compatibility. - * See @ref of_zip_archive_entry_attribute_compatibility. + * See @ref OFZIPArchiveEntryAttributeCompatibility. */ -@property (readwrite, nonatomic) uint16_t versionMadeBy; +@property (readwrite, nonatomic) + OFZIPArchiveEntryAttributeCompatibility versionMadeBy; /** * @brief The minimum version required to extract the file. * * The lower 8 bits are the ZIP specification version.@n * The upper 8 bits are the attribute compatibility. - * See @ref of_zip_archive_entry_attribute_compatibility. + * See @ref OFZIPArchiveEntryAttributeCompatibility. */ -@property (readwrite, nonatomic) uint16_t minVersionNeeded; +@property (readwrite, nonatomic) + OFZIPArchiveEntryAttributeCompatibility minVersionNeeded; /** * @brief The last modification date of the entry's file. * * @note Due to limitations of the ZIP format, this has only 2 second precision. @@ -74,19 +76,20 @@ /** * @brief The compression method of the entry. * * Supported values are: - * Value | Description - * --------------------------------------------------|--------------- - * OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_NONE | No compression - * OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_DEFLATE | Deflate - * OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_DEFLATE64 | Deflate64 + * Value | Description + * --------------------------------------------|--------------- + * OFZIPArchiveEntryCompressionMethodNone | No compression + * OFZIPArchiveEntryCompressionMethodDeflate | Deflate + * OFZIPArchiveEntryCompressionMethodDeflate64 | Deflate64 * * Other values may be returned, but the file cannot be extracted then. */ -@property (readwrite, nonatomic) uint16_t compressionMethod; +@property (readwrite, nonatomic) + OFZIPArchiveEntryCompressionMethod compressionMethod; /** * @brief The compressed size of the entry's file. */ @property (readwrite, nonatomic) uint64_t compressedSize; Index: src/OFMutableZIPArchiveEntry.m ================================================================== --- src/OFMutableZIPArchiveEntry.m +++ src/OFMutableZIPArchiveEntry.m @@ -83,16 +83,18 @@ [old release]; objc_autoreleasePoolPop(pool); } -- (void)setVersionMadeBy: (uint16_t)versionMadeBy +- (void)setVersionMadeBy: + (OFZIPArchiveEntryAttributeCompatibility)versionMadeBy { _versionMadeBy = versionMadeBy; } -- (void)setMinVersionNeeded: (uint16_t)minVersionNeeded +- (void)setMinVersionNeeded: + (OFZIPArchiveEntryAttributeCompatibility)minVersionNeeded { _minVersionNeeded = minVersionNeeded; } - (void)setModificationDate: (OFDate *)date @@ -106,11 +108,12 @@ ((date.localMinute & 0x3F) << 5) | ((date.second >> 1) & 0x0F); objc_autoreleasePoolPop(pool); } -- (void)setCompressionMethod: (uint16_t)compressionMethod +- (void)setCompressionMethod: + (OFZIPArchiveEntryCompressionMethod)compressionMethod { _compressionMethod = compressionMethod; } - (void)setCompressedSize: (uint64_t)compressedSize Index: src/OFTCPSocketSOCKS5Connector.h ================================================================== --- src/OFTCPSocketSOCKS5Connector.h +++ src/OFTCPSocketSOCKS5Connector.h @@ -28,16 +28,16 @@ #ifdef OF_HAVE_BLOCKS OFTCPSocketAsyncConnectBlock _Nullable _block; #endif id _Nullable _exception; enum { - OF_SOCKS5_STATE_SEND_AUTHENTICATION = 1, - OF_SOCKS5_STATE_READ_VERSION, - OF_SOCKS5_STATE_SEND_REQUEST, - OF_SOCKS5_STATE_READ_RESPONSE, - OF_SOCKS5_STATE_READ_ADDRESS, - OF_SOCKS5_STATE_READ_ADDRESS_LENGTH, + OFSOCKS5StateSendAuthentication = 1, + OFSOCKS5StateReadVersion, + OFSOCKS5StateSendRequest, + OFSOCKS5StateReadResponse, + OFSOCKS5StateReadAddress, + OFSOCKS5StateReadAddressLength, } _SOCKS5State; /* Longest read is domain name (max 255 bytes) + port */ unsigned char _buffer[257]; OFMutableData *_Nullable _request; } Index: src/OFTCPSocketSOCKS5Connector.m ================================================================== --- src/OFTCPSocketSOCKS5Connector.m +++ src/OFTCPSocketSOCKS5Connector.m @@ -104,11 +104,11 @@ return; } data = [OFData dataWithItems: "\x05\x01\x00" count: 3]; - _SOCKS5State = OF_SOCKS5_STATE_SEND_AUTHENTICATION; + _SOCKS5State = OFSOCKS5StateSendAuthentication; [_socket asyncWriteData: data runLoopMode: [OFRunLoop currentRunLoop].currentMode]; } - (bool)stream: (OFStream *)sock @@ -129,11 +129,11 @@ } runLoopMode = [OFRunLoop currentRunLoop].currentMode; switch (_SOCKS5State) { - case OF_SOCKS5_STATE_READ_VERSION: + case OFSOCKS5StateReadVersion: SOCKSVersion = buffer; if (SOCKSVersion[0] != 5 || SOCKSVersion[1] != 0) { _exception = [[OFConnectionFailedException alloc] initWithHost: _host @@ -155,14 +155,14 @@ port[0] = _port >> 8; port[1] = _port & 0xFF; [_request addItems: port count: 2]; - _SOCKS5State = OF_SOCKS5_STATE_SEND_REQUEST; + _SOCKS5State = OFSOCKS5StateSendRequest; [_socket asyncWriteData: _request runLoopMode: runLoopMode]; return false; - case OF_SOCKS5_STATE_READ_RESPONSE: + case OFSOCKS5StateReadResponse: response = buffer; if (response[0] != 5 || response[2] != 0) { _exception = [[OFConnectionFailedException alloc] initWithHost: _host @@ -217,23 +217,23 @@ } /* Skip the rest of the response */ switch (response[3]) { case 1: /* IPv4 */ - _SOCKS5State = OF_SOCKS5_STATE_READ_ADDRESS; + _SOCKS5State = OFSOCKS5StateReadAddress; [_socket asyncReadIntoBuffer: _buffer exactLength: 4 + 2 runLoopMode: runLoopMode]; return false; case 3: /* Domain name */ - _SOCKS5State = OF_SOCKS5_STATE_READ_ADDRESS_LENGTH; + _SOCKS5State = OFSOCKS5StateReadAddressLength; [_socket asyncReadIntoBuffer: _buffer exactLength: 1 runLoopMode: runLoopMode]; return false; case 4: /* IPv6 */ - _SOCKS5State = OF_SOCKS5_STATE_READ_ADDRESS; + _SOCKS5State = OFSOCKS5StateReadAddress; [_socket asyncReadIntoBuffer: _buffer exactLength: 16 + 2 runLoopMode: runLoopMode]; return false; default: @@ -245,17 +245,17 @@ [self didConnect]; return false; } return false; - case OF_SOCKS5_STATE_READ_ADDRESS: + case OFSOCKS5StateReadAddress: [self didConnect]; return false; - case OF_SOCKS5_STATE_READ_ADDRESS_LENGTH: + case OFSOCKS5StateReadAddressLength: addressLength = buffer; - _SOCKS5State = OF_SOCKS5_STATE_READ_ADDRESS; + _SOCKS5State = OFSOCKS5StateReadAddress; [_socket asyncReadIntoBuffer: _buffer exactLength: addressLength[0] + 2 runLoopMode: runLoopMode]; return false; default: @@ -278,21 +278,21 @@ } runLoopMode = [OFRunLoop currentRunLoop].currentMode; switch (_SOCKS5State) { - case OF_SOCKS5_STATE_SEND_AUTHENTICATION: - _SOCKS5State = OF_SOCKS5_STATE_READ_VERSION; + case OFSOCKS5StateSendAuthentication: + _SOCKS5State = OFSOCKS5StateReadVersion; [_socket asyncReadIntoBuffer: _buffer exactLength: 2 runLoopMode: runLoopMode]; return nil; - case OF_SOCKS5_STATE_SEND_REQUEST: + case OFSOCKS5StateSendRequest: [_request release]; _request = nil; - _SOCKS5State = OF_SOCKS5_STATE_READ_RESPONSE; + _SOCKS5State = OFSOCKS5StateReadResponse; [_socket asyncReadIntoBuffer: _buffer exactLength: 4 runLoopMode: runLoopMode]; return nil; default: Index: src/OFXMLParser.h ================================================================== --- src/OFXMLParser.h +++ src/OFXMLParser.h @@ -128,31 +128,31 @@ */ OF_SUBCLASSING_RESTRICTED @interface OFXMLParser: OFObject { id _Nullable _delegate; - enum of_xml_parser_state { - OF_XMLPARSER_IN_BYTE_ORDER_MARK, - OF_XMLPARSER_OUTSIDE_TAG, - OF_XMLPARSER_TAG_OPENED, - OF_XMLPARSER_IN_PROCESSING_INSTRUCTION, - OF_XMLPARSER_IN_TAG_NAME, - OF_XMLPARSER_IN_CLOSE_TAG_NAME, - OF_XMLPARSER_IN_TAG, - OF_XMLPARSER_IN_ATTRIBUTE_NAME, - OF_XMLPARSER_EXPECT_ATTRIBUTE_EQUAL_SIGN, - OF_XMLPARSER_EXPECT_ATTRIBUTE_DELIMITER, - OF_XMLPARSER_IN_ATTRIBUTE_VALUE, - OF_XMLPARSER_EXPECT_TAG_CLOSE, - OF_XMLPARSER_EXPECT_SPACE_OR_TAG_CLOSE, - OF_XMLPARSER_IN_EXCLAMATION_MARK, - OF_XMLPARSER_IN_CDATA_OPENING, - OF_XMLPARSER_IN_CDATA, - OF_XMLPARSER_IN_COMMENT_OPENING, - OF_XMLPARSER_IN_COMMENT_1, - OF_XMLPARSER_IN_COMMENT_2, - OF_XMLPARSER_IN_DOCTYPE + enum { + OFXMLParserStateInByteOrderMark, + OFXMLParserStateOutsideTag, + OFXMLParserStateTagOpened, + OFXMLParserStateInProcessingInstruction, + OFXMLParserStateInTagName, + OFXMLParserStateInCloseTagName, + OFXMLParserStateInTag, + OFXMLParserStateInAttributeName, + OFXMLParserStateExpectAttributeEqualSign, + OFXMLParserStateExpectAttributeDelimiter, + OFXMLParserStateInAttributeValue, + OFXMLParserStateExpectTagClose, + OFXMLParserStateExpectSpaceOrTagClose, + OFXMLParserStateInExclamationMark, + OFXMLParserStateInCDATAOpening, + OFXMLParserStateInCDATA, + OFXMLParserStateInCommentOpening, + OFXMLParserStateInComment1, + OFXMLParserStateInComment2, + OFXMLParserStateInDOCTYPE } _state; size_t _i, _last; const char *_Nullable _data; OFMutableData *_buffer; OFString *_Nullable _name, *_Nullable _prefix; Index: src/OFXMLParser.m ================================================================== --- src/OFXMLParser.m +++ src/OFXMLParser.m @@ -63,32 +63,33 @@ static void inCommentState1(OFXMLParser *); static void inCommentState2(OFXMLParser *); static void inDOCTYPEState(OFXMLParser *); typedef void (*state_function_t)(OFXMLParser *); static state_function_t lookupTable[] = { - [OF_XMLPARSER_IN_BYTE_ORDER_MARK] = inByteOrderMarkState, - [OF_XMLPARSER_OUTSIDE_TAG] = outsideTagState, - [OF_XMLPARSER_TAG_OPENED] = tagOpenedState, - [OF_XMLPARSER_IN_PROCESSING_INSTRUCTION] = inProcessingInstructionState, - [OF_XMLPARSER_IN_TAG_NAME] = inTagNameState, - [OF_XMLPARSER_IN_CLOSE_TAG_NAME] = inCloseTagNameState, - [OF_XMLPARSER_IN_TAG] = inTagState, - [OF_XMLPARSER_IN_ATTRIBUTE_NAME] = inAttributeNameState, - [OF_XMLPARSER_EXPECT_ATTRIBUTE_EQUAL_SIGN] = + [OFXMLParserStateInByteOrderMark] = inByteOrderMarkState, + [OFXMLParserStateOutsideTag] = outsideTagState, + [OFXMLParserStateTagOpened] = tagOpenedState, + [OFXMLParserStateInProcessingInstruction] = + inProcessingInstructionState, + [OFXMLParserStateInTagName] = inTagNameState, + [OFXMLParserStateInCloseTagName] = inCloseTagNameState, + [OFXMLParserStateInTag] = inTagState, + [OFXMLParserStateInAttributeName] = inAttributeNameState, + [OFXMLParserStateExpectAttributeEqualSign] = expectAttributeEqualSignState, - [OF_XMLPARSER_EXPECT_ATTRIBUTE_DELIMITER] = + [OFXMLParserStateExpectAttributeDelimiter] = expectAttributeDelimiterState, - [OF_XMLPARSER_IN_ATTRIBUTE_VALUE] = inAttributeValueState, - [OF_XMLPARSER_EXPECT_TAG_CLOSE] = expectTagCloseState, - [OF_XMLPARSER_EXPECT_SPACE_OR_TAG_CLOSE] = expectSpaceOrTagCloseState, - [OF_XMLPARSER_IN_EXCLAMATION_MARK] = inExclamationMarkState, - [OF_XMLPARSER_IN_CDATA_OPENING] = inCDATAOpeningState, - [OF_XMLPARSER_IN_CDATA] = inCDATAState, - [OF_XMLPARSER_IN_COMMENT_OPENING] = inCommentOpeningState, - [OF_XMLPARSER_IN_COMMENT_1] = inCommentState1, - [OF_XMLPARSER_IN_COMMENT_2] = inCommentState2, - [OF_XMLPARSER_IN_DOCTYPE] = inDOCTYPEState + [OFXMLParserStateInAttributeValue] = inAttributeValueState, + [OFXMLParserStateExpectTagClose] = expectTagCloseState, + [OFXMLParserStateExpectSpaceOrTagClose] = expectSpaceOrTagCloseState, + [OFXMLParserStateInExclamationMark] = inExclamationMarkState, + [OFXMLParserStateInCDATAOpening] = inCDATAOpeningState, + [OFXMLParserStateInCDATA] = inCDATAState, + [OFXMLParserStateInCommentOpening] = inCommentOpeningState, + [OFXMLParserStateInComment1] = inCommentState1, + [OFXMLParserStateInComment2] = inCommentState2, + [OFXMLParserStateInDOCTYPE] = inDOCTYPEState }; static OF_INLINE void appendToBuffer(OFMutableData *buffer, const char *string, OFStringEncoding encoding, size_t length) @@ -255,12 +256,12 @@ _lineNumber++; _lastCarriageReturn = (_data[_i] == '\r'); } - /* In OF_XMLPARSER_IN_TAG, there can be only spaces */ - if (length - _last > 0 && _state != OF_XMLPARSER_IN_TAG) + /* In OFXMLParserStateInTag, there can be only spaces */ + if (length - _last > 0 && _state != OFXMLParserStateInTag) appendToBuffer(_buffer, _data + _last, _encoding, length - _last); } - (void)parseString: (OFString *)string @@ -287,20 +288,20 @@ static void inByteOrderMarkState(OFXMLParser *self) { if (self->_data[self->_i] != "\xEF\xBB\xBF"[self->_level]) { if (self->_level == 0) { - self->_state = OF_XMLPARSER_OUTSIDE_TAG; + self->_state = OFXMLParserStateOutsideTag; self->_i--; return; } @throw [OFMalformedXMLException exceptionWithParser: self]; } if (self->_level++ == 2) - self->_state = OF_XMLPARSER_OUTSIDE_TAG; + self->_state = OFXMLParserStateOutsideTag; self->_last = self->_i + 1; } /* Not in a tag */ @@ -336,11 +337,11 @@ } [self->_buffer removeAllItems]; self->_last = self->_i + 1; - self->_state = OF_XMLPARSER_TAG_OPENED; + self->_state = OFXMLParserStateTagOpened; } /* Tag was just opened */ static void tagOpenedState(OFXMLParser *self) @@ -350,29 +351,29 @@ @throw [OFMalformedXMLException exceptionWithParser: self]; switch (self->_data[self->_i]) { case '?': self->_last = self->_i + 1; - self->_state = OF_XMLPARSER_IN_PROCESSING_INSTRUCTION; + self->_state = OFXMLParserStateInProcessingInstruction; self->_level = 0; break; case '/': self->_last = self->_i + 1; - self->_state = OF_XMLPARSER_IN_CLOSE_TAG_NAME; + self->_state = OFXMLParserStateInCloseTagName; self->_acceptProlog = false; break; case '!': self->_last = self->_i + 1; - self->_state = OF_XMLPARSER_IN_EXCLAMATION_MARK; + self->_state = OFXMLParserStateInExclamationMark; self->_acceptProlog = false; break; default: if (self->_depthLimit > 0 && self->_previous.count >= self->_depthLimit) @throw [OFOutOfRangeException exception]; - self->_state = OF_XMLPARSER_IN_TAG_NAME; + self->_state = OFXMLParserStateInTagName; self->_acceptProlog = false; self->_i--; break; } } @@ -513,11 +514,11 @@ objc_autoreleasePoolPop(pool); [self->_buffer removeAllItems]; self->_last = self->_i + 1; - self->_state = OF_XMLPARSER_OUTSIDE_TAG; + self->_state = OFXMLParserStateOutsideTag; } else self->_level = 0; } /* Inside a tag, no name yet */ @@ -591,14 +592,14 @@ [self->_name release]; [self->_prefix release]; self->_name = self->_prefix = nil; self->_state = (self->_data[self->_i] == '/' - ? OF_XMLPARSER_EXPECT_TAG_CLOSE - : OF_XMLPARSER_OUTSIDE_TAG); + ? OFXMLParserStateExpectTagClose + : OFXMLParserStateOutsideTag); } else - self->_state = OF_XMLPARSER_IN_TAG; + self->_state = OFXMLParserStateInTag; if (self->_data[self->_i] != '/') [self->_namespaces addObject: [OFMutableDictionary dictionary]]; objc_autoreleasePoolPop(pool); @@ -672,12 +673,12 @@ [self->_prefix release]; self->_name = self->_prefix = nil; self->_last = self->_i + 1; self->_state = (self->_data[self->_i] == '>' - ? OF_XMLPARSER_OUTSIDE_TAG - : OF_XMLPARSER_EXPECT_SPACE_OR_TAG_CLOSE); + ? OFXMLParserStateOutsideTag + : OFXMLParserStateExpectSpaceOrTagClose); if (self->_previous.count == 0) self->_finishedParsing = true; } @@ -694,11 +695,11 @@ if (self->_data[self->_i] != ' ' && self->_data[self->_i] != '\t' && self->_data[self->_i] != '\n' && self->_data[self->_i] != '\r') { self->_last = self->_i; - self->_state = OF_XMLPARSER_IN_ATTRIBUTE_NAME; + self->_state = OFXMLParserStateInAttributeName; self->_i--; } return; } @@ -753,12 +754,11 @@ [self->_attributes removeAllObjects]; self->_name = self->_prefix = nil; self->_last = self->_i + 1; self->_state = (self->_data[self->_i] == '/' - ? OF_XMLPARSER_EXPECT_TAG_CLOSE - : OF_XMLPARSER_OUTSIDE_TAG); + ? OFXMLParserStateExpectTagClose : OFXMLParserStateOutsideTag); } /* Looking for attribute name */ static void inAttributeNameState(OFXMLParser *self) @@ -802,21 +802,21 @@ [self->_buffer removeAllItems]; self->_last = self->_i + 1; self->_state = (self->_data[self->_i] == '=' - ? OF_XMLPARSER_EXPECT_ATTRIBUTE_DELIMITER - : OF_XMLPARSER_EXPECT_ATTRIBUTE_EQUAL_SIGN); + ? OFXMLParserStateExpectAttributeDelimiter + : OFXMLParserStateExpectAttributeEqualSign); } /* Expecting equal sign of an attribute */ static void expectAttributeEqualSignState(OFXMLParser *self) { if (self->_data[self->_i] == '=') { self->_last = self->_i + 1; - self->_state = OF_XMLPARSER_EXPECT_ATTRIBUTE_DELIMITER; + self->_state = OFXMLParserStateExpectAttributeDelimiter; return; } if (self->_data[self->_i] != ' ' && self->_data[self->_i] != '\t' && self->_data[self->_i] != '\n' && self->_data[self->_i] != '\r') @@ -835,11 +835,11 @@ if (self->_data[self->_i] != '\'' && self->_data[self->_i] != '"') @throw [OFMalformedXMLException exceptionWithParser: self]; self->_delimiter = self->_data[self->_i]; - self->_state = OF_XMLPARSER_IN_ATTRIBUTE_VALUE; + self->_state = OFXMLParserStateInAttributeValue; } /* Looking for attribute value */ static void inAttributeValueState(OFXMLParser *self) @@ -879,20 +879,20 @@ [self->_attributeName release]; [self->_attributePrefix release]; self->_attributeName = self->_attributePrefix = nil; self->_last = self->_i + 1; - self->_state = OF_XMLPARSER_IN_TAG; + self->_state = OFXMLParserStateInTag; } /* Expecting closing '>' */ static void expectTagCloseState(OFXMLParser *self) { if (self->_data[self->_i] == '>') { self->_last = self->_i + 1; - self->_state = OF_XMLPARSER_OUTSIDE_TAG; + self->_state = OFXMLParserStateOutsideTag; } else @throw [OFMalformedXMLException exceptionWithParser: self]; } /* Expecting closing '>' or space */ @@ -899,11 +899,11 @@ static void expectSpaceOrTagCloseState(OFXMLParser *self) { if (self->_data[self->_i] == '>') { self->_last = self->_i + 1; - self->_state = OF_XMLPARSER_OUTSIDE_TAG; + self->_state = OFXMLParserStateOutsideTag; } else if (self->_data[self->_i] != ' ' && self->_data[self->_i] != '\t' && self->_data[self->_i] != '\n' && self->_data[self->_i] != '\r') @throw [OFMalformedXMLException exceptionWithParser: self]; } @@ -914,16 +914,16 @@ { if (self->_finishedParsing && self->_data[self->_i] != '-') @throw [OFMalformedXMLException exceptionWithParser: self]; if (self->_data[self->_i] == '-') - self->_state = OF_XMLPARSER_IN_COMMENT_OPENING; + self->_state = OFXMLParserStateInCommentOpening; else if (self->_data[self->_i] == '[') { - self->_state = OF_XMLPARSER_IN_CDATA_OPENING; + self->_state = OFXMLParserStateInCDATAOpening; self->_level = 0; } else if (self->_data[self->_i] == 'D') { - self->_state = OF_XMLPARSER_IN_DOCTYPE; + self->_state = OFXMLParserStateInDOCTYPE; self->_level = 0; } else @throw [OFMalformedXMLException exceptionWithParser: self]; self->_last = self->_i + 1; @@ -935,11 +935,11 @@ { if (self->_data[self->_i] != "CDATA["[self->_level]) @throw [OFMalformedXMLException exceptionWithParser: self]; if (++self->_level == 6) { - self->_state = OF_XMLPARSER_IN_CDATA; + self->_state = OFXMLParserStateInCDATA; self->_level = 0; } self->_last = self->_i + 1; } @@ -964,11 +964,11 @@ objc_autoreleasePoolPop(pool); [self->_buffer removeAllItems]; self->_last = self->_i + 1; - self->_state = OF_XMLPARSER_OUTSIDE_TAG; + self->_state = OFXMLParserStateOutsideTag; } else self->_level = 0; } /* Comment */ @@ -977,11 +977,11 @@ { if (self->_data[self->_i] != '-') @throw [OFMalformedXMLException exceptionWithParser: self]; self->_last = self->_i + 1; - self->_state = OF_XMLPARSER_IN_COMMENT_1; + self->_state = OFXMLParserStateInComment1; self->_level = 0; } static void inCommentState1(OFXMLParser *self) @@ -990,11 +990,11 @@ self->_level++; else self->_level = 0; if (self->_level == 2) - self->_state = OF_XMLPARSER_IN_COMMENT_2; + self->_state = OFXMLParserStateInComment2; } static void inCommentState2(OFXMLParser *self) { @@ -1017,11 +1017,11 @@ objc_autoreleasePoolPop(pool); [self->_buffer removeAllItems]; self->_last = self->_i + 1; - self->_state = OF_XMLPARSER_OUTSIDE_TAG; + self->_state = OFXMLParserStateOutsideTag; } /* In */ static void inDOCTYPEState(OFXMLParser *self) @@ -1034,11 +1034,11 @@ @throw [OFMalformedXMLException exceptionWithParser: self]; self->_level++; if (self->_level > 6 && self->_data[self->_i] == '>') - self->_state = OF_XMLPARSER_OUTSIDE_TAG; + self->_state = OFXMLParserStateOutsideTag; self->_last = self->_i + 1; } - (size_t)lineNumber Index: src/OFZIPArchive.h ================================================================== --- src/OFZIPArchive.h +++ src/OFZIPArchive.h @@ -33,13 +33,13 @@ @interface OFZIPArchive: OFObject { OFStream *_stream; int64_t _offset; enum { - OF_ZIP_ARCHIVE_MODE_READ, - OF_ZIP_ARCHIVE_MODE_WRITE, - OF_ZIP_ARCHIVE_MODE_APPEND + OFZIPArchiveModeRead, + OFZIPArchiveModeWrite, + OFZIPArchiveModeAppend } _mode; uint32_t _diskNumber, _centralDirectoryDisk; uint64_t _centralDirectoryEntriesInDisk, _centralDirectoryEntries; uint64_t _centralDirectorySize; int64_t _centralDirectoryOffset; Index: src/OFZIPArchive.m ================================================================== --- src/OFZIPArchive.m +++ src/OFZIPArchive.m @@ -101,11 +101,11 @@ - (instancetype)initWithStream: (OFStream *)stream entry: (OFMutableZIPArchiveEntry *)entry; @end uint32_t -of_zip_archive_read_field32(const uint8_t **data, uint16_t *size) +OFZIPArchiveReadField32(const uint8_t **data, uint16_t *size) { uint32_t field = 0; if (*size < 4) @throw [OFInvalidFormatException exception]; @@ -118,11 +118,11 @@ return field; } uint64_t -of_zip_archive_read_field64(const uint8_t **data, uint16_t *size) +OFZIPArchiveReadField64(const uint8_t **data, uint16_t *size) { uint64_t field = 0; if (*size < 8) @throw [OFInvalidFormatException exception]; @@ -174,32 +174,32 @@ { self = [super init]; @try { if ([mode isEqual: @"r"]) - _mode = OF_ZIP_ARCHIVE_MODE_READ; + _mode = OFZIPArchiveModeRead; else if ([mode isEqual: @"w"]) - _mode = OF_ZIP_ARCHIVE_MODE_WRITE; + _mode = OFZIPArchiveModeWrite; else if ([mode isEqual: @"a"]) - _mode = OF_ZIP_ARCHIVE_MODE_APPEND; + _mode = OFZIPArchiveModeAppend; else @throw [OFInvalidArgumentException exception]; _stream = [stream retain]; _entries = [[OFMutableArray alloc] init]; _pathToEntryMap = [[OFMutableDictionary alloc] init]; - if (_mode == OF_ZIP_ARCHIVE_MODE_READ || - _mode == OF_ZIP_ARCHIVE_MODE_APPEND) { + if (_mode == OFZIPArchiveModeRead || + _mode == OFZIPArchiveModeAppend) { if (![stream isKindOfClass: [OFSeekableStream class]]) @throw [OFInvalidArgumentException exception]; [self of_readZIPInfo]; [self of_readEntries]; } - if (_mode == OF_ZIP_ARCHIVE_MODE_APPEND) { + if (_mode == OFZIPArchiveModeAppend) { _offset = _centralDirectoryOffset; seekOrThrowInvalidFormat((OFSeekableStream *)_stream, (OFFileOffset)_offset, SEEK_SET); } } @catch (id e) { @@ -399,12 +399,12 @@ [_lastReturnedStream close]; } @catch (OFNotOpenException *e) { /* Might have already been closed by the user - that's fine. */ } - if ((_mode == OF_ZIP_ARCHIVE_MODE_WRITE || - _mode == OF_ZIP_ARCHIVE_MODE_APPEND) && + if ((_mode == OFZIPArchiveModeWrite || + _mode == OFZIPArchiveModeAppend) && [_lastReturnedStream isKindOfClass: [OFZIPArchiveFileWriteStream class]]) { OFZIPArchiveFileWriteStream *stream = (OFZIPArchiveFileWriteStream *)_lastReturnedStream; @@ -429,11 +429,11 @@ void *pool = objc_autoreleasePoolPush(); OFZIPArchiveEntry *entry; OFZIPArchiveLocalFileHeader *localFileHeader; int64_t offset64; - if (_mode != OF_ZIP_ARCHIVE_MODE_READ) + if (_mode != OFZIPArchiveModeRead) @throw [OFInvalidArgumentException exception]; if ((entry = [_pathToEntryMap objectForKey: path]) == nil) @throw [OFOpenItemFailedException exceptionWithPath: path mode: @"r" @@ -479,12 +479,11 @@ OFMutableZIPArchiveEntry *entry; OFString *fileName; OFData *extraField; uint16_t fileNameLength, extraFieldLength; - if (_mode != OF_ZIP_ARCHIVE_MODE_WRITE && - _mode != OF_ZIP_ARCHIVE_MODE_APPEND) + if (_mode != OFZIPArchiveModeWrite && _mode != OFZIPArchiveModeAppend) @throw [OFInvalidArgumentException exception]; pool = objc_autoreleasePoolPush(); entry = [[entry_ mutableCopy] autorelease]; @@ -492,12 +491,11 @@ @throw [OFOpenItemFailedException exceptionWithPath: entry.fileName mode: @"w" errNo: EEXIST]; - if (entry.compressionMethod != - OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_NONE) + if (entry.compressionMethod != OFZIPArchiveEntryCompressionMethodNone) @throw [OFNotImplementedException exceptionWithSelector: _cmd object: self]; [self of_closeLastReturnedStream]; @@ -533,12 +531,11 @@ offsetAdd += 4 + (5 * 2) + (3 * 4) + (2 * 2); [_stream writeString: fileName]; offsetAdd += fileNameLength; - [_stream writeLittleEndianInt16: - OF_ZIP_ARCHIVE_ENTRY_EXTRA_FIELD_ZIP64]; + [_stream writeLittleEndianInt16: OFZIPArchiveEntryExtraFieldTagZIP64]; [_stream writeLittleEndianInt16: 16]; /* We use the data descriptor */ [_stream writeLittleEndianInt64: 0]; [_stream writeLittleEndianInt64: 0]; offsetAdd += (2 * 2) + (2 * 8); @@ -615,12 +612,11 @@ if (_stream == nil) @throw [OFNotOpenException exceptionWithObject: self]; [self of_closeLastReturnedStream]; - if (_mode == OF_ZIP_ARCHIVE_MODE_WRITE || - _mode == OF_ZIP_ARCHIVE_MODE_APPEND) + if (_mode == OFZIPArchiveModeWrite || _mode == OFZIPArchiveModeAppend) [self of_writeCentralDirectory]; [_stream release]; _stream = nil; } @@ -659,24 +655,24 @@ encoding: encoding] copy]; if (extraFieldLength > 0) extraField = [[[stream readDataWithCount: extraFieldLength] mutableCopy] autorelease]; - ZIP64Index = of_zip_archive_entry_extra_field_find(extraField, - OF_ZIP_ARCHIVE_ENTRY_EXTRA_FIELD_ZIP64, &ZIP64Size); + ZIP64Index = OFZIPArchiveEntryExtraFieldFind(extraField, + OFZIPArchiveEntryExtraFieldTagZIP64, &ZIP64Size); if (ZIP64Index != OFNotFound) { const uint8_t *ZIP64 = [extraField itemAtIndex: ZIP64Index]; OFRange range = OFRangeMake(ZIP64Index - 4, ZIP64Size + 4); if (_uncompressedSize == 0xFFFFFFFF) - _uncompressedSize = of_zip_archive_read_field64( + _uncompressedSize = OFZIPArchiveReadField64( &ZIP64, &ZIP64Size); if (_compressedSize == 0xFFFFFFFF) - _compressedSize = of_zip_archive_read_field64( + _compressedSize = OFZIPArchiveReadField64( &ZIP64, &ZIP64Size); if (ZIP64Size > 0) @throw [OFInvalidFormatException exception]; @@ -733,18 +729,18 @@ @try { _stream = [stream retain]; switch (entry.compressionMethod) { - case OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_NONE: + case OFZIPArchiveEntryCompressionMethodNone: _decompressedStream = [stream retain]; break; - case OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_DEFLATE: + case OFZIPArchiveEntryCompressionMethodDeflate: _decompressedStream = [[OFInflateStream alloc] initWithStream: stream]; break; - case OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_DEFLATE64: + case OFZIPArchiveEntryCompressionMethodDeflate64: _decompressedStream = [[OFInflate64Stream alloc] initWithStream: stream]; break; default: @throw [OFNotImplementedException Index: src/OFZIPArchiveEntry.h ================================================================== --- src/OFZIPArchiveEntry.h +++ src/OFZIPArchiveEntry.h @@ -17,75 +17,79 @@ OF_ASSUME_NONNULL_BEGIN /** @file */ -enum { - OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_NONE = 0, - OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_SHRINK = 1, - OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_REDUCE_FACTOR_1 = 2, - OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_REDUCE_FACTOR_2 = 3, - OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_REDUCE_FACTOR_3 = 4, - OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_REDUCE_FACTOR_4 = 5, - OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_IMPLODE = 6, - OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_DEFLATE = 8, - OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_DEFLATE64 = 9, - OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_BZIP2 = 12, - OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_LZMA = 14, - OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_WAVPACK = 97, - OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_PPMD = 98 -}; +typedef enum OFZIPArchiveEntryCompressionMethod { + OFZIPArchiveEntryCompressionMethodNone = 0, + OFZIPArchiveEntryCompressionMethodShrink = 1, + OFZIPArchiveEntryCompressionMethodReduceFactor1 = 2, + OFZIPArchiveEntryCompressionMethodReduceFactor2 = 3, + OFZIPArchiveEntryCompressionMethodReduceFactor3 = 4, + OFZIPArchiveEntryCompressionMethodReduceFactor4 = 5, + OFZIPArchiveEntryCompressionMethodImplode = 6, + OFZIPArchiveEntryCompressionMethodDeflate = 8, + OFZIPArchiveEntryCompressionMethodDeflate64 = 9, + OFZIPArchiveEntryCompressionMethodBZIP2 = 12, + OFZIPArchiveEntryCompressionMethodLZMA = 14, + OFZIPArchiveEntryCompressionMethodWavPack = 97, + OFZIPArchiveEntryCompressionMethodPPMd = 98 +} OFZIPArchiveEntryCompressionMethod; /** * @brief Attribute compatibility part of ZIP versions. */ -enum of_zip_archive_entry_attribute_compatibility { +typedef enum OFZIPArchiveEntryAttributeCompatibility { /** MS-DOS and OS/2 */ - OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_MSDOS = 0, + OFZIPArchiveEntryAttributeCompatibilityMSDOS = 0, /** Amiga */ - OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_AMIGA = 1, + OFZIPArchiveEntryAttributeCompatibilityAmiga = 1, /** OpenVMS */ - OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_OPENVMS = 2, + OFZIPArchiveEntryAttributeCompatibilityOpenVMS = 2, /** UNIX */ - OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_UNIX = 3, + OFZIPArchiveEntryAttributeCompatibilityUNIX = 3, /** VM/CMS */ - OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_VM_CMS = 4, + OFZIPArchiveEntryAttributeCompatibilityVM_CMS = 4, /** Atari ST */ - OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_ATARI_ST = 5, + OFZIPArchiveEntryAttributeCompatibilityAtariST = 5, /** OS/2 HPFS */ - OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_OS2_HPFS = 6, + OFZIPArchiveEntryAttributeCompatibilityOS2HPFS = 6, /** Macintosh */ - OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_MACINTOSH = 7, + OFZIPArchiveEntryAttributeCompatibilityMacintosh = 7, /** Z-System */ - OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_Z_SYSTEM = 8, + OFZIPArchiveEntryAttributeCompatibilityZSystem = 8, /** CP/M */ - OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_CP_M = 9, + OFZIPArchiveEntryAttributeCompatibilityCPM = 9, /** Windows NTFS */ - OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_WINDOWS_NTFS = 10, + OFZIPArchiveEntryAttributeCompatibilityWindowsNTFS = 10, /** MVS (OS/390 - Z/OS) */ - OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_MVS = 11, + OFZIPArchiveEntryAttributeCompatibilityMVS = 11, /** VSE */ - OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_VSE = 12, + OFZIPArchiveEntryAttributeCompatibilityVSE = 12, /** Acorn RISC OS */ - OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_ACORN_RISC_OS = 13, + OFZIPArchiveEntryAttributeCompatibilityAcornRISCOS = 13, /** VFAT */ - OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_VFAT = 14, + OFZIPArchiveEntryAttributeCompatibilityVFAT = 14, /** Alternate MVS */ - OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_ALTERNATE_MVS = 15, + OFZIPArchiveEntryAttributeCompatibilityAlternateMVS = 15, /** BeOS */ - OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_BEOS = 16, + OFZIPArchiveEntryAttributeCompatibilityBeOS = 16, /** Tandem */ - OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_TANDEM = 17, + OFZIPArchiveEntryAttributeCompatibilityTandem = 17, /** OS/400 */ - OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_OS_400 = 18, + OFZIPArchiveEntryAttributeCompatibilityOS400 = 18, /** OS X (Darwin) */ - OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_OS_X = 19 -}; + OFZIPArchiveEntryAttributeCompatibilityOSX = 19 +} OFZIPArchiveEntryAttributeCompatibility; -enum { - OF_ZIP_ARCHIVE_ENTRY_EXTRA_FIELD_ZIP64 = 0x0001 -}; +/** + * @brief Tags for the extra field. + */ +typedef enum OFZIPArchiveEntryExtraFieldTag { + /** ZIP64 extra field tag */ + OFZIPArchiveEntryExtraFieldTagZIP64 = 0x0001 +} OFZIPArchiveEntryExtraFieldTag; @class OFString; @class OFData; @class OFFile; @class OFDate; @@ -96,12 +100,14 @@ * @brief A class which represents an entry in the central directory of a ZIP * archive. */ @interface OFZIPArchiveEntry: OFObject { - uint16_t _versionMadeBy, _minVersionNeeded, _generalPurposeBitFlag; - uint16_t _compressionMethod; + OFZIPArchiveEntryAttributeCompatibility _versionMadeBy; + OFZIPArchiveEntryAttributeCompatibility _minVersionNeeded; + uint16_t _generalPurposeBitFlag; + OFZIPArchiveEntryCompressionMethod _compressionMethod; uint16_t _lastModifiedFileTime, _lastModifiedFileDate; uint32_t _CRC32; uint64_t _compressedSize, _uncompressedSize; OFString *_fileName; OFData *_Nullable _extraField; @@ -134,22 +140,24 @@ /** * @brief The version which made the entry. * * The lower 8 bits are the ZIP specification version.@n * The upper 8 bits are the attribute compatibility. - * See @ref of_zip_archive_entry_attribute_compatibility. + * See @ref OFZIPArchiveEntryAttributeCompatibility. */ -@property (readonly, nonatomic) uint16_t versionMadeBy; +@property (readonly, nonatomic) + OFZIPArchiveEntryAttributeCompatibility versionMadeBy; /** * @brief The minimum version required to extract the file. * * The lower 8 bits are the ZIP specification version.@n * The upper 8 bits are the attribute compatibility. - * See @ref of_zip_archive_entry_attribute_compatibility. + * See @ref OFZIPArchiveEntryAttributeCompatibility. */ -@property (readonly, nonatomic) uint16_t minVersionNeeded; +@property (readonly, nonatomic) + OFZIPArchiveEntryAttributeCompatibility minVersionNeeded; /** * @brief The last modification date of the entry's file. * * @note Due to limitations of the ZIP format, this has only 2 second precision. @@ -158,19 +166,20 @@ /** * @brief The compression method of the entry. * * Supported values are: - * Value | Description - * --------------------------------------------------|--------------- - * OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_NONE | No compression - * OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_DEFLATE | Deflate - * OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_DEFLATE64 | Deflate64 + * Value | Description + * --------------------------------------------|--------------- + * OFZIPArchiveEntryCompressionMethodNone | No compression + * OFZIPArchiveEntryCompressionMethodDeflate | Deflate + * OFZIPArchiveEntryCompressionMethodDeflate64 | Deflate64 * * Other values may be returned, but the file cannot be extracted then. */ -@property (readonly, nonatomic) uint16_t compressionMethod; +@property (readonly, nonatomic) + OFZIPArchiveEntryCompressionMethod compressionMethod; /** * @brief The compressed size of the entry's file. */ @property (readonly, nonatomic) uint64_t compressedSize; @@ -227,21 +236,21 @@ * @brief Converts the ZIP entry version to a string. * * @param version The ZIP entry version to convert to a string * @return The ZIP entry version as a string */ -extern OFString *of_zip_archive_entry_version_to_string(uint16_t version); +extern OFString *OFZIPArchiveEntryVersionToString(uint16_t version); /** * @brief Convers the ZIP entry compression method to a string. * * @param compressionMethod The ZIP entry compression method to convert to a * string * @return The ZIP entry compression method as a string */ -extern OFString *of_zip_archive_entry_compression_method_to_string( - uint16_t compressionMethod); +extern OFString *OFZIPArchiveEntryCompressionMethodName( + OFZIPArchiveEntryCompressionMethod compressionMethod); /** * @brief Gets a pointer to and the size of the extensible data field with the * specified tag. * @@ -250,14 +259,14 @@ * @param tag The tag to look for * @param size A pointer to an uint16_t that should be set to the size * @return The index at which the extra field content starts in the OFData, or * `OFNotFound` */ -extern size_t of_zip_archive_entry_extra_field_find(OFData *extraField, - uint16_t tag, uint16_t *size); +extern size_t OFZIPArchiveEntryExtraFieldFind(OFData *extraField, + OFZIPArchiveEntryExtraFieldTag tag, uint16_t *size); #ifdef __cplusplus } #endif OF_ASSUME_NONNULL_END #import "OFMutableZIPArchiveEntry.h" Index: src/OFZIPArchiveEntry.m ================================================================== --- src/OFZIPArchiveEntry.m +++ src/OFZIPArchiveEntry.m @@ -24,77 +24,77 @@ #import "OFInvalidArgumentException.h" #import "OFInvalidFormatException.h" #import "OFOutOfRangeException.h" -extern uint32_t of_zip_archive_read_field32(const uint8_t **, uint16_t *); -extern uint64_t of_zip_archive_read_field64(const uint8_t **, uint16_t *); +extern uint32_t OFZIPArchiveReadField32(const uint8_t **, uint16_t *); +extern uint64_t OFZIPArchiveReadField64(const uint8_t **, uint16_t *); OFString * -of_zip_archive_entry_version_to_string(uint16_t version) +OFZIPArchiveEntryVersionToString(uint16_t version) { const char *attrCompat = NULL; switch (version >> 8) { - case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_MSDOS: + case OFZIPArchiveEntryAttributeCompatibilityMSDOS: attrCompat = "MS-DOS or OS/2"; break; - case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_AMIGA: + case OFZIPArchiveEntryAttributeCompatibilityAmiga: attrCompat = "Amiga"; break; - case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_OPENVMS: + case OFZIPArchiveEntryAttributeCompatibilityOpenVMS: attrCompat = "OpenVMS"; break; - case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_UNIX: + case OFZIPArchiveEntryAttributeCompatibilityUNIX: attrCompat = "UNIX"; break; - case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_VM_CMS: + case OFZIPArchiveEntryAttributeCompatibilityVM_CMS: attrCompat = "VM/CMS"; break; - case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_ATARI_ST: + case OFZIPArchiveEntryAttributeCompatibilityAtariST: attrCompat = "Atari ST"; break; - case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_OS2_HPFS: + case OFZIPArchiveEntryAttributeCompatibilityOS2HPFS: attrCompat = "OS/2 HPFS"; break; - case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_MACINTOSH: + case OFZIPArchiveEntryAttributeCompatibilityMacintosh: attrCompat = "Macintosh"; break; - case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_Z_SYSTEM: + case OFZIPArchiveEntryAttributeCompatibilityZSystem: attrCompat = "Z-System"; break; - case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_CP_M: + case OFZIPArchiveEntryAttributeCompatibilityCPM: attrCompat = "CP/M"; break; - case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_WINDOWS_NTFS: + case OFZIPArchiveEntryAttributeCompatibilityWindowsNTFS: attrCompat = "Windows NTFS"; break; - case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_MVS: + case OFZIPArchiveEntryAttributeCompatibilityMVS: attrCompat = "MVS (OS/390 - Z/OS)"; break; - case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_VSE: + case OFZIPArchiveEntryAttributeCompatibilityVSE: attrCompat = "VSE"; break; - case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_ACORN_RISC_OS: + case OFZIPArchiveEntryAttributeCompatibilityAcornRISCOS: attrCompat = "Acorn RISC OS"; break; - case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_VFAT: + case OFZIPArchiveEntryAttributeCompatibilityVFAT: attrCompat = "VFAT"; break; - case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_ALTERNATE_MVS: + case OFZIPArchiveEntryAttributeCompatibilityAlternateMVS: attrCompat = "Alternate MVS"; break; - case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_BEOS: + case OFZIPArchiveEntryAttributeCompatibilityBeOS: attrCompat = "BeOS"; break; - case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_TANDEM: + case OFZIPArchiveEntryAttributeCompatibilityTandem: attrCompat = "Tandem"; break; - case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_OS_400: + case OFZIPArchiveEntryAttributeCompatibilityOS400: attrCompat = "OS/400"; break; - case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_OS_X: + case OFZIPArchiveEntryAttributeCompatibilityOSX: attrCompat = "OS X (Darwin)"; break; } if (attrCompat != NULL) @@ -106,47 +106,48 @@ @"%u.%u, unknown %02X", (version % 0xFF) / 10, (version & 0xFF) % 10, version >> 8]; } OFString * -of_zip_archive_entry_compression_method_to_string(uint16_t compressionMethod) +OFZIPArchiveEntryCompressionMethodName( + OFZIPArchiveEntryCompressionMethod compressionMethod) { switch (compressionMethod) { - case OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_NONE: + case OFZIPArchiveEntryCompressionMethodNone: return @"none"; - case OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_SHRINK: + case OFZIPArchiveEntryCompressionMethodShrink: return @"Shrink"; - case OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_REDUCE_FACTOR_1: + case OFZIPArchiveEntryCompressionMethodReduceFactor1: return @"Reduce (factor 1)"; - case OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_REDUCE_FACTOR_2: + case OFZIPArchiveEntryCompressionMethodReduceFactor2: return @"Reduce (factor 2)"; - case OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_REDUCE_FACTOR_3: + case OFZIPArchiveEntryCompressionMethodReduceFactor3: return @"Reduce (factor 3)"; - case OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_REDUCE_FACTOR_4: + case OFZIPArchiveEntryCompressionMethodReduceFactor4: return @"Reduce (factor 4)"; - case OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_IMPLODE: + case OFZIPArchiveEntryCompressionMethodImplode: return @"Implode"; - case OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_DEFLATE: + case OFZIPArchiveEntryCompressionMethodDeflate: return @"Deflate"; - case OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_DEFLATE64: + case OFZIPArchiveEntryCompressionMethodDeflate64: return @"Deflate64"; - case OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_BZIP2: + case OFZIPArchiveEntryCompressionMethodBZIP2: return @"BZip2"; - case OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_LZMA: + case OFZIPArchiveEntryCompressionMethodLZMA: return @"LZMA"; - case OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_WAVPACK: + case OFZIPArchiveEntryCompressionMethodWavPack: return @"WavPack"; - case OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_PPMD: + case OFZIPArchiveEntryCompressionMethodPPMd: return @"PPMd"; default: return @"unknown"; } } size_t -of_zip_archive_entry_extra_field_find(OFData *extraField, uint16_t tag, - uint16_t *size) +OFZIPArchiveEntryExtraFieldFind(OFData *extraField, + OFZIPArchiveEntryExtraFieldTag tag, uint16_t *size) { const uint8_t *bytes = extraField.items; size_t count = extraField.count; for (size_t i = 0; i < count;) { @@ -248,31 +249,30 @@ if (fileCommentLength > 0) _fileComment = [[stream readStringWithLength: fileCommentLength encoding: encoding] copy]; - ZIP64Index = of_zip_archive_entry_extra_field_find(extraField, - OF_ZIP_ARCHIVE_ENTRY_EXTRA_FIELD_ZIP64, &ZIP64Size); + ZIP64Index = OFZIPArchiveEntryExtraFieldFind(extraField, + OFZIPArchiveEntryExtraFieldTagZIP64, &ZIP64Size); if (ZIP64Index != OFNotFound) { const uint8_t *ZIP64 = [extraField itemAtIndex: ZIP64Index]; OFRange range = OFRangeMake(ZIP64Index - 4, ZIP64Size + 4); if (_uncompressedSize == 0xFFFFFFFF) - _uncompressedSize = of_zip_archive_read_field64( + _uncompressedSize = OFZIPArchiveReadField64( &ZIP64, &ZIP64Size); if (_compressedSize == 0xFFFFFFFF) - _compressedSize = of_zip_archive_read_field64( + _compressedSize = OFZIPArchiveReadField64( &ZIP64, &ZIP64Size); if (_localFileHeaderOffset == 0xFFFFFFFF) _localFileHeaderOffset = - of_zip_archive_read_field64(&ZIP64, - &ZIP64Size); + OFZIPArchiveReadField64(&ZIP64, &ZIP64Size); if (_startDiskNumber == 0xFFFF) - _startDiskNumber = of_zip_archive_read_field32( + _startDiskNumber = OFZIPArchiveReadField32( &ZIP64, &ZIP64Size); if (ZIP64Size > 0 || _localFileHeaderOffset < 0) @throw [OFInvalidFormatException exception]; @@ -349,16 +349,16 @@ - (OFData *)extraField { return _extraField; } -- (uint16_t)versionMadeBy +- (OFZIPArchiveEntryAttributeCompatibility)versionMadeBy { return _versionMadeBy; } -- (uint16_t)minVersionNeeded +- (OFZIPArchiveEntryAttributeCompatibility)minVersionNeeded { return _minVersionNeeded; } - (OFDate *)modificationDate @@ -383,11 +383,11 @@ objc_autoreleasePoolPop(pool); return [date autorelease]; } -- (uint16_t)compressionMethod +- (OFZIPArchiveEntryCompressionMethod)compressionMethod { return _compressionMethod; } - (uint64_t)compressedSize @@ -432,12 +432,11 @@ - (OFString *)description { void *pool = objc_autoreleasePoolPush(); OFString *compressionMethod = - of_zip_archive_entry_compression_method_to_string( - _compressionMethod); + OFZIPArchiveEntryCompressionMethodName(_compressionMethod); OFString *ret = [OFString stringWithFormat: @"<%@:\n" @"\tFile name = %@\n" @"\tFile comment = %@\n" @"\tGeneral purpose bit flag = %u\n" @@ -488,11 +487,11 @@ size += (4 + (6 * 2) + (3 * 4) + (5 * 2) + (2 * 4)); [stream writeString: _fileName]; size += (uint64_t)_fileName.UTF8StringLength; - [stream writeLittleEndianInt16: OF_ZIP_ARCHIVE_ENTRY_EXTRA_FIELD_ZIP64]; + [stream writeLittleEndianInt16: OFZIPArchiveEntryExtraFieldTagZIP64]; [stream writeLittleEndianInt16: 28]; [stream writeLittleEndianInt64: _uncompressedSize]; [stream writeLittleEndianInt64: _compressedSize]; [stream writeLittleEndianInt64: _localFileHeaderOffset]; [stream writeLittleEndianInt32: _startDiskNumber]; Index: utils/ofarc/ZIPArchive.m ================================================================== --- utils/ofarc/ZIPArchive.m +++ utils/ofarc/ZIPArchive.m @@ -39,11 +39,11 @@ static void setPermissions(OFString *path, OFZIPArchiveEntry *entry) { #ifdef OF_FILE_MANAGER_SUPPORTS_PERMISSIONS if ((entry.versionMadeBy >> 8) == - OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_UNIX) { + OFZIPArchiveEntryAttributeCompatibilityUNIX) { OFNumber *mode = [OFNumber numberWithUnsignedShort: (entry.versionSpecificAttributes >> 16) & 0777]; OFFileAttributes attributes = [OFDictionary dictionaryWithObject: mode forKey: OFFilePOSIXPermissions]; @@ -123,11 +123,11 @@ entry.compressedSize]; OFString *uncompressedSize = [OFString stringWithFormat: @"%" PRIu64, entry.uncompressedSize]; OFString *compressionMethod = - of_zip_archive_entry_compression_method_to_string( + OFZIPArchiveEntryCompressionMethodName( entry.compressionMethod); OFString *CRC32 = [OFString stringWithFormat: @"%08" PRIX32, entry.CRC32]; OFString *modificationDate = [entry.modificationDate localDateStringWithFormat: @"%Y-%m-%d %H:%M:%S"]; @@ -169,28 +169,29 @@ @"Modification date: %[date]", @"date", modificationDate)]; if (app->_outputLevel >= 2) { uint16_t versionMadeBy = entry.versionMadeBy; + OFZIPArchiveEntryAttributeCompatibility UNIX = + OFZIPArchiveEntryAttributeCompatibilityUNIX; [of_stdout writeString: @"\t"]; [of_stdout writeLine: OF_LOCALIZED( @"list_version_made_by", @"Version made by: %[version]", @"version", - of_zip_archive_entry_version_to_string( + OFZIPArchiveEntryVersionToString( versionMadeBy))]; [of_stdout writeString: @"\t"]; [of_stdout writeLine: OF_LOCALIZED( @"list_min_version_needed", @"Minimum version needed: %[version]", @"version", - of_zip_archive_entry_version_to_string( + OFZIPArchiveEntryVersionToString( entry.minVersionNeeded))]; - if ((versionMadeBy >> 8) == - OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_UNIX) { + if ((versionMadeBy >> 8) == UNIX) { uint32_t mode = entry .versionSpecificAttributes >> 16; OFString *modeString = [OFString stringWithFormat: @"%06o", mode]; [of_stdout writeString: @"\t"]; @@ -443,11 +444,11 @@ entry.compressedSize = (int64_t)size; entry.uncompressedSize = (int64_t)size; entry.compressionMethod = - OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_NONE; + OFZIPArchiveEntryCompressionMethodNone; entry.modificationDate = attributes.fileModificationDate; [entry makeImmutable]; output = [_archive streamForWritingEntry: entry];