[Pkg] The Trunk: Files-ul.99.mcz

commits at source.squeak.org commits at source.squeak.org
Sat Jan 29 00:17:25 UTC 2011


Levente Uzonyi uploaded a new version of Files to project The Trunk:
http://source.squeak.org/trunk/Files-ul.99.mcz

==================== Summary ====================

Name: Files-ul.99
Author: ul
Time: 29 January 2011, 1:12:30.559 am
UUID: 15cfe8c5-693e-e442-bfab-22eabbf3be6b
Ancestors: Files-ul.98, Files-ul.97

- merged

=============== Diff against Files-ul.98 ===============

Item was added:
+ (PackageInfo named: 'Files') preamble: '"Migrate stdio handles and files from StandardFileStream to FileStream. Turn off encoding and reuse the streams if they are in use in the image for backwards compatibility."
+ (StandardFileStream classPool at: #StdioHandles) ifNotNil: [ :handleArray |
+ 	FileStream classPool at: #TheStdioHandles put: handleArray ].
+ (StandardFileStream instVarNamed: #stdioFiles) ifNotNil: [ :stdioFiles |
+ 	FileStream classPool
+ 		at: #StdioFiles put: stdioFiles;
+ 		at: #EncodeAndDecodeStdioFiles put: false ].
+ Smalltalk
+ 	removeFromStartUpList: StandardFileStream;
+ 	removeFromShutDownList: StandardFileStream'!

Item was changed:
  FileStream subclass: #StandardFileStream
  	instanceVariableNames: 'name fileID buffer1'
+ 	classVariableNames: 'Registry'
- 	classVariableNames: 'Registry StdioHandles'
  	poolDictionaries: ''
  	category: 'Files-Kernel'!
- StandardFileStream class
- 	instanceVariableNames: 'stdioFiles'!
  
  !StandardFileStream commentStamp: 'ul 12/6/2009 05:13' prior: 0!
  Provides a simple, platform-independent, interface to a file system. The instance variable rwmode, inherited from class PositionableStream, here is used to hold a Boolean -- true means opened for read-write, false means opened for read-only.  2/12/96 sw
  
  I implement a simple read buffering scheme with the variables defined in PositionableStream (which are unused in me otherwise) in the following way:
  	collection	<ByteString> or <ByteArray>	This is the buffer.
  	position	<Integer>	The relative position in the buffer. Greater or equal to zero.
  	readLimit	<Integer>	The number of bytes buffered. Greater or equal to zero.
  Read buffering is enabled with #enableReadBuffering, disabled with #disableReadBuffering and it is enabled by default. The buffer is filled when a read attempt of an unbuffered absolute position is requested, or when a negative repositioning is made (with #position: with an argument < than the current absolute position) to an absolute position which is not buffered. In the first case, the buffer is positioned to the given absolute position. In the latter case the repositioning is made to the requested absolute position minus fourth of the buffer size. This means that further small negative repositionings won't result in buffer flushing. This is really useful when filing in code.
  The read buffer is flushed (#flushReadBuffer) whenever a write attempt is made.
  The buffer state is valid if and only if collection is not nil and position < readLimit.!
- StandardFileStream class
- 	instanceVariableNames: 'stdioFiles'!

Item was removed:
- ----- Method: StandardFileStream class>>flushAndVoidStdioFiles (in category 'class initialization') -----
- flushAndVoidStdioFiles
- 	stdioFiles ifNotNil:
- 		[stdioFiles do:
- 			[:f| f ifNotNil: [f isReadOnly ifFalse: [[f flush] on: Error do: [:ex|"care less"]]]].
- 		 stdioFiles := nil]!

Item was removed:
- ----- Method: StandardFileStream class>>initialize (in category 'class initialization') -----
- initialize
- 	"StandardFileStream initialize"
- 	StdioHandles := Array new: 3.
- 	Smalltalk
- 		addToStartUpList: self after: SecurityManager; "the intent being before: AutoStart"
- 		addToShutDownList: self after: SecurityManager!

Item was removed:
- ----- Method: StandardFileStream class>>newForStdio (in category 'private-file creation') -----
- newForStdio
- 	"Circumvent CrLfFileStream new's returning an instance of MultiBteFileStream"
- 	^self new!

Item was removed:
- ----- Method: StandardFileStream class>>shutDown: (in category 'class initialization') -----
- shutDown: quitting
- 	quitting ifTrue:
- 		[self withAllSubclassesDo:
- 			[:fileStreamClass| fileStreamClass flushAndVoidStdioFiles]]!

Item was removed:
- ----- Method: StandardFileStream class>>standardIOStreamNamed:forWrite: (in category 'private-file creation') -----
- standardIOStreamNamed: moniker forWrite: forWrite
- 	
- 	| index |
- 	index := #(stdin stdout stderr) identityIndexOf: moniker.
- 	^((stdioFiles ifNil: [ stdioFiles := Array new: 3 ]) at: index)
- 		ifNil: [
- 			stdioFiles
- 				at: index 
- 				put: (
- 					(StdioHandles at: index)
- 						ifNil: [ ^self error: moniker, ' is unavailable' ]
- 						ifNotNil: [ :handle|
- 							self newForStdio 
- 								openOnHandle: handle 
- 								name: moniker
- 								forWrite: forWrite ]) ]!

Item was removed:
- ----- Method: StandardFileStream class>>startUp: (in category 'class initialization') -----
- startUp: resuming
- 	(resuming and: [self == StandardFileStream]) ifTrue:
- 		[self withAllSubclassesDo:
- 			[:fileStreamClass| fileStreamClass voidStdioFiles].
- 		 [StdioHandles := self stdioHandles]
- 			on: Error
- 			do: [:ex|
- 				StdioHandles isArray ifFalse:
- 					[StdioHandles := Array new: 3]]]!

Item was removed:
- ----- Method: StandardFileStream class>>stderr (in category 'file creation') -----
- stderr
- 	^self standardIOStreamNamed: #stderr forWrite: true!

Item was removed:
- ----- Method: StandardFileStream class>>stdin (in category 'file creation') -----
- stdin
- 	^self standardIOStreamNamed: #stdin forWrite: false!

Item was removed:
- ----- Method: StandardFileStream class>>stdioHandles (in category 'private-file creation') -----
- stdioHandles
- 	<primitive: 'primitiveFileStdioHandles' module: 'FilePlugin' error: ec>
- 	self primitiveFailed!

Item was removed:
- ----- Method: StandardFileStream class>>stdout (in category 'file creation') -----
- stdout
- 	^self standardIOStreamNamed: #stdout forWrite: true!

Item was removed:
- ----- Method: StandardFileStream class>>voidStdioFiles (in category 'class initialization') -----
- voidStdioFiles
- 	stdioFiles := nil!



More information about the Packages mailing list