use tail recursion, not because of speed, but because breaking code would always have bad context dumps
svn: r17427 original commit: 9660490922a31892ae0ff132ae1c6d172154768d
This commit is contained in:
parent
6e02663d2d
commit
40cf224166
|
@ -173,19 +173,16 @@
|
||||||
|
|
||||||
(define (get-rest-of-multi-line-response communicator)
|
(define (get-rest-of-multi-line-response communicator)
|
||||||
(let ([receiver (communicator-receiver communicator)])
|
(let ([receiver (communicator-receiver communicator)])
|
||||||
(let loop ()
|
(let loop ([r '()])
|
||||||
(let ([l (get-one-line-from-server receiver)])
|
(let ([l (get-one-line-from-server receiver)])
|
||||||
(cond
|
(cond
|
||||||
[(eof-object? l)
|
[(eof-object? l)
|
||||||
((signal-error make-premature-close
|
((signal-error make-premature-close
|
||||||
"port prematurely closed during multi-line response")
|
"port prematurely closed during multi-line response")
|
||||||
communicator)]
|
communicator)]
|
||||||
[(string=? l ".")
|
[(string=? l ".") (reverse r)]
|
||||||
'()]
|
[(string=? l "..") (loop (cons "." r))]
|
||||||
[(string=? l "..")
|
[else (loop (cons l r))])))))
|
||||||
(cons "." (loop))]
|
|
||||||
[else
|
|
||||||
(cons l (loop))])))))
|
|
||||||
|
|
||||||
;; get-multi-line-response :
|
;; get-multi-line-response :
|
||||||
;; communicator -> number x string x list (string)
|
;; communicator -> number x string x list (string)
|
||||||
|
@ -307,12 +304,7 @@
|
||||||
;; list (string) x list (desired) -> list (string)
|
;; list (string) x list (desired) -> list (string)
|
||||||
|
|
||||||
(define (extract-desired-headers headers desireds)
|
(define (extract-desired-headers headers desireds)
|
||||||
(let loop ([headers headers])
|
(filter (lambda (header)
|
||||||
(if (null? headers) null
|
(ormap (lambda (matcher) (regexp-match matcher header))
|
||||||
(let ([first (car headers)]
|
desireds))
|
||||||
[rest (cdr headers)])
|
headers))
|
||||||
(if (ormap (lambda (matcher)
|
|
||||||
(regexp-match matcher first))
|
|
||||||
desireds)
|
|
||||||
(cons first (loop rest))
|
|
||||||
(loop rest))))))
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user