ZipStream.st
changeset 2019 4a33a6715a51
parent 2006 0ad76801137e
child 2175 f66d96d2c015
--- a/ZipStream.st	Tue Jun 24 15:32:55 2008 +0200
+++ b/ZipStream.st	Mon Jun 30 11:07:57 2008 +0200
@@ -679,68 +679,80 @@
 
 openWithMode:aMode on:aStream
     "open stream and write or check gzip header"
+
     super openWithMode:aMode on:aStream.
+
     self isReadable ifTrue:[
         "Check for the gzip magic id"
-        |flags|
+        self readHeader
+    ] ifFalse:[
+        "write the gzip magic id"
+        self writeHeader
+    ].
+!
 
-        GZ_MAGIC_ID do:[:b|
-            onStream nextByte ~~ b ifTrue:[ self zerror:'version error' ]
-        ].
-
-        onStream nextByte ~~ Z_DEFLATED ifTrue:[
-            self zerror:'invalid method (not deflated)'
-        ].
+readHeader
+    "Check for the gzip magic id"
+    |flags|
 
-        flags := onStream nextByte.
-        (flags bitAnd:HEAD_RESERVED) ~~ 0 ifTrue:[
-            self zerror:'wrong data format'
-        ].
+    GZ_MAGIC_ID do:[:b|
+        onStream nextByte ~~ b ifTrue:[ self zerror:'version error' ]
+    ].
+
+    onStream nextByte ~~ Z_DEFLATED ifTrue:[
+        self zerror:'invalid method (not deflated)'
+    ].
 
-        "discard time, xflags and OS code"
-        onStream skip:6.
+    flags := onStream nextByte.
+    (flags bitAnd:HEAD_RESERVED) ~~ 0 ifTrue:[
+        self zerror:'wrong data format'
+    ].
 
-        (flags bitAnd:HEAD_EXTRA_FIELD) ~~ 0 ifTrue:[|len|
-            "skip the extra field"
-            len := onStream nextByte + (onStream nextByte bitShift:8).
-            len timesRepeat:[ onStream nextByte ].
-        ].
+    "discard time, xflags and OS code"
+    onStream skip:6.
 
-        (flags bitAnd:HEAD_ORIG_NAME) ~~ 0 ifTrue:[|b|
-            "skip the original file name"
-            [ (b := onStream nextByte) ~~ 0 ] whileTrue.
-        ].
+    (flags bitAnd:HEAD_EXTRA_FIELD) ~~ 0 ifTrue:[|len|
+        "skip the extra field"
+        len := onStream nextByte + (onStream nextByte bitShift:8).
+        len timesRepeat:[ onStream nextByte ].
+    ].
 
-        (flags bitAnd:HEAD_CRC) ~~ 0 ifTrue:[
-            "skip the header crc"
-            onStream skip:2.
-        ].
-    ] ifFalse:[
-        "write the gzip magic id
-        "
-        GZ_MAGIC_ID do:[:b| onStream nextPutByte:b ].
+    (flags bitAnd:HEAD_ORIG_NAME) ~~ 0 ifTrue:[|b|
+        "skip the original file name"
+        [ (b := onStream nextByte) ~~ 0 ] whileTrue.
+    ].
+
+    (flags bitAnd:HEAD_CRC) ~~ 0 ifTrue:[
+        "skip the header crc"
+        onStream skip:2.
+    ].
+!
 
-        "write the method"
-        onStream nextPutByte:Z_DEFLATED.
+writeHeader
+    "write the gzip magic id"
 
-        "write the flags"
-        onStream nextPutByte:0.
+    GZ_MAGIC_ID do:[:b| onStream nextPutByte:b ].
+
+    "write the method"
+    onStream nextPutByte:Z_DEFLATED.
 
-        "write time"
-        4 timesRepeat:[ onStream nextPutByte:0 ].
+    "write the flags"
+    onStream nextPutByte:0.
+
+    "write time"
+    4 timesRepeat:[ onStream nextPutByte:0 ].
 
-        "write xflags"
-        onStream nextPutByte:0.
+    "write xflags"
+    onStream nextPutByte:0.
 
-        "write OS code"
-        onStream nextPutByte:HEAD_OS_CODE.
-    ].
+    "write OS code"
+    onStream nextPutByte:HEAD_OS_CODE.
 ! !
 
 !ZipStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic2/ZipStream.st,v 1.29 2008-06-05 09:16:16 ab Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic2/ZipStream.st,v 1.30 2008-06-30 09:07:57 cg Exp $'
 ! !
 
 ZipStream initialize!