;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:8; Patch-File:T -*- ;;; Patch file for System version 121.50 ;;; Reason: ;;; SI::*READ-BARF-IF-AUTO-EXPORT?* controls whether the reader is allowed ;;; to intern symbols in an auto-exporting package. ;;; Written 19-Mar-87 13:24:01 by jrm (Joe Marshall) at site LMI Cambridge ;;; while running on Lambda Four A from band 1 ;;; with Experimental System 121.49, Experimental Lambda-Diag 15.0, Experimental ZMail 70.2, Experimental KERMIT 32.0, Experimental Unix-Interface 10.0, Experimental Local-File 72.0, Experimental FILE-Server 21.0, Experimental Tape 13.0, microcode 1742, SDU Boot Tape 3.14, SDU ROM 102, 121.46. ; From modified file DJ: L.IO; READ.LISP#458 at 19-Mar-87 13:24:17 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: IO; READ  " (defvar *read-barf-if-auto-export?* T "T means that the reader is not allowed to intern a symbol in a package that is auto exporting. NIL makes the reader pay attention only to the READ-LOCK feature of the package.") )) ; From modified file DJ: L.IO; READ.LISP#458 at 19-Mar-87 13:24:27 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: IO; READ  " (DEFUN (:PROPERTY PACKAGE-PREFIX STANDARD-READ-FUNCTION) (STREAM STRING IGNORE) (PROG (THING PK ;; Help un-screw the user if *PACKAGE* gets set to NIL. (*PACKAGE* (OR *PACKAGE* PKG-USER-PACKAGE)) INTERNAL-OK ENTIRE-LIST-PREFIXED) ;; Gobble the second colon, if any, and set flag if found. ;; Note that we do not, currently, DO anything with the flag! (MULTIPLE-VALUE-BIND (CH NUM REAL-CH) (XR-XRTYI STREAM NIL T) (IF (= CH #/:) (SETQ INTERNAL-OK T) (IF (= CH #/() (SETQ ENTIRE-LIST-PREFIXED T)) (XR-XRUNTYI STREAM REAL-CH NUM))) ;; Try to find the package. ;;don't try to find packages if we're not interning -- eg #+slime (dis:foo) (UNLESS *READ-SUPPRESS* (DO ((STRING1 (OR STRING ""))) ((SETQ PK (FIND-PACKAGE STRING1 *PACKAGE*))) ;; Package not found. (SIGNAL-PROCEED-CASE ((PKG) 'READ-PACKAGE-NOT-FOUND "Package ~S does not exist." STRING1) (:NO-ACTION (RETURN)) (:NEW-NAME (LET ((*PACKAGE* PKG-USER-PACKAGE)) (SETQ STRING1 (STRING (READ-FROM-STRING PKG))))) (:CREATE-PACKAGE (OR (FIND-PACKAGE STRING1 *PACKAGE*) (MAKE-PACKAGE STRING1)))))) (OR PK (SETQ PK PKG-USER-PACKAGE)) (WHEN STRING (RETURN-READ-STRING STRING)) (LET ((*PACKAGE* PK) (*INHIBIT-READER-SYMBOL-SUBSTITUTION* T) (READ-INTERN-FUNCTION (COND ((OR (AND (PKG-AUTO-EXPORT-P PK) (PACKAGE-USED-BY-LIST PK) *read-barf-if-auto-export?*) (PKG-READ-LOCK-P PK)) 'READ-INTERN-SOFT) ((OR ENTIRE-LIST-PREFIXED (EQ PK *PACKAGE*)) ;; Here for, e.g., SI: while in SI already. ;; Also here for ZWEI:(BP-LINE (POINT)); ;; such constructs are not valid Common Lisp ;; so let's keep their meaning the same. READ-INTERN-FUNCTION) ((OR INTERNAL-OK (PKG-AUTO-EXPORT-P PK) (EQ *READ-SINGLE-COLON-ALLOW-INTERNAL-SYMBOL* T)) 'INTERN) (T 'READ-PACKAGE-PREFIX-EXTERNAL-INTERN)))) (SETQ THING (INTERNAL-READ STREAM T NIL T))) (RETURN (VALUES THING (TYPE-OF THING) T)))) ;T means we already did RETURN-READ-STRING ))