'From etoys3.0 of 7 March 2008 [latest update: #2144] on 15 September 2008 at 6:54:49 pm'! "Change Set: tempFile-bf Date: 15 September 2008 Author: Bert Freudenberg Do not delete a temp file returned from the datastore if its name is still used in a file list. This happens when opening a text file or unknown file (#8402). Relies on proper finalization of dropped streams, fix for that will follow."! !SugarLauncher methodsFor: 'datastore' stamp: 'bf 9/15/2008 18:27'! deleteUnused: filePath "Delete file if filePath is indeed unused" World submorphs do: [:m | (m isSystemWindow and: [ (m model isKindOf: FileList) and: [ m model fullName = filePath]]) ifTrue: [ ^self deleteUnused: filePath whenDoneWith: m]]. [FileDirectory deleteFilePath: filePath] on: Error do: ["ignore"] ! ! !SugarLauncher methodsFor: 'datastore' stamp: 'bf 9/15/2008 18:24'! deleteUnused: fileName whenDoneWith: anObject "Delete fileName when anObject is not in use anymore" ^anObject toFinalizeSend: #deleteUnused: to: self with: fileName! ! !SugarLauncher methodsFor: 'datastore' stamp: 'bf 9/15/2008 18:26'! getFile: id "answer a temporary file, will be deleted if not used anymore" | utf8Name file | utf8Name := self dataStore getFilename: id. utf8Name isEmptyOrNil ifTrue: [^nil]. file := FileStream readOnlyFileNamed: utf8Name utf8ToSqueak. self deleteUnused: file name whenDoneWith: file. ^file! ! Smalltalk removeClassNamed: #SugarDatastoreTempFile!