ZipArchive.st
changeset 625 ff3efe3db50b
parent 624 251f10395e0b
child 628 27102a6bd3f7
--- a/ZipArchive.st	Mon Mar 30 17:16:55 1998 +0200
+++ b/ZipArchive.st	Mon Mar 30 18:22:16 1998 +0200
@@ -146,15 +146,19 @@
     |zmemb rawContents|
 
     zmemb := self findMember:fileName.
+    zmemb isNil ifTrue:[^ nil].
+
+    self openFile.
     file position:(zmemb fileStart + 1).
     rawContents := file nextBytes:(zmemb compressed_size).
+    self closeFile.
     ^ self decode:rawContents method:(zmemb compression_method)
 
     "
      (ZipArchive oldFileNamed:'/usr/lib/java/lib/classes.zip') extract:'java/io/UTFDataFormatException.class'
     "
 
-    "Modified: / 29.3.1998 / 20:12:12 / cg"
+    "Modified: / 30.3.1998 / 18:20:08 / cg"
 !
 
 members
@@ -179,15 +183,23 @@
 
 !ZipArchive methodsFor:'private'!
 
+closeFile
+    file close.
+    file := nil.
+
+    "Created: / 30.3.1998 / 18:18:10 / cg"
+!
+
 name:nm mode:m
-    archiveName := nm.
+    archiveName := nm asFilename name.
     mode := m.
 
     mode == #read ifTrue:[
-        file := nm asFilename readStream.
+        self openFile.
         self readDirectory.
+        self closeFile.
     ] ifFalse:[
-        file := nm asFilename writeStream
+        "/ self openFile.
     ]
 
     "
@@ -196,7 +208,20 @@
      (ZipArchive oldFileNamed:'/usr/lib/java/lib/classes.zip') extract:'java/io/UTFDataFormatException.class'
     "
 
-    "Modified: / 30.3.1998 / 17:12:20 / cg"
+    "Modified: / 30.3.1998 / 18:19:48 / cg"
+!
+
+openFile
+    file isNil ifTrue:[
+        mode == #read ifTrue:[
+            file := archiveName asFilename readStream binary.
+        ] ifFalse:[
+            file := archiveName asFilename writeStream binary
+        ]
+    ].
+
+    "Created: / 30.3.1998 / 18:18:48 / cg"
+    "Modified: / 30.3.1998 / 18:19:26 / cg"
 ! !
 
 !ZipArchive methodsFor:'private - decompression'!
@@ -294,10 +319,10 @@
     ].
 
     file position:(size - (ECREC_SIZE+4) + 1).
-    ((file next ~~ $P)
-    or:[file next ~~ $K
-    or:[file next ~~ (Character value:8r005)
-    or:[file next ~~ (Character value:8r006)]]]) ifTrue:[
+    ((file next ~~ ($P asciiValue))
+    or:[file next ~~ ($K asciiValue)
+    or:[file next ~~ 8r005
+    or:[file next ~~ 8r006]]]) ifTrue:[
         ^ ZipFileFormatErrorSignal raiseWith:'not a valid zipfile'.
     ].
 
@@ -325,7 +350,7 @@
         file nextBytes:filename_length into:(zipd name).
     ]
 
-    "Modified: / 30.3.1998 / 17:15:54 / cg"
+    "Modified: / 30.3.1998 / 18:02:06 / cg"
 !
 
 zipMembersDo:aBlock