--- a/PositionableStream.st Mon Jan 31 20:07:40 2000 +0100
+++ b/PositionableStream.st Tue Feb 01 14:19:49 2000 +0100
@@ -13,7 +13,7 @@
PeekableStream subclass:#PositionableStream
instanceVariableNames:'collection position readLimit writeLimit'
classVariableNames:'ZeroPosition InvalidPositionErrorSignal ErrorDuringFileInSignal
- ChunkSeparator'
+ ChunkSeparator CurrentFileInDirectoryQuerySignal'
poolDictionaries:''
category:'Streams'
!
@@ -72,6 +72,11 @@
InvalidPositionErrorSignal nameClass:self message:#invalidPositionErrorSignal.
InvalidPositionErrorSignal notifierString:'invalid position'.
+ CurrentFileInDirectoryQuerySignal := QuerySignal new.
+ CurrentFileInDirectoryQuerySignal nameClass:self message:#currentFileInDirectoryQuerySignal.
+ CurrentFileInDirectoryQuerySignal notifierString:'query for current directory when filing in'.
+ CurrentFileInDirectoryQuerySignal handlerBlock:[:ex | ex proceedWith:Filename currentDirectory].
+
ChunkSeparator := $!!.
ZeroPosition := 1.
@@ -103,6 +108,13 @@
!PositionableStream class methodsFor:'Signal constants'!
+currentFileInDirectoryQuerySignal
+ "return the querySignal, which can be used to ask for the current directory
+ during a fileIn (that is the directory where the filed-in file resides)"
+
+ ^ CurrentFileInDirectoryQuerySignal
+!
+
invalidPositionErrorSignal
"return the signal raised if positioning is attempted to an
invalid position (i.e. before the begin of the stream or after
@@ -429,10 +441,14 @@
^ self fileInNotifying:(SourceFileLoader on:self) passChunk:true.
].
- [
+ [ |thisDirectory|
+
oldPath := Smalltalk systemPath.
- Smalltalk systemPath:(oldPath copy addFirst:(self pathName asFilename directoryName); yourself).
- val := self fileInNotifying:(SourceFileLoader on:self) passChunk:true.
+ thisDirectory := self pathName asFilename directory.
+ Smalltalk systemPath:(oldPath copy addFirst:thisDirectory pathName; yourself).
+ CurrentFileInDirectoryQuerySignal answer:thisDirectory do:[
+ val := self fileInNotifying:(SourceFileLoader on:self) passChunk:true.
+ ]
] valueNowOrOnUnwindDo:[
Smalltalk systemPath:oldPath.
].
@@ -1037,6 +1053,6 @@
!PositionableStream class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/PositionableStream.st,v 1.86 1999-12-14 14:00:03 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/PositionableStream.st,v 1.87 2000-02-01 13:19:49 tm Exp $'
! !
PositionableStream initialize!