From c464e8ebce445207639fa0f1106fb2cbdd6e5be4 Mon Sep 17 00:00:00 2001 From: Abdulaziz Ghuloum Date: Sat, 18 Oct 2008 17:01:57 -0400 Subject: [PATCH] - open-file-output-port now understands "none" as a buffer-mode. Previously, all output ports were unbuffered. - the console error port is made unbuffered. The following program: (begin (write-char #\a (current-output-port)) (write-char #\b (current-error-port)) (write-char #\c (current-output-port))) now prints "bac" when run from the repl, when it used to only print "ac" (the b just sat in the error port). --- scheme/ikarus.io.ss | 28 ++++++++++++++-------------- scheme/last-revision | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/scheme/ikarus.io.ss b/scheme/ikarus.io.ss index 62a21b3..de42964 100644 --- a/scheme/ikarus.io.ss +++ b/scheme/ikarus.io.ss @@ -1416,8 +1416,7 @@ transcoder #t 'open-file-input-port)])) - - + (define open-file-output-port (case-lambda [(filename) @@ -1427,20 +1426,21 @@ [(filename file-options buffer-mode) (open-file-output-port filename file-options buffer-mode #f)] [(filename file-options buffer-mode transcoder) + (define who 'open-file-output-port) (unless (string? filename) - (die 'open-file-output-port "invalid filename" filename)) + (die who "invalid filename" filename)) ; FIXME: file-options ignored - ; FIXME: buffer-mode ignored + ; FIXME: line-buffered output ports are not handled (unless (or (not transcoder) (transcoder? transcoder)) - (die 'open-file-output-port "invalid transcoder" transcoder)) - (fh->output-port - (open-output-file-handle filename file-options - 'open-file-output-port) - filename - output-file-buffer-size - transcoder - #t - 'open-file-output-port)])) + (die who "invalid transcoder" transcoder)) + (let ([buffer-size + (case buffer-mode + [(none) 1] + [(block line) output-file-buffer-size] + [else (die who "invalid buffer mode" buffer-mode)])]) + (fh->output-port + (open-output-file-handle filename file-options who) + filename buffer-size transcoder #t who))])) (define (open-output-file filename) (unless (string? filename) @@ -1565,7 +1565,7 @@ (define *the-error-port* (make-parameter (transcoded-port - (fh->output-port 2 '*stderr* output-file-buffer-size #f #f #f) + (fh->output-port 2 '*stderr* 1 #f #f #f) (native-transcoder)))) (define console-output-port diff --git a/scheme/last-revision b/scheme/last-revision index dcba252..184de29 100644 --- a/scheme/last-revision +++ b/scheme/last-revision @@ -1 +1 @@ -1634 +1635