summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2016-05-24 07:06:45 +0200
committerAndy Wingo <wingo@pobox.com>2016-05-24 07:06:45 +0200
commit690b856d59e392b0f493abf21ec08e90bb47d334 (patch)
treee86a394eb446de1bed5e95d5309be8c9da888dac
parent6bf7ec0c9c615f0b3bbb03bae15ebb10194e2bf8 (diff)
downloadguile-690b856d59e392b0f493abf21ec08e90bb47d334.tar.gz
Add force-output to sports
* module/ice-9/sports.scm (force-output): New implementation. (port-bindings): Add force-output.
-rw-r--r--module/ice-9/sports.scm10
1 files changed, 8 insertions, 2 deletions
diff --git a/module/ice-9/sports.scm b/module/ice-9/sports.scm
index 807eada0b..b506703d6 100644
--- a/module/ice-9/sports.scm
+++ b/module/ice-9/sports.scm
@@ -53,7 +53,8 @@
#:use-module (ice-9 ports internal)
#:use-module (ice-9 match)
#:replace (peek-char
- read-char)
+ read-char
+ force-output)
#:export (lookahead-u8
get-u8
get-bytevector-n
@@ -86,6 +87,11 @@
(set-port-buffer-end! buf 0)
(write-bytes port (port-buffer-bytevector buf) cur (- end cur)))))
+(define* (force-output #:optional (port (current-output-port)))
+ (unless (and (output-port? port) (not (port-closed? port)))
+ (error "not an open output port" port))
+ (flush-output port))
+
(define (default-read-waiter port) (port-poll port "r"))
(define (default-write-waiter port) (port-poll port "w"))
@@ -573,7 +579,7 @@
(define saved-port-bindings #f)
(define port-bindings
- '(((guile) read-char peek-char)
+ '(((guile) read-char peek-char force-output)
((ice-9 binary-ports) get-u8 lookahead-u8 get-bytevector-n)
((ice-9 rdelim) %read-line read-line read-delimited)))
(define (install-sports!)