diff --git a/collects/net/base64-sig.ss b/collects/net/base64-sig.ss index 485e63f90e..8440f8bbb1 100644 --- a/collects/net/base64-sig.ss +++ b/collects/net/base64-sig.ss @@ -5,7 +5,8 @@ (provide net:base64^) (define-signature net:base64^ - (base64-encode-stream + (base64-filename-safe + base64-encode-stream base64-decode-stream base64-encode base64-decode))) diff --git a/collects/net/base64-unit.ss b/collects/net/base64-unit.ss index 2bb1d075d6..f410facdd2 100644 --- a/collects/net/base64-unit.ss +++ b/collects/net/base64-unit.ss @@ -29,16 +29,22 @@ (loop (add1 n)))) (define digit-base64 (make-vector 64)) - (let ([each-char (lambda (s e pos) - (let loop ([i (char->integer s)][pos pos]) - (unless (> i (char->integer e)) - (vector-set! digit-base64 pos i) - (loop (add1 i) (add1 pos)))))]) - (each-char #\A #\Z 0) - (each-char #\a #\z 26) - (each-char #\0 #\9 52) - (each-char #\+ #\+ 62) - (each-char #\/ #\/ 63)) + (define (each-char s e pos) + (let loop ([i (char->integer s)][pos pos]) + (unless (> i (char->integer e)) + (vector-set! digit-base64 pos i) + (loop (add1 i) (add1 pos))))) + (each-char #\A #\Z 0) + (each-char #\a #\z 26) + (each-char #\0 #\9 52) + (each-char #\+ #\+ 62) + (each-char #\/ #\/ 63) + + (define (base64-filename-safe) + (vector-set! base64-digit (char->integer #\-) 62) + (vector-set! base64-digit (char->integer #\_) 63) + (each-char #\- #\- 62) + (each-char #\_ #\_ 63)) (define (base64-decode-stream in out) (let loop ([waiting 0][waiting-bits 0])