@@ -18,10 +18,31 @@ @class OFInflateStream; OF_ASSUME_NONNULL_BEGIN +/** + * @brief The operating system on which compressed the data. + */ +typedef enum OFGZIPStreamOperatingSystem { + OFGZIPStreamOperatingSystemFAT = 0, + OFGZIPStreamOperatingSystemAmiga = 1, + OFGZIPStreamOperatingSystemVMS = 2, + OFGZIPStreamOperatingSystemUNIX = 3, + OFGZIPStreamOperatingSystemVM_CMS = 4, + OFGZIPStreamOperatingSystemAtariTOS = 5, + OFGZIPStreamOperatingSystemHPFS = 6, + OFGZIPStreamOperatingSystemMacintosh = 7, + OFGZIPStreamOperatingSystemZSystem = 8, + OFGZIPStreamOperatingSystemCP_M = 9, + OFGZIPStreamOperatingSystemTOPS20 = 10, + OFGZIPStreamOperatingSystemNTFS = 11, + OFGZIPStreamOperatingSystemQDO = 12, + OFGZIPStreamOperatingSystemAcornRISCOS = 13, + OFGZIPStreamOperatingSystemUnknown = 255 +} OFGZIPStreamOperatingSystem; + /** * @class OFGZIPStream OFGZIPStream.h ObjFW/OFGZIPStream.h * * @brief A class that handles GZIP compression and decompression transparently * for an underlying stream. @@ -29,52 +50,36 @@ OF_SUBCLASSING_RESTRICTED @interface OFGZIPStream: OFStream { OFStream *_stream; OFInflateStream *_Nullable _inflateStream; - enum of_gzip_stream_state { - OF_GZIP_STREAM_ID1, - OF_GZIP_STREAM_ID2, - OF_GZIP_STREAM_COMPRESSION_METHOD, - OF_GZIP_STREAM_FLAGS, - OF_GZIP_STREAM_MODIFICATION_TIME, - OF_GZIP_STREAM_EXTRA_FLAGS, - OF_GZIP_STREAM_OPERATING_SYSTEM, - OF_GZIP_STREAM_EXTRA_LENGTH, - OF_GZIP_STREAM_EXTRA, - OF_GZIP_STREAM_NAME, - OF_GZIP_STREAM_COMMENT, - OF_GZIP_STREAM_HEADER_CRC16, - OF_GZIP_STREAM_DATA, - OF_GZIP_STREAM_CRC32, - OF_GZIP_STREAM_UNCOMPRESSED_SIZE + enum { + OFGZIPStreamStateID1, + OFGZIPStreamStateID2, + OFGZIPStreamStateCompressionMethod, + OFGZIPStreamStateFlags, + OFGZIPStreamStateModificationDate, + OFGZIPStreamStateExtraFlags, + OFGZIPStreamStateOperatingSystem, + OFGZIPStreamStateExtraLength, + OFGZIPStreamStateExtra, + OFGZIPStreamStateName, + OFGZIPStreamStateComment, + OFGZIPStreamStateHeaderCRC16, + OFGZIPStreamStateData, + OFGZIPStreamStateCRC32, + OFGZIPStreamStateUncompressedSize } _state; - enum of_gzip_stream_flags { - OF_GZIP_STREAM_FLAG_TEXT = 0x01, - OF_GZIP_STREAM_FLAG_HEADER_CRC16 = 0x02, - OF_GZIP_STREAM_FLAG_EXTRA = 0x04, - OF_GZIP_STREAM_FLAG_NAME = 0x08, - OF_GZIP_STREAM_FLAG_COMMENT = 0x10 + enum { + OFGZIPStreamFlagText = 0x01, + OFGZIPStreamFlagHeaderCRC16 = 0x02, + OFGZIPStreamFlagExtra = 0x04, + OFGZIPStreamFlagName = 0x08, + OFGZIPStreamFlagComment = 0x10 } _flags; uint8_t _extraFlags; - enum of_gzip_stream_operating_system { - OF_GZIP_STREAM_OPERATING_SYSTEM_FAT = 0, - OF_GZIP_STREAM_OPERATING_SYSTEM_AMIGA = 1, - OF_GZIP_STREAM_OPERATING_SYSTEM_VMS = 2, - OF_GZIP_STREAM_OPERATING_SYSTEM_UNIX = 3, - OF_GZIP_STREAM_OPERATING_SYSTEM_VM_CMS = 4, - OF_GZIP_STREAM_OPERATING_SYSTEM_ATARI_TOS = 5, - OF_GZIP_STREAM_OPERATING_SYSTEM_HPFS = 6, - OF_GZIP_STREAM_OPERATING_SYSTEM_MACINTOSH = 7, - OF_GZIP_STREAM_OPERATING_SYSTEM_Z_SYSTEM = 8, - OF_GZIP_STREAM_OPERATING_SYSTEM_CP_M = 9, - OF_GZIP_STREAM_OPERATING_SYSTEM_TOPS_20 = 10, - OF_GZIP_STREAM_OPERATING_SYSTEM_NTFS = 11, - OF_GZIP_STREAM_OPERATING_SYSTEM_QDO = 12, - OF_GZIP_STREAM_OPERATING_SYSTEM_ACORN_RISC_OS = 13, - OF_GZIP_STREAM_OPERATING_SYSTEM_UNKNOWN = 255 - } _operatingSystemMadeOn; + OFGZIPStreamOperatingSystem _operatingSystemMadeOn; size_t _bytesRead; uint8_t _buffer[4]; OFDate *_Nullable _modificationDate; uint16_t _extraLength; uint32_t _CRC32, _uncompressedSize; @@ -85,11 +90,11 @@ * * This property is only guaranteed to be available once @ref atEndOfStream is * true. */ @property (readonly, nonatomic) - enum of_gzip_stream_operating_system operatingSystemMadeOn; + OFGZIPStreamOperatingSystem operatingSystemMadeOn; /** * @brief The modification date of the original file. * * This property is only guaranteed to be available once @ref atEndOfStream is