A new version of Compression was added to project The Inbox: http://source.squeak.org/inbox/Compression-jdr.48.mcz
==================== Summary ====================
Name: Compression-jdr.48 Author: jdr Time: 31 December 2015, 6:13:59.974 pm UUID: 7798d7c6-8f39-45cc-a3cc-e0887130a62d Ancestors: Compression-dtl.47
It solves a problem compressing a zipfile with many files (> 200), previously all files to be processed remained open, now only the file being processed is opened.
=============== Diff against Compression-dtl.47 ===============
Item was changed: ----- Method: ZipArchive>>writeTo: (in category 'writing') ----- writeTo: stream stream binary. members do: [ :member | member writeTo: stream. member endRead. + member close ]. writeCentralDirectoryOffset := stream position. self writeCentralDirectoryTo: stream. !
Item was changed: ----- Method: ZipArchive>>writeTo:prepending: (in category 'writing') ----- writeTo: stream prepending: aString stream binary. stream nextPutAll: aString. members do: [ :member | member writeTo: stream. member endRead. + member close ]. writeCentralDirectoryOffset := stream position. self writeCentralDirectoryTo: stream. !
Item was changed: ----- Method: ZipNewFileMember>>from: (in category 'initialization') ----- from: aFileName | entry | compressionMethod := CompressionStored. "Now get the size, attributes, and timestamps, and see if the file exists" stream := StandardFileStream readOnlyFileNamed: aFileName. self localFileName: (externalFileName := stream name). entry := stream directoryEntry. compressedSize := uncompressedSize := entry fileSize. desiredCompressionMethod := compressedSize > 0 ifTrue: [ CompressionDeflated ] ifFalse: [ CompressionStored ]. + self setLastModFileDateTimeFrom: entry modificationTime. + stream close - self setLastModFileDateTimeFrom: entry modificationTime !
Item was changed: ----- Method: ZipNewFileMember>>rewindData (in category 'private-writing') ----- rewindData super rewindData. + stream ensureOpen. readDataRemaining := stream size. stream position: 0.!
squeak-dev@lists.squeakfoundation.org