(DEFINE-FILE-INFO PACKAGE "XCL" READTABLE "XCL" BASE 10)
(IL:FILECREATED "15-Jan-88 18:24:54" IL:{QV}<NOTECARDS>1.3LNEXT>WHERE-IS-PATCH.\;2 4178   

      IL:|changes| IL:|to:|  (IL:VARS IL:WHERE-IS-PATCHCOMS)
                             (IL:PROPS (IL:WHERE-IS-PATCH IL:MAKEFILE-ENVIRONMENT))

      IL:|previous| IL:|date:| "15-Jan-88 18:23:01" IL:{QV}<NOTECARDS>1.3LNEXT>WHERE-IS-PATCH.\;1)


; Copyright (c) 1988 by Xerox Corporation.  All rights reserved.

(IL:PRETTYCOMPRINT IL:WHERE-IS-PATCHCOMS)

(IL:RPAQQ IL:WHERE-IS-PATCHCOMS ((IL:FILES (IL:FROM IL:LISPUSERS)
                                        IL:NEW-WHERE-IS)
                                 (IL:FUNCTIONS WHERE-IS-NOTICE)
                                 (IL:PROP (IL:FILETYPE IL:MAKEFILE-ENVIRONMENT)
                                        IL:WHERE-IS-PATCH)))
(IL:FILESLOAD (IL:FROM IL:LISPUSERS)
       IL:NEW-WHERE-IS)

(DEFUN WHERE-IS-NOTICE (DATABASE-FILE &KEY (FILES "*.;")
                              (NEW NIL)
                              (USE-FULLNAME NIL)
                              (DEFINE-TYPES (WHERE-IS-DEFAULT-DEFINE-TYPES))
                              (HASH-FILE-SIZE *WHERE-IS-HASH-FILE-SIZE*)
                              (QUIET NIL)
                              (TEMP-FILE NIL))
   (LET*
    ((FILE (IF TEMP-FILE (IF NEW TEMP-FILE (IL:COPYFILE DATABASE-FILE TEMP-FILE))
               DATABASE-FILE))
     (HASH-FILE:HASH-FILE (IF NEW (HASH-FILE:MAKE-HASH-FILE FILE HASH-FILE-SIZE)
                              (HASH-FILE:OPEN-HASH-FILE FILE :DIRECTION :IO)))
     (HASH-FILE::*DELETE-OLD-VERSION-ON-REHASH* T))
    (UNWIND-PROTECT
     (DOLIST
      (PATHNAME (WHERE-IS-FILES FILES))
      (UNLESS QUIET (FORMAT T ";;; ~A ." (NAMESTRING PATHNAME)))
      (LET ((NAMESTRING (WHERE-IS-NAMESTRING PATHNAME)))
           (IF (AND (NOT NEW)
                    (LET ((OLD-WRITE-DATE (WHERE-IS-GET-WRITE-DATE NAMESTRING HASH-FILE:HASH-FILE)))
                         (AND OLD-WRITE-DATE (= (FILE-WRITE-DATE PATHNAME)
                                                OLD-WRITE-DATE))))
               (UNLESS QUIET (FORMAT T " up to date.~%"))
               (MULTIPLE-VALUE-BIND
                (FILE-VARS VALUES)
                (WHERE-IS-READ-COMS PATHNAME)
                (WHEN FILE-VARS 
          
          (IL:* IL:|;;| "bind the filevars s.t. IL:INFILECOMS? will find them")

                      (PROGV FILE-VARS VALUES (UNLESS QUIET (PRINC "."))
                             (DOLIST (TYPE DEFINE-TYPES)
                                    (LET ((NAMES (IL:INFILECOMS? NIL TYPE (FIRST FILE-VARS))))
                                         (WHEN (CONSP NAMES)
          
          (IL:* IL:|;;| "IL:INFILECOMS? sometimes returns T.")

                                               (DOLIST (NAME NAMES)
                                                      (WHERE-IS-NOTICE-INTERNAL NAME TYPE
                                                             (IF USE-FULLNAME (NAMESTRING PATHNAME)
                                                                 NAMESTRING)
                                                             HASH-FILE:HASH-FILE))))))
                      (WHERE-IS-SET-WRITE-DATE NAMESTRING PATHNAME HASH-FILE:HASH-FILE)
                      (UNLESS QUIET (PRINC ". done.")
                             (TERPRI)))))))
     (HASH-FILE:CLOSE-HASH-FILE HASH-FILE:HASH-FILE))
    (LET ((PATHNAME (PATHNAME (HASH-FILE::HASH-FILE-STREAM HASH-FILE:HASH-FILE))))
         (COND
            (TEMP-FILE (UNLESS QUIET (FORMAT T ";;; Renaming ~A ... " (NAMESTRING PATHNAME)))
                   (MULTIPLE-VALUE-BIND (MERGED TRUE-NAME REAL-TRUE-NAME)
                          (RENAME-FILE PATHNAME DATABASE-FILE)
                          (UNLESS QUIET (FORMAT T "~A~%" (NAMESTRING REAL-TRUE-NAME)))
                          REAL-TRUE-NAME))
            (T PATHNAME)))))


(IL:PUTPROPS IL:WHERE-IS-PATCH IL:FILETYPE :COMPILE-FILE)

(IL:PUTPROPS IL:WHERE-IS-PATCH IL:MAKEFILE-ENVIRONMENT (:PACKAGE "XCL" :READTABLE "XCL" :BASE 10))
(IL:PUTPROPS IL:WHERE-IS-PATCH IL:COPYRIGHT ("Xerox Corporation" 1988))
(IL:DECLARE\: IL:DONTCOPY
  (IL:FILEMAP (NIL)))
IL:STOP