From 978aed4f60b3e9c21ced85a7c304b17bc5914af4 Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Sat, 22 Mar 2014 11:15:23 +0900 Subject: [PATCH] Adding port->bytevector. --- lib/chibi/io.sld | 3 ++- lib/chibi/io/io.scm | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/chibi/io.sld b/lib/chibi/io.sld index b8d4da82..1ee8ccbb 100644 --- a/lib/chibi/io.sld +++ b/lib/chibi/io.sld @@ -2,7 +2,8 @@ (define-library (chibi io) (export read-string read-string! read-line write-line port-fold port-fold-right port-map - port->list port->string-list port->sexp-list port->string + port->list port->string-list port->sexp-list + port->string port->bytevector file-position set-file-position! seek/set seek/cur seek/end make-custom-input-port make-custom-output-port make-custom-binary-input-port make-custom-binary-output-port diff --git a/lib/chibi/io/io.scm b/lib/chibi/io/io.scm index 7100e235..abe5ca90 100644 --- a/lib/chibi/io/io.scm +++ b/lib/chibi/io/io.scm @@ -225,6 +225,12 @@ (define (port->string in) (string-concatenate (port->list (lambda (in) (read-string 1024 in)) in))) +(define (port->bytevector in) + (let ((out (open-output-bytevector))) + (do ((c (read-u8 in) (read-u8 in))) + ((eof-object? c) (get-output-bytevector out)) + (write-u8 c out)))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; custom port utilities