--- 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