diff --git a/collects/net/base64-unit.ss b/collects/net/base64-unit.ss index 3468b4e..dd7819a 100644 --- a/collects/net/base64-unit.ss +++ b/collects/net/base64-unit.ss @@ -37,10 +37,10 @@ (define (base64-encode-stream in out [linesep #"\n"]) (let loop ([data 0] [bits 0] [width 0]) (define (write-char) + (write-byte (vector-ref digit-base64 (arithmetic-shift data (- 6 bits))) + out) (let ([width (modulo (add1 width) 72)]) (when (zero? width) (display linesep out)) - (write-byte (vector-ref digit-base64 (arithmetic-shift data (- 6 bits))) - out) width)) (if (>= bits 6) (let ([bits (- bits 6)]) @@ -48,10 +48,14 @@ (let ([c (read-byte in)]) (if (eof-object? c) ;; flush extra bits - (let ([width (if (> bits 0) (write-char) width)]) - (when (> width 0) - (for ([i (in-range (modulo (- width) 4))]) (write-byte =byte out)) - (display linesep out))) + (begin + (printf "1 width = ~s\n" width) + (let ([width (if (> bits 0) (write-char) width)]) + (printf "2 width = ~s\n" width) + (when (> width 0) + (for ([i (in-range (modulo (- width) 4))]) + (write-byte =byte out)) + (display linesep out)))) (loop (+ (arithmetic-shift data 8) c) (+ bits 8) width)))))) (define (base64-decode src)