On Mon 19 Jun 2017 10:15, ludovic.cour...@inria.fr (Ludovic Courtès) writes:
> +(define (buffering-output-port port buffer) > + ;; Note: In Guile 2.2.2, custom binary output ports already have their own > + ;; 4K internal buffer. > + (define size > + (bytevector-length buffer)) > + > + (define total 0) > + > + (define (flush) > + (put-bytevector port buffer 0 total) > + (set! total 0)) > + > + (define (write bv offset count) > + (if (zero? count) ;end of file > + (flush) > + (let loop ((offset offset) > + (count count) > + (written 0)) > + (cond ((= total size) > + (flush) > + (loop offset count written)) > + ((zero? count) > + written) > + (else > + (let ((to-copy (min count (- size total)))) > + (bytevector-copy! bv offset buffer total to-copy) > + (set! total (+ total to-copy)) > + (loop (+ offset to-copy) (- count to-copy) > + (+ written to-copy)))))))) > + > + (let ((port (make-custom-binary-output-port "buffering-output-port" > + write #f #f flush))) > + (setvbuf port _IONBF) > + port)) > + Why not just set to _IOFBF and let Guile 2.2's buffering handle it? Andy