Chris Muller uploaded a new version of Compression to project The Trunk: http://source.squeak.org/trunk/Compression-cmm.48.mcz
==================== Summary ====================
Name: Compression-cmm.48 Author: cmm Time: 1 September 2015, 3:43:17.149 pm UUID: 833287cb-44f0-42e8-9419-bd8cde39dd0a Ancestors: Compression-dtl.47
Allow zipping of directories with thousands of files, without creating thousands of instances of simultaneously open FileStream's in the image.
=============== Diff against Compression-dtl.47 ===============
Item was added: + ----- Method: ZipArchiveMember>>openStreamWhile: (in category 'private-writing') ----- + openStreamWhile: aBlock + ^ aBlock value!
Item was changed: ----- Method: ZipArchiveMember>>writeTo: (in category 'writing') ----- + writeTo: aStream + self openStreamWhile: + [ self rewindData. + writeLocalHeaderRelativeOffset := aStream position. + self + writeLocalFileHeaderTo: aStream ; + writeDataTo: aStream ; + refreshLocalFileHeaderTo: aStream ]! - writeTo: aStream - self rewindData. - writeLocalHeaderRelativeOffset := aStream position. - self writeLocalFileHeaderTo: aStream. - self writeDataTo: aStream. - self refreshLocalFileHeaderTo: aStream.!
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 added: + ----- Method: ZipNewFileMember>>openStreamWhile: (in category 'private-writing') ----- + openStreamWhile: aBlock + stream open. + ^ aBlock ensure: [ stream close ]!
packages@lists.squeakfoundation.org