.
original commit: 13ce85f6e2558557305d2031bf72e7db1be4b95c
This commit is contained in:
parent
3b45b7165e
commit
f7a6fde0db
|
@ -12,6 +12,7 @@
|
|||
|
||||
merge-input
|
||||
copy-port
|
||||
wrap-input-ports
|
||||
|
||||
run-server
|
||||
make-limited-input-port)
|
||||
|
@ -190,6 +191,31 @@
|
|||
(loop)))
|
||||
(lambda () (tcp-close l))))))
|
||||
|
||||
(define wrap-input-ports
|
||||
(opt-lambda (ports [close-orig? #t])
|
||||
(let ([go (lambda (op)
|
||||
(if (null? ports)
|
||||
eof
|
||||
(let ([n (op (car ports))])
|
||||
(cond
|
||||
[(eq? n 0) (car ports)]
|
||||
[(eof-object? n)
|
||||
(when close-orig?
|
||||
(close-input-port (car ports)))
|
||||
(set! ports (cdr ports))
|
||||
0]
|
||||
[else n]))))])
|
||||
(make-custom-input-port
|
||||
(lambda (str)
|
||||
(go (lambda (p)
|
||||
(read-string-avail!* str p))))
|
||||
(lambda (str skip)
|
||||
(go (lambda (p)
|
||||
(peek-string-avail!* str skip p))))
|
||||
(lambda ()
|
||||
(when close-orig?
|
||||
(map close-input-port ports)))))))
|
||||
|
||||
(define make-limited-input-port
|
||||
(opt-lambda (port limit [close-orig? #t])
|
||||
(let ([got 0])
|
||||
|
|
Loading…
Reference in New Issue
Block a user