filename safe mode, see base64 rfc
svn: r3445 original commit: 3021890cd1df838215fddf7daf1d54a20a356221
This commit is contained in:
parent
2474f2657f
commit
486ea7a2e3
|
@ -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)))
|
||||
|
|
|
@ -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])
|
||||
|
|
Loading…
Reference in New Issue
Block a user