;;; This file is part of the Scheme Untergrund Library.

;;; Copyright (c) 2002-2003 by Martin Gasbichler.
;;; For copyright information, see the file COPYING which comes with
;;; the distribution.

(define (socket<->stdports host port)
  (let ((s (socket-connect protocol-family/internet socket-type/stream host port)))
    (set-port-buffering (socket:outport s) bufpol/none)
    (set-port-buffering (socket:inport s) bufpol/none)
    (spawn (lambda () (dynamic-wind
		       (lambda () #f)
		       (lambda ()
			 (dup-port (socket:inport s) (current-output-port)))
		       (lambda ()
			 (close (socket:inport s))))))

    (dynamic-wind
     (lambda () #f)
     (lambda ()
       (dup-port (current-input-port) (socket:outport s)))
     (lambda ()
       (close-socket s)))))


(define (dup-port from to)
  (let ((c (read-char from)))
    (if (not (eof-object? c))
	(begin 
	  (display c to)
	  (dup-port from to)))))