[FIX] RelativeZipExtractFix-nk

Doug Way dway at riskmetrics.com
Sat Dec 14 03:49:23 UTC 2002


On Friday, December 13, 2002, at 01:10 PM, ned at bike-nomad.com wrote:

> from preamble:
>
> "Change Set:		RelativeZipExtractFix-nk
> Date:			13 December 2002
> Author:			Ned Konz
> Version:			3.4b
>
> This ensures that zip extraction relative to a given directory works
> properly, and should eliminate the infinite recursion noted on the Mac.
>
> It lacks AcornFileDirectory>>relativeNameFor: ; this should be added if
> necessary before adding to the update stream.

I did some more testing of this changeset & ArchivesFixes2.  Things 
still don't seem to work on Windows, but Mac OS X is happy.  Here are my 
results...

Testing in vanilla 3.4beta-5147 (internal updates), without SqueakMap 
loaded, on Windows 2000:

- #binary error below happens when using the FileList "open zip" once to 
open Connectors1.6.sar, then closing the archive viewer, then doing 
"open zip" again on the same file.  (loading ArchiveFixes2-nk and 
RelativeZipExtractFix-nk doesn't make a difference)  See first stack 
appended below.  (This problem does not happen on Mac OS X, only Win2K.)

- Message Not Understood "#extractInDirectory:" when trying to Extract 
All of Connectors1.6.sar (into the default Squeak directory), without 
loading either of the fixes first.  Same on Mac OS X.

- Error "Fully qualified path expected" when trying to Extract All of 
Connectors1.6.sar, after installing ArchiveFixes2-nk.  (loading 
RelativeZipExtractFix-nk didn't make a difference)  See second stack 
appended below.  (Win2K only.)

- On Mac OS X, with ArchiveFixes2-nk and RelativeZipExtractFix-nk filed 
in, extracting the Connectors SAR is successful.



-------------------- #binary error:

13 December 2002 6:08:42 pm

VM: Win32 - Squeak3.3alpha of 24 January 2002 [latest update: #4967]
Image: Squeak3.4beta [latest update: #5147]

UndefinedObject(Object)>>doesNotUnderstand:
	Receiver: nil
	Arguments and temporary variables:
		aMessage: 	a Message with selector: #binary and arguments: #()
	Receiver's instance variables:
nil

ZipArchive>>readFrom:
	Receiver: a ZipArchive
	Arguments and temporary variables:
		aStreamOrFileName: 	'C:\Squeak 3.2\Connectors1.6.sar'
		stream: 	nil
		name: 	'C:\Squeak 3.2\Connectors1.6.sar'
		eocdPosition: 	nil
	Receiver's instance variables:
		members: 	an OrderedCollection()
		centralDirectorySize: 	nil
		centralDirectoryOffsetWRTStartingDiskNumber: 	nil
		zipFileComment: 	''
		writeCentralDirectoryOffset: 	0
		writeEOCDOffset: 	0

ArchiveViewer>>fileName:
	Receiver: an ArchiveViewer(1371)
	Arguments and temporary variables:
		aString: 	'C:\Squeak 3.2\Connectors1.6.sar'
	Receiver's instance variables:
		bounds: 	0 at 0 corner: 546 at 230
		owner: 	nil
		submorphs: 	#(an AlignmentMorph(1249) an 
AlignmentMorph(2969) an AlignmentMorph(...etc...
		fullBounds: 	nil
		color: 	Color white
		extension: 	a MorphExtension (3879) [eventHandler = an 
EventHandler; mouseEnterS...etc...
		borderWidth: 	2
		borderColor: 	#raised
		model: 	nil
		slotName: 	nil
		open: 	false
		labelString: 	'Ned''s Zip Viewer'
		stripes: 	#(a RectangleMorph(3636) a RectangleMorph(1965))
		label: 	a StringMorph(1055)'Ned''s Zip Viewer'
		closeBox: 	an IconicButton(2427)
		collapseBox: 	an IconicButton(2859)
		activeOnlyOnTop: 	true
		paneMorphs: 	#(a PluggableTextMorph(2494) a 
PluggableListMorph(259) an Alignment...etc...
		paneRects: 	nil
		collapsedFrame: 	nil
		fullFrame: 	0 at 0 corner: 546 at 230
		isCollapsed: 	false
		menuBox: 	an IconicButton(2322)
		mustNotClose: 	false
		labelWidgetAllowance: 	75
		updatablePanes: 	#()
		allowReframeHandles: 	true
		labelArea: 	an AlignmentMorph(1249)
		expandBox: 	an IconicButton(708)
		archive: 	nil
		fileName: 	nil
		memberIndex: 	0
		viewAllContents: 	false

ArchiveViewer class>>openOn:
	Receiver: ArchiveViewer
	Arguments and temporary variables:
		aFileName: 	'C:\Squeak 3.2\Connectors1.6.sar'
		newMe: 	an ArchiveViewer(1371)
	Receiver's instance variables:
		superclass: 	SystemWindow
		methodDict: 	a MethodDictionary(#addDirectory->a 
CompiledMethod (1316) #addMembe...etc...
		format: 	196
		instanceVariables: 	#('archive' 'fileName' 'memberIndex' 
'viewAllContents')
		organization: 	('member operations' addDirectory addMember 
addMemberFromClipboar...etc...
		subclasses: 	nil
		name: 	#ArchiveViewer
		classPool: 	nil
		sharedPools: 	nil
		environment: 	a SystemDictionary(lots of globals)
		category: 	nil
		prototype: 	nil


--- The full stack ---
UndefinedObject(Object)>>doesNotUnderstand:
ZipArchive>>readFrom:
ArchiveViewer>>fileName:
ArchiveViewer class>>openOn:
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SimpleServiceEntry>>performServiceFor:
PluggableButtonMorph>>performAction
[] in PluggableButtonMorph>>mouseUp:
Array(SequenceableCollection)>>do:
PluggableButtonMorph>>mouseUp:
PluggableButtonMorph(Morph)>>handleMouseUp:
MouseButtonEvent>>sentTo:
PluggableButtonMorph(Morph)>>handleEvent:
PluggableButtonMorph(Morph)>>handleFocusEvent:
[] in HandMorph>>sendFocusEvent:to:clear:
PasteUpMorph>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendMouseEvent:
HandMorph>>handleEvent:
HandMorph>>processEvents
[] in WorldState>>doOneCycleNowFor:
Array(SequenceableCollection)>>do:
WorldState>>handsDo:
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
PasteUpMorph>>doOneCycle
[] in Project class>>spawnNewProcess
[] in BlockContext>>newProcess










-------------------- "Fully qualified path expected" error:

13 December 2002 7:47:45 pm

VM: Win32 - Squeak3.3alpha of 24 January 2002 [latest update: #4967]
Image: Squeak3.4beta [latest update: #5147]

DosFileDirectory(Object)>>error:
	Receiver: DosFileDirectory on nil
	Arguments and temporary variables:
		aString: 	'Fully qualified path expected'
	Receiver's instance variables:
		pathName: 	nil

DosFileDirectory>>setPathName:
	Receiver: DosFileDirectory on nil
	Arguments and temporary variables:
		pathString: 	'icons'
	Receiver's instance variables:
		pathName: 	nil

FileDirectory class>>on:
	Receiver: FileDirectory
	Arguments and temporary variables:
		pathString: 	'icons'
		pathName: 	'icons'
	Receiver's instance variables:
		superclass: 	Object
		methodDict: 	a MethodDictionary(#acceptsUploads->a 
CompiledMethod (2796) #assure...etc...
		format: 	132
		instanceVariables: 	#('pathName')
		organization: 	('path access' fullPathFor: on: pathName 
pathNameDelimiter pathPa...etc...
		subclasses: 	#(UnixFileDirectory AcornFileDirectory 
MacFileDirectory DosFileDire...etc...
		name: 	#FileDirectory
		classPool: 	a Dictionary(#DefaultDirectory->DosFileDirectory 
on 'C:\Squeak 3.2' ...etc...
		sharedPools: 	nil
		environment: 	a SystemDictionary(lots of globals)
		category: 	nil

[] in DosFileDirectory(FileDirectory)>>fileExists:
	Arguments and temporary variables:
		filenameOrPath: 	'icons\broom.gif'
		fName: 	'broom.gif'
		dir: 	nil
		filePath: 	'icons'
		name: 	'broom.gif'


--- The full stack ---
DosFileDirectory(Object)>>error:
DosFileDirectory>>setPathName:
FileDirectory class>>on:
[] in DosFileDirectory(FileDirectory)>>fileExists:
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileDirectory class>>splitName:to:
DosFileDirectory(FileDirectory)>>fileExists:
[] in ArchiveViewer>>extractAllPossibleInDirectory:
OrderedCollection>>do:
ArchiveViewer>>extractAllPossibleInDirectory:
ArchiveViewer>>extractAll
PluggableButtonMorph>>performAction
[] in PluggableButtonMorph>>mouseUp:
Array(SequenceableCollection)>>do:
PluggableButtonMorph>>mouseUp:
PluggableButtonMorph(Morph)>>handleMouseUp:
MouseButtonEvent>>sentTo:
PluggableButtonMorph(Morph)>>handleEvent:
PluggableButtonMorph(Morph)>>handleFocusEvent:
[] in HandMorph>>sendFocusEvent:to:clear:
PasteUpMorph>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendMouseEvent:
HandMorph>>handleEvent:
HandMorph>>processEvents
[] in WorldState>>doOneCycleNowFor:
Array(SequenceableCollection)>>do:
WorldState>>handsDo:
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
PasteUpMorph>>doOneCycle
[] in Project class>>DoIt
[] in BlockContext>>newProcess




More information about the Squeak-dev mailing list