[FIX] [IRC]IRC_assureLogDirExistence

danil a. osipchuk danil-home at tsnet.ru
Fri Oct 1 16:16:06 UTC 2004


>>/
/>/> Launching IRC in fresh squeak dir gives walkback - because there is no
/>/> irc-log directory structure yet.
/>/> This tiny fix forces IRCErrorLog class>> logStreamNamed: existsIn: to
/>/> create log directory if it doesn't exist.
/>/> <IRC_assureLogDirExistence.cs.gz>
/>>/
/
> I'm not seeing this error when I start up IRCe in a fresh squeak 
> directory.
>
> Could you supply more info please. Which version of IRCe, what version 
> of Squeak, how are you loading IRCe into the image, etc.
>
> Thanks
>
> Frank Caggiano

Hi, Frank
I used Squeak3.7-5989-full on unix VM on FreeBSD (World Menu -> Open -> IRC). When there is no irc folder in Squeak dir(just tested again by renaming it) I'm getting walkback (see attachment)

Danil

-------------- next part --------------
Unwind error during termination
1 October 2004 8:12:20 pm

VM: unix - a SmalltalkImage
Image: Squeak3.7 [latest update: #5989]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir /usr/home/danil/Squeak
Trusted Dir /usr/home/danil/Squeak/secure
Untrusted Dir /usr/home/danil/Squeak/untrusted

UndefinedObject(Object)>>doesNotUnderstand: #close
	Receiver: nil
	Arguments and temporary variables: 
		aMessage: 	close
	Receiver's instance variables: 
nil
[] in IRCErrorLog class>>log:named: {[fStream close]}
	Arguments and temporary variables: 
		aString: 	'Tracing turned OFF'
		logName: 	'TRACE'
		dir: 	UnixFileDirectory on '/usr/home/danil/Squeak/irc/errors'
		fName: 	'TRACE.txt'
		fStream: 	nil

MethodContext(ContextPart)>>resume:
	Receiver: BlockContext>>on:do:
	Arguments and temporary variables: 
		value: 	Project
		ctxt: 	BlockContext>>ensure:
		unwindBlock: 	[] in IRCErrorLog class>>log:named: {[fStream close]}
	Receiver's instance variables: 
		sender: 	nil
		pc: 	nil
		stackp: 	3
		method: 	a CompiledMethod (1017)
		receiverMap: 	nil
		receiver: 	[] in ContextPart class>>contextOn:do: {[chain := thisContext sender ...etc...

BlockContext>>ensure:
	Receiver: [] in IRCErrorLog class>>log:named: {[fStream := self logStreamNamed: fName existsIn: dir....etc...
	Arguments and temporary variables: 
		aBlock: 	nil
		returnValue: 	nil
		b: 	nil
	Receiver's instance variables: 
		sender: 	nil
		pc: 	nil
		stackp: 	0
		nargs: 	0
		startpc: 	50
		home: 	IRCErrorLog class>>log:named:


--- The full stack ---
UndefinedObject(Object)>>doesNotUnderstand: #close
[] in IRCErrorLog class>>log:named: {[fStream close]}
MethodContext(ContextPart)>>resume:
BlockContext>>ensure:
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IRCErrorLog class>>log:named:
IRCErrorLog class>>log:forClass:
IRCConnection class>>tracePrivate:
IRCConnection class>>tracing:
IRCConnection>>initialize
IRCConnection class(Behavior)>>new
IRCConnection class>>openEnhancedIRC
TheWorldMenu>>doMenuItem:with:
[] in MenuItemMorph>>invokeWithEvent: {[(selArgCount := selector numArgs) = 0   ifTrue: [target perform: selector] ...]}
BlockContext>>ensure:
CursorWithMask(Cursor)>>showWhile:
MenuItemMorph>>invokeWithEvent:
MenuItemMorph>>mouseUp:
MenuItemMorph>>handleMouseUp:
MouseButtonEvent>>sentTo:
MenuItemMorph(Morph)>>handleEvent:
MorphicEventDispatcher>>dispatchDefault:with:
MorphicEventDispatcher>>dispatchEvent:with:
MenuItemMorph(Morph)>>processEvent:using:
MorphicEventDispatcher>>dispatchDefault:with:
MorphicEventDispatcher>>dispatchEvent:with:
MenuMorph(Morph)>>processEvent:using:
MenuMorph(Morph)>>processEvent:
MenuMorph>>handleFocusEvent:
[] in HandMorph>>sendFocusEvent:to:clear: {[ActiveHand := self.  ActiveEvent := anEvent.  result := focusHolder     han...]}
[] in PasteUpMorph>>becomeActiveDuring: {[aBlock value]}
BlockContext>>on:do:
PasteUpMorph>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendMouseEvent:
HandMorph>>handleEvent:
HandMorph>>processEvents
[] in WorldState>>doOneCycleNowFor: {[:h |  ActiveHand := h.  h processEvents.  capturingGesture := capturingGest...]}
Array(SequenceableCollection)>>do:
WorldState>>handsDo:
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
PasteUpMorph>>doOneCycle
[] in Project class>>spawnNewProcess {[[World doOneCycle.  Processor yield.  false] whileFalse.  nil]}
[] in BlockContext>>newProcess {[self value.  Processor terminateActive]}


More information about the Squeak-dev mailing list