summaryrefslogtreecommitdiff
path: root/module/rnrs
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2011-01-21 08:27:08 +0100
committerAndy Wingo <wingo@pobox.com>2011-01-21 08:27:08 +0100
commitb04f841d5fa6d3448bb8f976bb27ee3e9a06f83c (patch)
tree20d18a47ddbaaac69d3ab93145e46daec7376844 /module/rnrs
parentdc78bee588718ce4df252e5d1773b9d895c6f43f (diff)
downloadguile-b04f841d5fa6d3448bb8f976bb27ee3e9a06f83c.tar.gz
implement port-eof?
* module/rnrs/io/ports.scm (port-eof?): Implement. * module/rnrs.scm: Re-export port-eof?. * test-suite/tests/r6rs-ports.test ("7.2.5 End-of-File Object"): Add test. Thanks to Göran Weinholt for the report.
Diffstat (limited to 'module/rnrs')
-rw-r--r--module/rnrs/io/ports.scm8
1 files changed, 7 insertions, 1 deletions
diff --git a/module/rnrs/io/ports.scm b/module/rnrs/io/ports.scm
index 854ea0919..15d62bd3f 100644
--- a/module/rnrs/io/ports.scm
+++ b/module/rnrs/io/ports.scm
@@ -1,6 +1,6 @@
;;;; ports.scm --- R6RS port API -*- coding: utf-8 -*-
-;;;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;;;; Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
;;;;
;;;; This library is free software; you can redistribute it and/or
;;;; modify it under the terms of the GNU Lesser General Public
@@ -37,6 +37,7 @@
;; input & output ports
port? input-port? output-port?
+ port-eof?
port-transcoder binary-port? transcoded-port
port-position set-port-position!
port-has-port-position? port-has-set-port-position!?
@@ -191,6 +192,11 @@
;; So far, we don't support transcoders other than the binary transcoder.
#t)
+(define (port-eof? port)
+ (eof-object? (if (binary-port? port)
+ (lookahead-u8 port)
+ (lookahead-char port))))
+
(define (transcoded-port port transcoder)
"Return a new textual port based on @var{port}, using
@var{transcoder} to encode and decode data written to or