;;; -*- Mode:Lisp; Readtable:CL; Package:USER; Base:10; Patch-File:T -*-
;;; Patch file for System version 124.59
;;; Reason:
;;;  Whostates for Time and Finger...
;;; Written 14-Jun-88 17:54:02 by pld (Peter L. DeWolf) at site Gigamos Cambridge
;;; while running on Cthulhu from band 1
;;; with Experimental System 124.53, Experimental Local-File 74.1, Experimental File-Server 23.1, Experimental Unix-Interface 12.0, Experimental ZMail 72.0, Experimental Tape 23.6, Experimental Lambda-Diag 16.1, microcode 1759, SDU Boot Tape 3.14, SDU ROM 8.



; From modified file DJ: L.NETWORK.IP-TCP.SERVER; TIME.LISP#17 at 14-Jun-88 17:59:49
#10R TCP-APPLICATION#: 
(COMPILER-LET ((*PACKAGE* (GLOBAL:PKG-FIND-PACKAGE "TCP-APPLICATION")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; IP-TCP; SERVER; TIME  "

(defun time-user-function (host-name)
  (check-type host-name string)
  (let ((tcp:*tcp-stream-whostate* "Close Connection"))
    (with-open-stream (stream (let ((tcp:*tcp-stream-whostate* "Open Connection"))
				(open-easy-tcp-stream host-name
						      (sym-value 'ipport-timeserver)
						      nil
						      :input-buffers 1
						      :output-buffers 0
						      :keyword "TIME User")))
      (let ((tcp:*tcp-stream-whostate* "Time"))
	(receive-32b-hbf stream)))))

))

; From modified file DJ: L.NETWORK.IP-TCP.SERVER; FINGER.LISP#22 at 14-Jun-88 18:00:21
#10R TCP-APPLICATION#: 
(COMPILER-LET ((*PACKAGE* (GLOBAL:PKG-FIND-PACKAGE "TCP-APPLICATION")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; IP-TCP; SERVER; FINGER  "

(defun finger-internet-host (host user &optional (ostream *standard-output*) style)
  (let ((tcp:*tcp-stream-whostate* "Close Connection"))
    (with-open-stream (stream (let ((tcp:*tcp-stream-whostate* "Open Connection"))
				(open-easy-tcp-stream (send (si:parse-host host) :name)
						      (sym-value 'ipport-finger)
						      nil
						      :keyword "FINGER User"
						      :input-buffers 1
						      :output-buffers 1)))
      (let ((ascii-output (ftp:make-ascii-translating-output-stream stream nil))
	    (ascii-input (ftp:make-ascii-translating-input-stream stream nil))
	    (tcp:*tcp-stream-whostate* "Finger"))
	(when (and user (> (string-length user) 0))
	  (princ user ascii-output))
	(terpri ascii-output)
	(send stream :force-output)
	(format ostream "~2&")
	(when (eq style :brackets)
	  (format ostream "[~A]~%" (send (si:parse-host host) :name)))
	(global:stream-copy-until-eof ascii-input ostream)))))

))

(export 'net:define-network-function (find-package "NETWORK"))

