Issue 4233 in pharo: get std in fileStream

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Issue 4233 in pharo: get std in fileStream

pharo
Status: Accepted
Owner: [hidden email]

New issue 4233 by [hidden email]: get std in fileStream
http://code.google.com/p/pharo/issues/detail?id=4233

We have to understand the advantage.... bit now this is logged in this bug  
entry.
Not sure that I understand it


http://source.squeak.org/inbox/Files-ul.97.mcz

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

Name: Files-ul.97
Author: ul
Time: 24 January 2011, 3:59:59.143 am
UUID: 6f9985b2-9bce-a145-a3d2-276a76ce1fa7
Ancestors: Files-ul.96

- removed previous stdio support code from StandardFileStream, migration is  
done in the preamble

=============== Diff against Files-ul.96 ===============

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!


_______________________________________________
Pharo-bugtracker mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-bugtracker