.
original commit: 4cdd1cf09dbb40689903e42f0cf6f559efcb1e0f
This commit is contained in:
parent
e65259b1bd
commit
74d2cff7e2
|
@ -7,6 +7,7 @@
|
|||
(provide open-output-nowhere
|
||||
make-pipe-with-specials
|
||||
make-input-port/read-to-peek
|
||||
peeking-input-port
|
||||
merge-input
|
||||
copy-port
|
||||
input-port-append
|
||||
|
@ -449,6 +450,22 @@
|
|||
(port-progress-evt peeked-r))
|
||||
commit-it))
|
||||
|
||||
(define peeking-input-port
|
||||
(opt-lambda (orig-in [name (object-name orig-in)] [delta 0])
|
||||
(make-input-port/read-to-peek
|
||||
name
|
||||
(lambda (s)
|
||||
(let ([r (peek-bytes-avail!* s delta #f orig-in)])
|
||||
(set! delta (+ delta (cond
|
||||
[(number? r) r]
|
||||
[else 1])))
|
||||
(if (eq? r 0)
|
||||
(handle-evt orig-in (lambda (v) 0))
|
||||
r)))
|
||||
(lambda (s skip default)
|
||||
(peek-bytes-avail!* s (+ delta skip) #f orig-in))
|
||||
void)))
|
||||
|
||||
;; Not kill-safe.
|
||||
(define make-pipe-with-specials
|
||||
;; This implementation of pipes is almost CML-style, with a manager thread
|
||||
|
|
Loading…
Reference in New Issue
Block a user