mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-21 22:59:16 +02:00
20 lines
876 B
Scheme
20 lines
876 B
Scheme
|
|
(define (with-net-io host service proc)
|
|
(let lp ((addr (get-address-info host service #f)))
|
|
(if (not addr)
|
|
(error "couldn't find address" host service)
|
|
(let ((sock (socket (address-info-family addr)
|
|
(address-info-socket-type addr)
|
|
(address-info-protocol addr))))
|
|
(if (negative? sock)
|
|
(lp (address-info-next addr))
|
|
(if (negative?
|
|
(connect sock
|
|
(address-info-address addr)
|
|
(address-info-address-length addr)))
|
|
(lp (address-info-next addr))
|
|
(let ((in (open-input-fd sock))
|
|
(out (open-output-fd sock)))
|
|
(let ((res (proc in out)))
|
|
(close-input-port in)
|
|
res))))))))
|