#!/usr/bin/guile \
-e main -s
;; -*- scheme -*-
!#

(define (->string arg)
  (with-output-to-string
    (lambda () (write arg))))

(define gnuserv-tcp-port (string-append (->string (+ 21490 (getuid)))
					"/tcp"))

(define (fork/exec->exit-val prog . args)
  (let ((pid (primitive-fork)))
    (if (= 0 pid)
	(apply execlp (cons prog (cons prog args)))
	(status:exit-val (cdr (waitpid pid))))))

(define (gnudoit . args)
  (apply fork/exec->exit-val "gnudoit" args))

(define (main . ignored-args)
  (if (= 0 (fork/exec->exit-val "fuser" "-n" "tcp" "-s" gnuserv-tcp-port))
      (and (= 0 (gnudoit "-q" "(require 'cmuscheme)"))
	   (gnudoit "-q" "(run-scheme \"guile\")"))
      (primitive-exit
       (fork/exec->exit-val "xterm" "-T" "Guile Scheme" "-e" "guile"))))
