[squeak-dev] how to write to stdOut and stdErr under Cog
Levente Uzonyi
leves at elte.hu
Sun Oct 3 22:55:43 UTC 2010
On Sun, 3 Oct 2010, Chris Muller wrote:
> Thanks for the code Eliot. Can you give me a hint about proper usage.
> In the current trunk I tried
>
> CrLfFileStream newForStdio
>
> but I was not able to nextPutAll: a String onto that (rwmode was not set).
>
> I also found StandardFileStream
> class>>#standardIOStreamNamed:forWrite: but it has undeclared
> variable, "stdioFiles". Is that supposed to be a class-inst var
> defined at the StandardFileStream level? Senders did not help me
> understand what arguments I should pass...
That class instance variable is missing, but the code still works. Try
this:
CrLfFileStream stdout nextPutAll: 'Hello World!'.
Levente
>
> Sorry for my confusion..
>
> - Chris
>
>
> On Mon, Sep 27, 2010 at 1:09 PM, Eliot Miranda <eliot.miranda at gmail.com> wrote:
>>
>>
>> On Sun, Sep 26, 2010 at 10:18 PM, Eliot Miranda <eliot.miranda at gmail.com>
>> wrote:
>>>
>>> Hi Levente,
>>>
>>> On Sun, Sep 26, 2010 at 7:13 PM, Levente Uzonyi <leves at elte.hu> wrote:
>>>>
>>>> On Sun, 26 Sep 2010, Eliot Miranda wrote:
>>>>
>>>>> Hi Chris,
>>>>>
>>>>> I have code for this, but right now I need to crack some crabs, so I
>>>>> don't have time to verify this code in 4.1 :) Use at your own risk ;)
>>>>> The
>>>>> most important thing is the StandardFileStream>>stdioHandles primitive
>>>>> for
>>>>> accessing the streams. N.B. some work needs to be done on the win32
>>>>> FilePlugin support code before this will work on Windows.
>>>>
>>>> All three streams seem to be working on Windows Vista with the latest
>>>> CogVM.
>>>> This seems to be a really cool feature, though I think CrLfFileStream
>>>> should be deprecated, so MultiByteFileStream support would be better IMO.
>>>
>>> The streams work if directed to files. But they will /not/ work if
>>> directed to input or output in a console window. I should have been
>>> clearer, sorry. The work needed is in
>>> platforms/win32/plugins/FilePlugin/sqWin32FilePrims.c where if input and/or
>>> output is the console we need to use ReadConsole & WriteConsole in place of
>>> ReadFile & WriteFile.
>>
>> Hmmm. Turns out I was confused about this. One doesn't need ReadConsole &
>> WriteConsole; ReadFile & WriteFile should do just fine. But the Cog code
>> doesnt work in either an MS-DOS console window or a cygwin console window.
>> If anyone's familiar with this area of Windows please feel free to take a
>> look...
>> TIA
>> Eliot
>>>
>>> cheers
>>> Eliot
>>>>
>>>>
>>>> Levente
>>>>
>>>>>
>>>>>
>>>>> On Sun, Sep 26, 2010 at 2:46 PM, Chris Muller <asqueaker at gmail.com>
>>>>> wrote:
>>>>>
>>>>>> I am developing a simple "CommandLineProcessor" facade for easily
>>>>>> transferring command-line arguments simply as block-arguments, so you
>>>>>> can write smalltalk scripts in vi:
>>>>>>
>>>>>> CommandLineProcessor do: [ : arg1 : arg2 : arg3 | "args come in as
>>>>>> Strings" ... ]
>>>>>>
>>>>>> and also for directing Notifications and Warnings messages to stdOut,
>>>>>> and Errors to stdErr. It relies on OSProcess to write to stdOut and
>>>>>> stdErr for this. However, ever since switching to Cog, writing to
>>>>>> these streams does not seem to redirect out to Linux..
>>>>>>
>>>>>> I don't know whether writing to these streams makes me
>>>>>> Linux-dependent, but it really is nice to be able to write Linux
>>>>>> scripts that employ Squeak in the back-end, but operate normally like
>>>>>> other shell programs in the terminal window and with redirecting
>>>>>> output, etc.
>>>>>>
>>>>>> - Chris
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>>
>>
>>
>>
>
>
More information about the Squeak-dev
mailing list
|