On 2013-05-02, at 8:54 AM, Hendrik Boom hendrik@topoi.pooq.com wrote:
On Thu, 02 May 2013 12:35:32 +0000, Hendrik Boom wrote:
I'm running a gambit program from a file using gsi, initiated from an interactive shell provided by my window manager on Debian wheezy..
The program uses read-char and peek-char to read characters from standard input, which appears to be the terminal.
but the test for end of file, (eof-object? c), seems never to return true,, even if I type a control-D, which is the usual Linux way to signal end of file from a terminal.
How should I enter an end-of-file on the terminal instead?
Never mind. I must be doing something else wrong, because I just got it to work in a very small test. Sorry. I though the test I had used was small enough, but evidently not. I must have managed to squeeze another error into it.
-- hendrik
OK. Please note that when run in "interactive mode" from the shell, gsi will connect the controlling terminal to current-input/output-port . If you want stdin/stdout instead, then add the -:d- option. This feature is useful to be able to debug with a REPL on the controlling terminal a Scheme program which has its stdin/stdout redirected.
Note also that "end-of-file" is not permanent on the terminal. If you read end-of-file (user typed ctrl-d) you can still read other characters after that. For example :
(for-each (lambda (x) (pp (read-char))) '(1 2 3 4 5))
#\newline #!eof
#\newline #!eof #!eof
The output was obtained by typing : ctrl-d, return, ctrl-d, ctrl-d .
Marc