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