'From TeaSqueak3.2 of 19 September 2002 [latest update: #401] on 18 May 2003 at 7:02:12 pm'! "Change Set: GZipConstantsPool Date: 18 May 2003 Author: Andreas Raab Rewrite GZipConstants." Smalltalk at: #GZipConstantsOBSOLETEPOOL put: GZipConstants. Smalltalk removeKey: #GZipConstants.! SharedPool subclass: #GZipConstants instanceVariableNames: '' classVariableNames: 'GZipAsciiFlag GZipCommentFlag GZipContinueFlag GZipDeflated GZipEncryptFlag GZipExtraField GZipMagic GZipNameFlag GZipReservedFlags ' poolDictionaries: '' category: 'System-Compression'! !GZipConstants class methodsFor: 'pool initialization' stamp: 'ar 5/18/2003 19:00'! gzipMagic ^GZipMagic! ! !GZipConstants class methodsFor: 'pool initialization' stamp: 'ar 5/18/2003 19:00'! initialize "GZipConstants initialize" GZipMagic := 16r8B1F. "GZIP magic number" GZipDeflated := 8. "Compression method" GZipAsciiFlag := 16r01. "Contents is ASCII" GZipContinueFlag := 16r02. "Part of a multi-part archive" GZipExtraField := 16r04. "Archive has extra fields" GZipNameFlag := 16r08. "Archive has original file name" GZipCommentFlag := 16r10. "Archive has comment" GZipEncryptFlag := 16r20. "Archive is encrypted" GZipReservedFlags := 16rC0. "Reserved" ! ! !ReadWriteStream methodsFor: 'converting' stamp: 'ar 5/18/2003 19:00'! asUnZippedStream | isGZip outputStream first strm archive which | "Decompress this file if needed, and return a stream. No file is written. File extension may be .gz or anything else. Also works on archives (.zip, .gZip)." strm _ self binary. strm isZipArchive ifTrue: [ archive _ ZipArchive new readFrom: strm. which _ archive members detect: [:any | any fileName asLowercase endsWith: '.ttf'] ifNone: [nil]. which ifNil: [archive close. ^ self error: 'Can''t find .ttf file in archive']. strm _ which contentStream. archive close]. first _ strm next. isGZip _ (strm next * 256 + first) = (GZipConstants gzipMagic). strm skip: -2. isGZip ifTrue: [outputStream _ (RWBinaryOrTextStream with: (GZipReadStream on: strm) upToEnd) reset. strm close] ifFalse: [outputStream _ strm]. ^ outputStream! ! GZipReadStream class removeSelector: #initialize! GZipConstants initialize! "Postscript: Rebind users of GZipConstants" Smalltalk allClassesDo:[:aClass| (aClass sharedPools includes: GZipConstantsOBSOLETEPOOL) ifTrue:[ Compiler evaluate: (aClass definition copyReplaceAll: 'OBSOLETEPOOL' with: ''). ]. ]. Smalltalk removeKey: #GZipConstantsOBSOLETEPOOL.!