'From etoys3.0 of 19 February 2008 [latest update: #1905] on 22 February 2008 at 3:36:31 pm'! "Change Set: stdStreams-bf Date: 22 February 2008 Author: Bert Freudenberg Add support for stdin, stdout, stderr. Also, setting #lineEndConvention: enables the line end conversion."! ReadWriteStream subclass: #FileStream instanceVariableNames: 'rwmode' classVariableNames: 'StdErr StdIn StdOut' poolDictionaries: '' category: 'System-Files'! !FileStream class methodsFor: 'standard streams' stamp: 'bf 2/22/2008 15:24'! closeStandardStreams StdIn ifNotNil: [StdIn close. StdIn := nil]. StdOut ifNotNil: [StdOut close. StdOut := nil]. StdErr ifNotNil: [StdErr close. StdErr := nil]. ! ! !FileStream class methodsFor: 'standard streams' stamp: 'bf 2/22/2008 15:28'! stderr ^StdErr ifNil: [ StdErr := MultiByteFileStream new open: '/dev/stderr' forWrite: true; lineEndConvention: #lf]! ! !FileStream class methodsFor: 'standard streams' stamp: 'bf 2/22/2008 15:29'! stdin ^StdIn ifNil: [ StdIn := MultiByteFileStream new open: '/dev/stdin' forWrite: false; lineEndConvention: #lf]! ! !FileStream class methodsFor: 'standard streams' stamp: 'bf 2/22/2008 15:29'! stdout ^StdOut ifNil: [ StdOut := MultiByteFileStream new open: '/dev/stdout' forWrite: true; lineEndConvention: #lf]! ! !GetTextExporter methodsFor: 'exporting' stamp: 'bf 2/22/2008 15:27'! export: aLanguage language := aLanguage. [stream := FileStream forceNewFileNamed: self defaultFileName. stream lineEndConvention: #lf. stream converter: UTF8TextConverter new. self exportHeader. self exportTranslations. self exportUntranslated] ensure: [stream close]! ! !GetTextExporter2 methodsFor: 'private' stamp: 'bf 2/22/2008 15:26'! export: literals translator: translator domain: domainName | fileName | "Export a gettext file in a category. literals is a dictionary of keyword -> #(MethodReference...) in the textDomain." fileName := self dirNameDomain: domainName translator: translator. [stream := FileStream forceNewFileNamed: fileName. stream lineEndConvention: #lf. stream converter: UTF8TextConverter new. self exportHeader: domainName. self exportBody: literals translator: translator] ensure: [stream close]! ! !MultiByteFileStream methodsFor: 'accessing' stamp: 'bf 2/22/2008 15:27'! lineEndConvention: aSymbol lineEndConvention := aSymbol. wantsLineEndConversion := true.! ! !FileDirectory class methodsFor: 'system start up' stamp: 'bf 2/22/2008 15:25'! shutDown SmalltalkImage current closeSourceFiles. FileStream closeStandardStreams. ! !