On 27 September 2010 21:09, Eliot Miranda eliot.miranda@gmail.com wrote:
On Sun, Sep 26, 2010 at 10:18 PM, Eliot Miranda eliot.miranda@gmail.com wrote:
Hi Levente,
On Sun, Sep 26, 2010 at 7:13 PM, Levente Uzonyi leves@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...
In Hydra, i simply changed main entry point from winMain() to main(), and then i were able to print to console using printf() etc. The side effect of it, that when you run VM from explorer, it opens a console window, so you end up with two windows - console and graphic. and obvious, when you running it from command-line its using a console from which you run it.
I din't explored the way , how to make it to not open console but still have stdin/stdout working.
TIA Eliot
cheers Eliot
Levente
On Sun, Sep 26, 2010 at 2:46 PM, Chris Muller asqueaker@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