1
0
mirror of synced 2026-01-12 00:42:56 +00:00

WHERE-IS error handling improvement (#2235)

For loadup --aux reporting of errors during building whereis.hash:
Just ignore pathnames that are just a directory.
For other errors, report the condition that caused the error, instead of just generic Warning message
This commit is contained in:
Matt Heffron 2025-08-11 11:56:00 -07:00 committed by GitHub
parent 37aef55990
commit 305c419b1d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 90 additions and 81 deletions

View File

@ -1,12 +1,13 @@
(DEFINE-FILE-INFO PACKAGE "XEROX-COMMON-LISP" READTABLE "XCL" BASE 10)
(IL:FILECREATED "30-Apr-2023 13:54:00" IL:|{DSK}<home>larry>il>medley>library>WHERE-IS.;2| 17396
(IL:FILECREATED "30-Jul-2025 16:15:16" IL:|{DSK}<home>matt>Interlisp>medley>library>WHERE-IS.;5| 17827
:EDIT-BY "lmm"
:EDIT-BY "mth"
:CHANGES-TO (IL:FUNCTIONS ADD-WHERE-IS-DATABASE)
:CHANGES-TO (IL:FUNCTIONS WHERE-IS-READ-COMS WHERE-IS-NOTICE)
:PREVIOUS-DATE "11-Mar-2022 22:40:32" IL:|{DSK}<home>larry>il>medley>library>WHERE-IS.;1|)
:PREVIOUS-DATE "30-Apr-2023 13:54:00" IL:|{DSK}<home>matt>Interlisp>medley>library>WHERE-IS.;1|
)
(IL:PRETTYCOMPRINT IL:WHERE-ISCOMS)
@ -204,60 +205,62 @@
(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
(TEMP-FILE NIL)) (IL:* IL:\; "Edited 29-Jul-2025 23:55 by mth")
(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))
(WHEN (PATHNAME-NAME PATHNAME) (IL:* IL:\; "Skip directory entries")
(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")
(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)
(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.")
(IL:* IL:|;;| "IL:INFILECOMS? sometimes returns T.")
(DOLIST (NAME NAMES)
(WHERE-IS-NOTICE-INTERNAL NAME TYPE 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)))))
(DOLIST (NAME NAMES)
(WHERE-IS-NOTICE-INTERNAL NAME TYPE 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)))))
(DEFUN WHERE-IS-NOTICE-INTERNAL (NAME TYPE FILE-NAME HASH-FILE:HASH-FILE)
@ -318,7 +321,7 @@
NIL
(PATHNAME-TYPE PATHNAME)))))
(DEFUN WHERE-IS-READ-COMS (PATHNAME)
(DEFUN WHERE-IS-READ-COMS (PATHNAME) (IL:* IL:\; "Edited 30-Jul-2025 16:13 by mth")
(IL:* IL:|;;;| "returns as first value a list of the filevars on PATHNAME, as second value a list of the values for these filevars.")
@ -330,23 +333,28 @@
(DO ((IL:LOAD-VERBOSE-STREAM 'NIL)
(ALL-FILE-VARS)
(QUEUE (LIST (IL:FILECOMS (STRING-UPCASE (PATHNAME-NAME PATHNAME))))
(COND
((CONSP (IL:NLSETQ (IL:LOADVARS QUEUE PATHNAME NIL)))
(MAPCAN #'(LAMBDA (FILE-VAR)
(IF (BOUNDP FILE-VAR)
(LET ((FILE-VARS (IL:INFILECOMS? NIL 'IL:FILEVARS
FILE-VAR)))
(PUSH FILE-VAR ALL-FILE-VARS)
(WHEN (CONSP FILE-VARS)
FILE-VARS))
(PROG1 NIL
(WARN "Couldn't find ~S on ~A." FILE-VAR (NAMESTRING
PATHNAME))))
)
QUEUE))
(T (WARN "Error attempting to LOADVARS ~S from ~A." QUEUE (NAMESTRING PATHNAME)
)
'NIL))))
(MULTIPLE-VALUE-BIND
(LV-RESULT ERROR-CONDITION)
(IGNORE-ERRORS (IL:LOADVARS QUEUE PATHNAME NIL))
(COND
((CONSP LV-RESULT)
(MAPCAN #'(LAMBDA (FILE-VAR)
(IF (BOUNDP FILE-VAR)
(LET ((FILE-VARS (IL:INFILECOMS? NIL 'IL:FILEVARS
FILE-VAR)))
(PUSH FILE-VAR ALL-FILE-VARS)
(WHEN (CONSP FILE-VARS)
FILE-VARS))
(PROG1 NIL
(WARN "Couldn't find ~S on ~A." FILE-VAR
(NAMESTRING PATHNAME)))))
QUEUE))
(ERROR-CONDITION (WARN
"Error attempting to LOADVARS ~S from ~A.~%Condition: ~A"
QUEUE (NAMESTRING PATHNAME)
ERROR-CONDITION)
'NIL)
(T NIL)))))
((NULL QUEUE)
(SETQ ALL-FILE-VARS (NREVERSE ALL-FILE-VARS))
(VALUES ALL-FILE-VARS (MAPCAR #'SYMBOL-VALUE ALL-FILE-VARS)))
@ -379,14 +387,15 @@
(IL:PUTPROPS IL:WHERE-IS IL:MAKEFILE-ENVIRONMENT (:READTABLE "XCL" :PACKAGE "XCL"))
(IL:PUTPROPS IL:WHERE-IS IL:FILETYPE :COMPILE-FILE)
(IL:PUTPROPS IL:WHERE-IS IL:COPYRIGHT (IL:NONE))
(IL:DECLARE\: IL:DONTCOPY
(IL:FILEMAP (NIL (1737 2069 (HASH-FILE-WHERE-IS 1737 . 2069)) (2071 2464 (HASH-FILE-TYPES-OF 2071 .
2464)) (2466 4631 (GET-WHERE-IS-ENTRIES 2466 . 4631)) (4633 5148 (WHERE-IS-READ-FN 4633 . 5148)) (5150
5306 (ADD-WHERE-IS-DATABASES 5150 . 5306)) (5308 5695 (ADD-WHERE-IS-DATABASE 5308 . 5695)) (5697 6176
(DEL-WHERE-IS-DATABASE 5697 . 6176)) (6178 7330 (SAME-WHERE-IS-DATABASE 6178 . 7330)) (7332 8539 (
CLOSE-WHERE-IS-FILES 7332 . 8539)) (8797 12214 (WHERE-IS-NOTICE 8797 . 12214)) (12216 12960 (
WHERE-IS-NOTICE-INTERNAL 12216 . 12960)) (12962 13698 (WHERE-IS-FILES 12962 . 13698)) (13700 14065 (
WHERE-IS-DEFAULT-DEFINE-TYPES 13700 . 14065)) (14067 14486 (WHERE-IS-NAMESTRING 14067 . 14486)) (14488
16500 (WHERE-IS-READ-COMS 14488 . 16500)) (16502 16773 (WHERE-IS-SET-WRITE-DATE 16502 . 16773)) (
16775 17025 (WHERE-IS-GET-WRITE-DATE 16775 . 17025)))))
(IL:FILEMAP (NIL (1763 2095 (HASH-FILE-WHERE-IS 1763 . 2095)) (2097 2490 (HASH-FILE-TYPES-OF 2097 .
2490)) (2492 4657 (GET-WHERE-IS-ENTRIES 2492 . 4657)) (4659 5174 (WHERE-IS-READ-FN 4659 . 5174)) (5176
5332 (ADD-WHERE-IS-DATABASES 5176 . 5332)) (5334 5721 (ADD-WHERE-IS-DATABASE 5334 . 5721)) (5723 6202
(DEL-WHERE-IS-DATABASE 5723 . 6202)) (6204 7356 (SAME-WHERE-IS-DATABASE 6204 . 7356)) (7358 8565 (
CLOSE-WHERE-IS-FILES 7358 . 8565)) (8823 12278 (WHERE-IS-NOTICE 8823 . 12278)) (12280 13024 (
WHERE-IS-NOTICE-INTERNAL 12280 . 13024)) (13026 13762 (WHERE-IS-FILES 13026 . 13762)) (13764 14129 (
WHERE-IS-DEFAULT-DEFINE-TYPES 13764 . 14129)) (14131 14550 (WHERE-IS-NAMESTRING 14131 . 14550)) (14552
16882 (WHERE-IS-READ-COMS 14552 . 16882)) (16884 17155 (WHERE-IS-SET-WRITE-DATE 16884 . 17155)) (
17157 17407 (WHERE-IS-GET-WRITE-DATE 17157 . 17407)))))
IL:STOP

Binary file not shown.