;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:8; Patch-File:T -*- ;;; Patch file for System version 123.240 ;;; Reason: ;;; (si:define-host) did an inadequate job of determining if it was redefining ;;; an existing host. It successfully detected the case where the main name ;;; of the host was a nickname of an existing host, but didn't let you change ;;; the main name and retain the former name as a nickname.... ;;; Written 25-Apr-88 17:03:33 by pld at site Gigamos Cambridge ;;; while running on Cthulhu from band 1 ;;; with Experimental System 123.239, Experimental Local-File 73.4, Experimental FILE-Server 22.2, Experimental Unix-Interface 11.0, Experimental KERMIT 34.3, Experimental ZMail 71.0, Experimental Lambda-Diag 15.0, Experimental Tape 22.1, microcode 1755, SDU Boot Tape 3.14, SDU ROM 8, the old ones. ; From modified file DJ: L.NETWORK; HOST.LISP#157 at 25-Apr-88 17:03:34 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "DJ: L.NETWORK; HOST.#" (DEFUN DEFINE-HOST (NAME &REST OPTIONS) "Define a host. Should be used only in SYS:SITE;HSTTBL LISP." (let (name-list system-type-internal machine-type-internal addresses elem old-p) (loop for (option value) on options by 'cddr do (case option (:host-names (setq name-list value)) (:system-type (setq system-type-internal value)) (:machine-type (setq machine-type-internal value)) (otherwise (setq addresses (append (list option value) addresses))))) (setq elem (or (block found (dolist (host host-alist) (dolist (name name-list) (when (member-equalp name (host-name-list host)) (setq old-p t) (return-from found host))))) (make-host-alist-elem))) (setf (host-name elem) name) (setf (host-name-list elem) name-list) (setf (host-system-type-internal elem) system-type-internal) (setf (host-machine-type-internal elem) machine-type-internal) (setf (host-addresses elem) addresses) (cond ((consp (host-site-name elem)) ;Site is a list -- add this site to list (pushnew site-name (host-site-name elem))) ((null (host-site-name elem)) ;Site is unspecified -- set it to this site (setf (host-site-name elem) site-name)) ((neq (host-site-name elem) site-name);Site is specified but different -- create list (setf (host-site-name elem) (list site-name (host-site-name elem))))) (IF (NOT OLD-P) (PUSH ELEM HOST-ALIST) ;; It changed flavors, due to network or OS change. Just ignore it for now. (LET ((OLD-INSTANCE (HOST-INSTANCE ELEM))) (WHEN OLD-INSTANCE (LET ((FLAVOR (COMPUTE-HOST-FLAVOR ELEM))) (WHEN (NEQ FLAVOR (TYPE-OF OLD-INSTANCE)) (FORMAT *ERROR-OUTPUT* "~&[Sorry, can't change ~A's flavor.]~%" (HOST-NAME ELEM)) ;;Invalidate host. (Thats nasty. -gjc) (SETF (HOST-ADDRESSES ELEM) NIL))) ;; needed because this may depend on :special-file-hosts which may change. (SEND OLD-INSTANCE :SEND-IF-HANDLES :RESET-SAMPLE-PATHNAME)))))) ))