From fb0af3c05f27157c35b6d6783df721421dd91ca8 Mon Sep 17 00:00:00 2001 From: Frank Halasz Date: Tue, 14 Apr 2026 22:36:09 -0700 Subject: [PATCH 01/11] Fix GRAPHER so that when a DISPLAYLINKFN is specified but the specifed function is not defined, it uses the default DRAWLINK function instead and promptprints a notice. --- library/GRAPHER | 317 ++++++++++++++++++++++--------------------- library/GRAPHER.LCOM | Bin 64716 -> 64990 bytes 2 files changed, 164 insertions(+), 153 deletions(-) diff --git a/library/GRAPHER b/library/GRAPHER index 6a3331bf..4ec08f14 100644 --- a/library/GRAPHER +++ b/library/GRAPHER @@ -1,21 +1,18 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "14-Mar-2021 20:40:30"  -{DSK}kaplan>Local>medley3.5>git-medley>library>GRAPHER.;5 214171 +(DEFINE-FILE-INFO :PACKAGE "INTERLISP" :READTABLE "INTERLISP" :BASE 10) - changes to%: (VARS GRAPHERCOMS) +(FILECREATED "14-Apr-2026 22:19:19" {DSK}frank>il>medley>library>GRAPHER.;3 215302 - previous date%: "14-May-2018 10:24:38" -{DSK}kaplan>Local>medley3.5>git-medley>library>GRAPHER.;4) + :EDIT-BY "FGH" + :CHANGES-TO (FNS DISPLAYLINK/RL DISPLAYLINK/LR DISPLAYLINK/BT DISPLAYLINK/TB) + + :PREVIOUS-DATE "14-Mar-2021 20:40:30" {DSK}frank>il>medley>library>GRAPHER.;1) -(* ; " -Copyright (c) 1983-1994, 2018, 2021 by Venue & Xerox Corporation. -") (PRETTYCOMPRINT GRAPHERCOMS) (RPAQQ GRAPHERCOMS - [(COMS (* ; "Graph Editing") + [(COMS (* ; "Graph Editing") (FNS ADD/AND/DISPLAY/LINK APPLYTOSELECTEDNODE CALL.MOVENODEFN CHANGE.NODEFONT.SIZE DEFAULT.ADDNODEFN DELETE/AND/DISPLAY/LINK DISPLAY/NAME DISPLAYGRAPH DISPLAYLINK DISPLAYLINK/BT DISPLAYLINK/LR DISPLAYLINK/RL DISPLAYLINK/TB DISPLAYNODE @@ -38,18 +35,18 @@ Copyright (c) 1983-1994, 2018, 2021 by Venue & Xerox Corporation. (CL:WHEN (GETD 'MODERNWINDOW.SETUP) (MODERNWINDOW.SETUP 'APPLYTOSELECTEDNODE))] - (* ;; "Support for EDITSUBGRAPH and EDITREGION") + (* ;; "Support for EDITSUBGRAPH and EDITREGION") (FNS EDITMOVEREGION EDITMOVESUBTREE NOT.TRACKCURSOR RECURSIVE.COLLECTDESCENDENTS MOVEDESCENDENTS COLLECT.CHILD.NODES CREATE.NEW.NODEPOSITION GETBOXPOSITION.FROMINITIALREGION COLLECTDESCENDENTS)) - (COMS (* ; - "functions for finding larger and smaller fonts") + (COMS (* ; + "functions for finding larger and smaller fonts") (FNS NEXTSIZEFONT DECREASING.FONT.LIST SCALE.FONT) [DECLARE%: DONTEVAL@LOAD DOCOPY (VARS (DECREASING.FONT.LIST (DECREASING.FONT.LIST] (GLOBALVARS DECREASING.FONT.LIST)) - (* ; - "functions for LAYOUTGRAPH And LAYOUTLATTICE") + (* ; + "functions for LAYOUTGRAPH And LAYOUTLATTICE") (FNS BRH/LAYOUT BRH/LAYOUT/DAUGHTERS BRH/OFFSET BRHC/INTERTREE/SPACE BRHC/LAYOUT BRHC/LAYOUT/DAUGHTERS BRHC/LAYOUT/TERMINAL BRHC/OFFSET BRHL/LAYOUT BRHL/LAYOUT/DAUGHTERS BRHL/MOVE/RIGHT BROWSE/LAYOUT/HORIZ BROWSE/LAYOUT/HORIZ/COMPACTLY BROWSE/LAYOUT/LATTICE @@ -95,7 +92,7 @@ Copyright (c) 1983-1994, 2018, 2021 by Venue & Xerox Corporation. (LOCALVARS . T) (RECORDS GRAPHNODE GRAPH) (DECLARE%: DONTCOPY (MACROS HALF)) - (COMS (* ; "Grapher image objects") + (COMS (* ; "Grapher image objects") (FNS GRAPHERIMAGEFNS) (FNS GRAPHERCOPYBUTTONEVENTFN GRAPHOBJ.FINDGRAPH) (FNS ALIGNMENTNODE GRAPHOBJ.CHECKALIGN) @@ -303,96 +300,112 @@ Copyright (c) 1983-1994, 2018, 2021 by Venue & Xerox Corporation. NIL]) (DISPLAYLINK/BT - [LAMBDA (TRANS GNB GNT WIDTH OPERATION STREAM PARAMS) + [LAMBDA (TRANS GNB GNT WIDTH OPERATION STREAM PARAMS) (* ; "Edited 14-Apr-2026 22:08 by FGH") (* ; "Edited 29-Apr-94 13:59 by sybalsky") - (* draws a line from the bottom edge of GNB to the top edge of GNT translated - by TRANS) + (* draws a line from the bottom edge of GNB to the top edge of GNT translated by + TRANS) - (APPLY* (OR (LISTGET PARAMS 'DRAWLINKFN) - 'DRAWLINE) - (IPLUS (fetch XCOORD of TRANS) - (fetch XCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNB))) - (IPLUS (fetch YCOORD of TRANS) - (SUB1 (GN/BOTTOM GNB))) - (IPLUS (fetch XCOORD of TRANS) - (fetch XCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNT))) - (IPLUS (fetch YCOORD of TRANS) - (ADD1 (GN/TOP GNT))) - (OR (LISTGET PARAMS 'LINEWIDTH) - WIDTH 1) - OPERATION STREAM (LISTGET PARAMS 'COLOR) - (LISTGET PARAMS 'DASHING) - PARAMS]) + (LET* [(FN (LISTGET PARAMS 'DRAWLINKFN)) + (DFN (AND FN (GETD FN] + (if (AND FN (NOT DFN)) + then (PROMPTPRINT (CONCAT "DISPLAYLINK: DRAWLINKFN " FN " NOT FOUND"))) + (APPLY* (OR (AND DFN FN) + 'DRAWLINE) + (IPLUS (fetch XCOORD of TRANS) + (fetch XCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNB))) + (IPLUS (fetch YCOORD of TRANS) + (SUB1 (GN/BOTTOM GNB))) + (IPLUS (fetch XCOORD of TRANS) + (fetch XCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNT))) + (IPLUS (fetch YCOORD of TRANS) + (ADD1 (GN/TOP GNT))) + (OR (LISTGET PARAMS 'LINEWIDTH) + WIDTH 1) + OPERATION STREAM (LISTGET PARAMS 'COLOR) + (LISTGET PARAMS 'DASHING) + PARAMS]) (DISPLAYLINK/LR - [LAMBDA (TRANS GNL GNR WIDTH OPERATION STREAM PARAMS) + [LAMBDA (TRANS GNL GNR WIDTH OPERATION STREAM PARAMS) (* ; "Edited 14-Apr-2026 22:09 by FGH") (* ; "Edited 29-Apr-94 13:59 by sybalsky") - (* draws a line from the left edge of GNL to the right edge of GNR, translated - by TRANS) + (* draws a line from the left edge of GNL to the right edge of GNR, translated by + TRANS) - (APPLY* (OR (LISTGET PARAMS 'DRAWLINKFN) - 'DRAWLINE) - (IPLUS (fetch XCOORD of TRANS) - (SUB1 (GN/LEFT GNL))) - (IPLUS (fetch YCOORD of TRANS) - (fetch YCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNL))) - (IPLUS (fetch XCOORD of TRANS) - (ADD1 (GN/RIGHT GNR))) - (IPLUS (fetch YCOORD of TRANS) - (fetch YCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNR))) - (OR (LISTGET PARAMS 'LINEWIDTH) - WIDTH 1) - OPERATION STREAM (LISTGET PARAMS 'COLOR) - (LISTGET PARAMS 'DASHING) - PARAMS]) + (LET* [(FN (LISTGET PARAMS 'DRAWLINKFN)) + (DFN (AND FN (GETD FN] + (if (AND FN (NOT DFN)) + then (PROMPTPRINT (CONCAT "DISPLAYLINK: DRAWLINKFN " FN " NOT FOUND"))) + (APPLY* (OR (AND DFN FN) + 'DRAWLINE) + (IPLUS (fetch XCOORD of TRANS) + (SUB1 (GN/LEFT GNL))) + (IPLUS (fetch YCOORD of TRANS) + (fetch YCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNL))) + (IPLUS (fetch XCOORD of TRANS) + (ADD1 (GN/RIGHT GNR))) + (IPLUS (fetch YCOORD of TRANS) + (fetch YCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNR))) + (OR (LISTGET PARAMS 'LINEWIDTH) + WIDTH 1) + OPERATION STREAM (LISTGET PARAMS 'COLOR) + (LISTGET PARAMS 'DASHING) + PARAMS]) (DISPLAYLINK/RL - [LAMBDA (TRANS GNR GNL WIDTH OPERATION STREAM PARAMS) + [LAMBDA (TRANS GNR GNL WIDTH OPERATION STREAM PARAMS) (* ; "Edited 14-Apr-2026 22:09 by FGH") (* ; "Edited 29-Apr-94 13:59 by sybalsky") - (* draws a line from the right edge of GNR, to the left edge of GNL translated - by TRANS) + (* draws a line from the right edge of GNR, to the left edge of GNL translated by + TRANS) - (APPLY* (OR (LISTGET PARAMS 'DRAWLINKFN) - 'DRAWLINE) - (IPLUS (fetch XCOORD of TRANS) - (ADD1 (GN/RIGHT GNR))) - (IPLUS (fetch YCOORD of TRANS) - (fetch YCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNR))) - (IPLUS (fetch XCOORD of TRANS) - (SUB1 (GN/LEFT GNL))) - (IPLUS (fetch YCOORD of TRANS) - (fetch YCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNL))) - (OR (LISTGET PARAMS 'LINEWIDTH) - WIDTH 1) - OPERATION STREAM (LISTGET PARAMS 'COLOR) - (LISTGET PARAMS 'DASHING) - PARAMS]) + (LET* [(FN (LISTGET PARAMS 'DRAWLINKFN)) + (DFN (AND FN (GETD FN] + (if (AND FN (NOT DFN)) + then (PROMPTPRINT (CONCAT "DISPLAYLINK: DRAWLINKFN " FN " NOT FOUND"))) + (APPLY* (OR (AND DFN FN) + 'DRAWLINE) + (IPLUS (fetch XCOORD of TRANS) + (ADD1 (GN/RIGHT GNR))) + (IPLUS (fetch YCOORD of TRANS) + (fetch YCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNR))) + (IPLUS (fetch XCOORD of TRANS) + (SUB1 (GN/LEFT GNL))) + (IPLUS (fetch YCOORD of TRANS) + (fetch YCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNL))) + (OR (LISTGET PARAMS 'LINEWIDTH) + WIDTH 1) + OPERATION STREAM (LISTGET PARAMS 'COLOR) + (LISTGET PARAMS 'DASHING) + PARAMS]) (DISPLAYLINK/TB - [LAMBDA (TRANS GNT GNB WIDTH OPERATION STREAM PARAMS) + [LAMBDA (TRANS GNT GNB WIDTH OPERATION STREAM PARAMS) (* ; "Edited 14-Apr-2026 22:09 by FGH") (* ; "Edited 29-Apr-94 13:59 by sybalsky") - (* draws a line from the top edge of GNT to the bottom edge of GNR, translated - by TRANS) + (* draws a line from the top edge of GNT to the bottom edge of GNR, translated by + TRANS) - (APPLY* (OR (LISTGET PARAMS 'DRAWLINKFN) - 'DRAWLINE) - (IPLUS (fetch XCOORD of TRANS) - (fetch XCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNT))) - (IPLUS (fetch YCOORD of TRANS) - (ADD1 (GN/TOP GNT))) - (IPLUS (fetch XCOORD of TRANS) - (fetch XCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNB))) - (IPLUS (fetch YCOORD of TRANS) - (SUB1 (GN/BOTTOM GNB))) - (OR (LISTGET PARAMS 'LINEWIDTH) - WIDTH 1) - OPERATION STREAM (LISTGET PARAMS 'COLOR) - (LISTGET PARAMS 'DASHING) - PARAMS]) + (LET* [(FN (LISTGET PARAMS 'DRAWLINKFN)) + (DFN (AND FN (GETD FN] + (if (AND FN (NOT DFN)) + then (PROMPTPRINT (CONCAT "DISPLAYLINK: DRAWLINKFN " FN " NOT FOUND"))) + (APPLY* (OR (AND DFN FN) + 'DRAWLINE) + (IPLUS (fetch XCOORD of TRANS) + (fetch XCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNT))) + (IPLUS (fetch YCOORD of TRANS) + (ADD1 (GN/TOP GNT))) + (IPLUS (fetch XCOORD of TRANS) + (fetch XCOORD of (fetch (GRAPHNODE NODEPOSITION) of GNB))) + (IPLUS (fetch YCOORD of TRANS) + (SUB1 (GN/BOTTOM GNB))) + (OR (LISTGET PARAMS 'LINEWIDTH) + WIDTH 1) + OPERATION STREAM (LISTGET PARAMS 'COLOR) + (LISTGET PARAMS 'DASHING) + PARAMS]) (DISPLAYNODE [LAMBDA (NODE TRANS STREAM G TOSONLY) (* kvl "10-Aug-84 19:08") @@ -2014,7 +2027,7 @@ Copyright (c) 1983-1994, 2018, 2021 by Venue & Xerox Corporation. of N]) ) - (* Was MODERNIZE loaded before?) + (* Was MODERNIZE loaded before?) (CL:WHEN (GETD 'MODERNWINDOW.SETUP) (MODERNWINDOW.SETUP 'APPLYTOSELECTEDNODE)) @@ -3075,7 +3088,7 @@ Copyright (c) 1983-1994, 2018, 2021 by Venue & Xerox Corporation. (RPAQQ GRAPH/HARDCOPY/FORMAT (MODE PORTRAIT PAGENUMBERS T TRANS NIL)) (RPAQ? DEFAULT.GRAPH.WINDOWSIZE (LIST (TIMES SCREENWIDTH 0.7) - (TIMES SCREENHEIGHT 0.4))) + (TIMES SCREENHEIGHT 0.4))) (RPAQ? EDITGRAPHMENUCOMMANDS '((Move% Node 'MOVENODE "Moves a single node in the graph." (SUBITEMS (|Move Single Node| @@ -3113,19 +3126,19 @@ Copyright (c) 1983-1994, 2018, 2021 by Venue & Xerox Corporation. (DECLARE%: EVAL@COMPILE (RECORD GRAPHNODE (NODEID NODEPOSITION NODELABELBITMAP NIL NODELABELSHADE NODEWIDTH NODEHEIGHT - TONODES FROMNODES NODEFONT NODELABEL NODEBORDER) - NODEBORDER _ DEFAULT.GRAPH.NODEBORDER NODELABELSHADE _ - DEFAULT.GRAPH.NODELABELSHADE NODEFONT _ DEFAULT.GRAPH.NODEFONT) + TONODES FROMNODES NODEFONT NODELABEL NODEBORDER) + NODEBORDER _ DEFAULT.GRAPH.NODEBORDER NODELABELSHADE _ DEFAULT.GRAPH.NODELABELSHADE + NODEFONT _ DEFAULT.GRAPH.NODEFONT) -(RECORD GRAPH (GRAPHNODES SIDESFLG DIRECTEDFLG GRAPH.MOVENODEFN GRAPH.ADDNODEFN - GRAPH.DELETENODEFN GRAPH.ADDLINKFN GRAPH.DELETELINKFN GRAPH.FONTCHANGEFN - GRAPH.INVERTBORDERFN GRAPH.INVERTLABELFN GRAPH.CHANGELABELFN . GRAPH.PROPS)) +(RECORD GRAPH (GRAPHNODES SIDESFLG DIRECTEDFLG GRAPH.MOVENODEFN GRAPH.ADDNODEFN GRAPH.DELETENODEFN + GRAPH.ADDLINKFN GRAPH.DELETELINKFN GRAPH.FONTCHANGEFN GRAPH.INVERTBORDERFN + GRAPH.INVERTLABELFN GRAPH.CHANGELABELFN . GRAPH.PROPS)) ) (DECLARE%: DONTCOPY (DECLARE%: EVAL@COMPILE (PUTPROPS HALF MACRO ((X) - (LRSH X 1))) + (LRSH X 1))) ) ) @@ -3789,61 +3802,59 @@ Copyright (c) 1983-1994, 2018, 2021 by Venue & Xerox Corporation. ) (ADDTOVAR IMAGEOBJGETFNS (GRAPHOBJ.GETFN)) -(PUTPROPS GRAPHER COPYRIGHT ("Venue & Xerox Corporation" 1983 1984 1985 1986 1987 1988 1989 1990 1991 -1992 1993 1994 2018 2021)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (7195 111244 (ADD/AND/DISPLAY/LINK 7205 . 7907) (APPLYTOSELECTEDNODE 7909 . 8397) ( -CALL.MOVENODEFN 8399 . 8748) (CHANGE.NODEFONT.SIZE 8750 . 10062) (DEFAULT.ADDNODEFN 10064 . 10862) ( -DELETE/AND/DISPLAY/LINK 10864 . 12431) (DISPLAY/NAME 12433 . 12604) (DISPLAYGRAPH 12606 . 14977) ( -DISPLAYLINK 14979 . 17532) (DISPLAYLINK/BT 17534 . 18556) (DISPLAYLINK/LR 18558 . 19581) ( -DISPLAYLINK/RL 19583 . 20606) (DISPLAYLINK/TB 20608 . 21631) (DISPLAYNODE 21633 . 21981) ( -ERASE/GRAPHNODE 21983 . 23090) (DISPLAYNODE 23092 . 23440) (DISPLAYNODELINKS 23442 . 24586) ( -DRAW/GRAPHNODE/BORDER 24588 . 25507) (DRAWAREABOX 25509 . 26710) (EDITADDLINK 26712 . 27110) ( -EDITADDNODE 27112 . 29201) (EDITAPPLYTOLINK 29203 . 31282) (EDITCHANGEFONT 31284 . 32456) ( -EDITCHANGELABEL 32458 . 33999) (EDITDELETELINK 34001 . 34407) (EDITDELETENODE 34409 . 37110) ( -EDITGRAPH 37112 . 37179) (EDITGRAPH1 37181 . 37939) (EDITGRAPH2 37941 . 39672) (EDITMOVENODE 39674 . -41251) (EDITTOGGLEBORDER 41253 . 42549) (EDITTOGGLELABEL 42551 . 43848) (FILL/GRAPHNODE/LABEL 43850 . -44678) (FIX/SCALE 44680 . 45236) (FLIPNODE 45238 . 45842) (FONTNAMELIST 45844 . 46063) (FROMLINKS -46065 . 46235) (GETNODEFROMID 46237 . 47256) (GN/BOTTOM 47258 . 47534) (GN/LEFT 47536 . 47809) ( -GN/RIGHT 47811 . 48202) (GN/TOP 48204 . 48628) (GRAPHADDLINK 48630 . 49189) (GRAPHADDNODE 49191 . -49980) (GRAPHBUTTONEVENTFN 49982 . 52162) (GRAPHCHANGELABEL 52164 . 52607) (GRAPHDELETELINK 52609 . -53917) (GRAPHDELETENODE 53919 . 54451) (GRAPHEDITCOMMANDFN 54453 . 55837) (GRAPHEDITEVENTFN 55839 . -56550) (GRAPHER/CENTERPRINTINAREA 56552 . 57316) (GRAPHERPROP 57318 . 57862) (GRAPHNODE/BORDER/WIDTH -57864 . 58385) (GRAPHREGION 58387 . 59556) (HARDCOPYGRAPH 59558 . 66940) (INTERSECT/REGIONP/LBWH 66942 - . 68218) (INVERTED/GRAPHNODE/BORDER 68220 . 68804) (INVERTED/SHADE/FOR/GRAPHER 68806 . 69438) ( -LAYOUT/POSITION 69440 . 69619) (LINKPARAMETERS 69621 . 70073) (MAX/RIGHT 70075 . 70277) (MAX/TOP 70279 - . 70477) (MEASUREGRAPHNODE 70479 . 70928) (MEMBTONODES 70930 . 71455) (MIN/BOTTOM 71457 . 71838) ( -MIN/LEFT 71840 . 72215) (MOVENODE 72217 . 73460) (NODECREATE 73462 . 74242) (NODELST/AS/MENU 74244 . -75844) (NODEREGION 75846 . 76306) (PRINTDISPLAYNODE 76308 . 81366) (PROMPTINWINDOW 81368 . 84177) ( -READ/NODE 84179 . 85293) (REDISPLAYGRAPH 85295 . 85737) (REMOVETONODES 85739 . 86260) ( -RESET/NODE/BORDER 86262 . 88049) (RESET/NODE/LABELSHADE 88051 . 89566) (SCALE/GRAPH 89568 . 95854) ( -SCALE/GRAPHNODE/BORDER 95856 . 96551) (SCALE/TONODES 96553 . 97434) (SET/LABEL/SIZE 97436 . 100382) ( -SET/LAYOUT/POSITION 100384 . 100869) (SHOWGRAPH 100871 . 102670) (SIZE/GRAPH/WINDOW 102672 . 106156) ( -TOGGLE/DIRECTEDFLG 106158 . 106788) (TOGGLE/SIDESFLG 106790 . 107278) (TOLINKS 107280 . 107446) ( -TRACKCURSOR 107448 . 108855) (TRACKNODE 108857 . 109493) (TRANSGRAPH 109495 . 111242)) (111485 128102 -(EDITMOVEREGION 111495 . 115298) (EDITMOVESUBTREE 115300 . 117077) (NOT.TRACKCURSOR 117079 . 120057) ( -RECURSIVE.COLLECTDESCENDENTS 120059 . 121547) (MOVEDESCENDENTS 121549 . 123611) (COLLECT.CHILD.NODES -123613 . 124729) (CREATE.NEW.NODEPOSITION 124731 . 125271) (GETBOXPOSITION.FROMINITIALREGION 125273 . -126745) (COLLECTDESCENDENTS 126747 . 128100)) (128166 130455 (NEXTSIZEFONT 128176 . 129366) ( -DECREASING.FONT.LIST 129368 . 129694) (SCALE.FONT 129696 . 130453)) (130679 169831 (BRH/LAYOUT 130689 - . 132433) (BRH/LAYOUT/DAUGHTERS 132435 . 133381) (BRH/OFFSET 133383 . 134061) (BRHC/INTERTREE/SPACE -134063 . 135381) (BRHC/LAYOUT 135383 . 137239) (BRHC/LAYOUT/DAUGHTERS 137241 . 140195) ( -BRHC/LAYOUT/TERMINAL 140197 . 140878) (BRHC/OFFSET 140880 . 141776) (BRHL/LAYOUT 141778 . 144002) ( -BRHL/LAYOUT/DAUGHTERS 144004 . 145762) (BRHL/MOVE/RIGHT 145764 . 146907) (BROWSE/LAYOUT/HORIZ 146909 - . 147633) (BROWSE/LAYOUT/HORIZ/COMPACTLY 147635 . 150441) (BROWSE/LAYOUT/LATTICE 150443 . 151299) ( -BRV/OFFSET 151301 . 152164) (EXTEND/TRANSITION/CHAIN 152166 . 153437) (FOREST/BREAK/CYCLES 153439 . -154369) (INIT/NODES/FOR/LAYOUT 154371 . 155866) (INTERPRET/MARK/FORMAT 155868 . 157135) ( -LATTICE/BREAK/CYCLES 157137 . 157841) (LAYOUTFOREST 157843 . 158544) (LAYOUTGRAPH 158546 . 162013) ( -LAYOUTLATTICE 162015 . 163468) (LAYOUTSEXPR 163470 . 164541) (LAYOUTSEXPR1 164543 . 165245) ( -MARK/GRAPH/NODE 165247 . 165977) (NEW/INSTANCE/OF/GRAPHNODE 165979 . 167348) (RAISE/TRANSITION/CHAIN -167350 . 167751) (REFLECT/GRAPH/DIAGONALLY 167753 . 168482) (REFLECT/GRAPH/HORIZONTALLY 168484 . -169010) (REFLECT/GRAPH/VERTICALLY 169012 . 169536) (SWITCH/NODE/HEIGHT/WIDTH 169538 . 169829)) (173177 - 174528 (GRAPHERIMAGEFNS 173187 . 174526)) (174529 176257 (GRAPHERCOPYBUTTONEVENTFN 174539 . 175518) ( -GRAPHOBJ.FINDGRAPH 175520 . 176255)) (176258 178878 (ALIGNMENTNODE 176268 . 177690) ( -GRAPHOBJ.CHECKALIGN 177692 . 178876)) (178879 194729 (GRAPHEROBJ 178889 . 180635) ( -GRAPHOBJ.BUTTONEVENTINFN 180637 . 182064) (GRAPHOBJ.COPYBUTTONEVENTFN 182066 . 182503) ( -GRAPHOBJ.COPYFN 182505 . 183429) (GRAPHOBJ.DISPLAYFN 183431 . 186246) (GRAPHOBJ.GETALIGN 186248 . -186987) (GRAPHOBJ.GETFN 186989 . 188494) (GRAPHOBJ.IMAGEBOXFN 188496 . 192512) (GRAPHOBJ.PUTALIGN -192514 . 193344) (GRAPHOBJ.PUTFN 193346 . 194727)) (194730 213882 (COPYGRAPH 194740 . 196288) ( -DUMPGRAPH 196290 . 206546) (READGRAPH 206548 . 213880))))) + (FILEMAP (NIL (7149 112538 (ADD/AND/DISPLAY/LINK 7159 . 7861) (APPLYTOSELECTEDNODE 7863 . 8351) ( +CALL.MOVENODEFN 8353 . 8702) (CHANGE.NODEFONT.SIZE 8704 . 10016) (DEFAULT.ADDNODEFN 10018 . 10816) ( +DELETE/AND/DISPLAY/LINK 10818 . 12385) (DISPLAY/NAME 12387 . 12558) (DISPLAYGRAPH 12560 . 14931) ( +DISPLAYLINK 14933 . 17486) (DISPLAYLINK/BT 17488 . 18845) (DISPLAYLINK/LR 18847 . 20205) ( +DISPLAYLINK/RL 20207 . 21565) (DISPLAYLINK/TB 21567 . 22925) (DISPLAYNODE 22927 . 23275) ( +ERASE/GRAPHNODE 23277 . 24384) (DISPLAYNODE 24386 . 24734) (DISPLAYNODELINKS 24736 . 25880) ( +DRAW/GRAPHNODE/BORDER 25882 . 26801) (DRAWAREABOX 26803 . 28004) (EDITADDLINK 28006 . 28404) ( +EDITADDNODE 28406 . 30495) (EDITAPPLYTOLINK 30497 . 32576) (EDITCHANGEFONT 32578 . 33750) ( +EDITCHANGELABEL 33752 . 35293) (EDITDELETELINK 35295 . 35701) (EDITDELETENODE 35703 . 38404) ( +EDITGRAPH 38406 . 38473) (EDITGRAPH1 38475 . 39233) (EDITGRAPH2 39235 . 40966) (EDITMOVENODE 40968 . +42545) (EDITTOGGLEBORDER 42547 . 43843) (EDITTOGGLELABEL 43845 . 45142) (FILL/GRAPHNODE/LABEL 45144 . +45972) (FIX/SCALE 45974 . 46530) (FLIPNODE 46532 . 47136) (FONTNAMELIST 47138 . 47357) (FROMLINKS +47359 . 47529) (GETNODEFROMID 47531 . 48550) (GN/BOTTOM 48552 . 48828) (GN/LEFT 48830 . 49103) ( +GN/RIGHT 49105 . 49496) (GN/TOP 49498 . 49922) (GRAPHADDLINK 49924 . 50483) (GRAPHADDNODE 50485 . +51274) (GRAPHBUTTONEVENTFN 51276 . 53456) (GRAPHCHANGELABEL 53458 . 53901) (GRAPHDELETELINK 53903 . +55211) (GRAPHDELETENODE 55213 . 55745) (GRAPHEDITCOMMANDFN 55747 . 57131) (GRAPHEDITEVENTFN 57133 . +57844) (GRAPHER/CENTERPRINTINAREA 57846 . 58610) (GRAPHERPROP 58612 . 59156) (GRAPHNODE/BORDER/WIDTH +59158 . 59679) (GRAPHREGION 59681 . 60850) (HARDCOPYGRAPH 60852 . 68234) (INTERSECT/REGIONP/LBWH 68236 + . 69512) (INVERTED/GRAPHNODE/BORDER 69514 . 70098) (INVERTED/SHADE/FOR/GRAPHER 70100 . 70732) ( +LAYOUT/POSITION 70734 . 70913) (LINKPARAMETERS 70915 . 71367) (MAX/RIGHT 71369 . 71571) (MAX/TOP 71573 + . 71771) (MEASUREGRAPHNODE 71773 . 72222) (MEMBTONODES 72224 . 72749) (MIN/BOTTOM 72751 . 73132) ( +MIN/LEFT 73134 . 73509) (MOVENODE 73511 . 74754) (NODECREATE 74756 . 75536) (NODELST/AS/MENU 75538 . +77138) (NODEREGION 77140 . 77600) (PRINTDISPLAYNODE 77602 . 82660) (PROMPTINWINDOW 82662 . 85471) ( +READ/NODE 85473 . 86587) (REDISPLAYGRAPH 86589 . 87031) (REMOVETONODES 87033 . 87554) ( +RESET/NODE/BORDER 87556 . 89343) (RESET/NODE/LABELSHADE 89345 . 90860) (SCALE/GRAPH 90862 . 97148) ( +SCALE/GRAPHNODE/BORDER 97150 . 97845) (SCALE/TONODES 97847 . 98728) (SET/LABEL/SIZE 98730 . 101676) ( +SET/LAYOUT/POSITION 101678 . 102163) (SHOWGRAPH 102165 . 103964) (SIZE/GRAPH/WINDOW 103966 . 107450) ( +TOGGLE/DIRECTEDFLG 107452 . 108082) (TOGGLE/SIDESFLG 108084 . 108572) (TOLINKS 108574 . 108740) ( +TRACKCURSOR 108742 . 110149) (TRACKNODE 110151 . 110787) (TRANSGRAPH 110789 . 112536)) (112779 129396 +(EDITMOVEREGION 112789 . 116592) (EDITMOVESUBTREE 116594 . 118371) (NOT.TRACKCURSOR 118373 . 121351) ( +RECURSIVE.COLLECTDESCENDENTS 121353 . 122841) (MOVEDESCENDENTS 122843 . 124905) (COLLECT.CHILD.NODES +124907 . 126023) (CREATE.NEW.NODEPOSITION 126025 . 126565) (GETBOXPOSITION.FROMINITIALREGION 126567 . +128039) (COLLECTDESCENDENTS 128041 . 129394)) (129460 131749 (NEXTSIZEFONT 129470 . 130660) ( +DECREASING.FONT.LIST 130662 . 130988) (SCALE.FONT 130990 . 131747)) (131973 171125 (BRH/LAYOUT 131983 + . 133727) (BRH/LAYOUT/DAUGHTERS 133729 . 134675) (BRH/OFFSET 134677 . 135355) (BRHC/INTERTREE/SPACE +135357 . 136675) (BRHC/LAYOUT 136677 . 138533) (BRHC/LAYOUT/DAUGHTERS 138535 . 141489) ( +BRHC/LAYOUT/TERMINAL 141491 . 142172) (BRHC/OFFSET 142174 . 143070) (BRHL/LAYOUT 143072 . 145296) ( +BRHL/LAYOUT/DAUGHTERS 145298 . 147056) (BRHL/MOVE/RIGHT 147058 . 148201) (BROWSE/LAYOUT/HORIZ 148203 + . 148927) (BROWSE/LAYOUT/HORIZ/COMPACTLY 148929 . 151735) (BROWSE/LAYOUT/LATTICE 151737 . 152593) ( +BRV/OFFSET 152595 . 153458) (EXTEND/TRANSITION/CHAIN 153460 . 154731) (FOREST/BREAK/CYCLES 154733 . +155663) (INIT/NODES/FOR/LAYOUT 155665 . 157160) (INTERPRET/MARK/FORMAT 157162 . 158429) ( +LATTICE/BREAK/CYCLES 158431 . 159135) (LAYOUTFOREST 159137 . 159838) (LAYOUTGRAPH 159840 . 163307) ( +LAYOUTLATTICE 163309 . 164762) (LAYOUTSEXPR 164764 . 165835) (LAYOUTSEXPR1 165837 . 166539) ( +MARK/GRAPH/NODE 166541 . 167271) (NEW/INSTANCE/OF/GRAPHNODE 167273 . 168642) (RAISE/TRANSITION/CHAIN +168644 . 169045) (REFLECT/GRAPH/DIAGONALLY 169047 . 169776) (REFLECT/GRAPH/HORIZONTALLY 169778 . +170304) (REFLECT/GRAPH/VERTICALLY 170306 . 170830) (SWITCH/NODE/HEIGHT/WIDTH 170832 . 171123)) (174438 + 175789 (GRAPHERIMAGEFNS 174448 . 175787)) (175790 177518 (GRAPHERCOPYBUTTONEVENTFN 175800 . 176779) ( +GRAPHOBJ.FINDGRAPH 176781 . 177516)) (177519 180139 (ALIGNMENTNODE 177529 . 178951) ( +GRAPHOBJ.CHECKALIGN 178953 . 180137)) (180140 195990 (GRAPHEROBJ 180150 . 181896) ( +GRAPHOBJ.BUTTONEVENTINFN 181898 . 183325) (GRAPHOBJ.COPYBUTTONEVENTFN 183327 . 183764) ( +GRAPHOBJ.COPYFN 183766 . 184690) (GRAPHOBJ.DISPLAYFN 184692 . 187507) (GRAPHOBJ.GETALIGN 187509 . +188248) (GRAPHOBJ.GETFN 188250 . 189755) (GRAPHOBJ.IMAGEBOXFN 189757 . 193773) (GRAPHOBJ.PUTALIGN +193775 . 194605) (GRAPHOBJ.PUTFN 194607 . 195988)) (195991 215143 (COPYGRAPH 196001 . 197549) ( +DUMPGRAPH 197551 . 207807) (READGRAPH 207809 . 215141))))) STOP diff --git a/library/GRAPHER.LCOM b/library/GRAPHER.LCOM index b2dd5625e741099a250d0bf25b265ecd8651bc21..dc21e426f114d9f997ce55b7598972853c1b2c40 100644 GIT binary patch delta 8335 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 delta 8274 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 From 96c609e5f0e5716c4390eb5da1117fd0ef423772 Mon Sep 17 00:00:00 2001 From: Matt Heffron Date: Mon, 20 Apr 2026 15:27:43 -0700 Subject: [PATCH 02/11] Address the concerns stated in Issue #2568 --- sources/FILEIO | 138 ++++++++++++++++++++++---------------------- sources/FILEIO.LCOM | Bin 45832 -> 45702 bytes 2 files changed, 68 insertions(+), 70 deletions(-) diff --git a/sources/FILEIO b/sources/FILEIO index 433ead86..ad7f48b0 100644 --- a/sources/FILEIO +++ b/sources/FILEIO @@ -1,12 +1,12 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) +(DEFINE-FILE-INFO :PACKAGE "INTERLISP" :READTABLE "INTERLISP" :BASE 10) -(FILECREATED " 6-Feb-2026 23:22:00" {WMEDLEY}FILEIO.;142 166519 +(FILECREATED "20-Apr-2026 15:23:07" {DSK}matt>Interlisp>medley>sources>FILEIO.;3 165719 - :EDIT-BY rmk + :EDIT-BY "mth" - :CHANGES-TO (FNS DIRECTORYNAME) + :CHANGES-TO (FNS \DO.PARAMS.AT.OPEN) - :PREVIOUS-DATE "12-Sep-2025 08:19:06" {WMEDLEY}FILEIO.;141) + :PREVIOUS-DATE " 6-Feb-2026 23:22:00" {DSK}matt>Interlisp>medley>sources>FILEIO.;1) (PRETTYCOMPRINT FILEIOCOMS) @@ -1446,7 +1446,8 @@ (GO RETRY]) (\DO.PARAMS.AT.OPEN - [LAMBDA (STREAM ACCESS PARAMETERS) (* ; "Edited 25-Dec-2024 10:54 by rmk") + [LAMBDA (STREAM ACCESS PARAMETERS) (* ; "Edited 20-Apr-2026 15:22 by mth") + (* ; "Edited 25-Dec-2024 10:54 by rmk") (* ; "Edited 15-Jul-2024 22:29 by rmk") (* ; "Edited 25-Aug-2023 08:43 by rmk") (* ; "Edited 6-Jul-2022 00:00 by rmk") @@ -1469,40 +1470,37 @@ (DECLARE (USEDFREE STREAM-AFTER-OPEN-FNS)) (\EXTERNALFORMAT STREAM :DEFAULT) - [for X ATTR VAL EOL in PARAMETERS do [(COND - [(LISTP X) - (SETQ ATTR (CAR X)) - (SETQ VAL (CAR (LISTP (CDR X] - (T (SETQ ATTR X) - (SETQ VAL T))) - (SELECTQ ATTR - (BUFFERS (SETFILEINFO STREAM 'BUFFERS VAL)) - (ENDOFSTREAMOP (SETFILEINFO STREAM 'ENDOFSTREAMOP VAL)) - (CHARSET (CHARSET STREAM VAL)) - ((FORMAT EXTERNALFORMAT :EXTERNAL-FORMAT) - - (* ;; + [for X ATTR VAL EOL in PARAMETERS + do ((COND + [(LISTP X) + (SETQ ATTR (CAR X)) + (SETQ VAL (CAR (LISTP (CDR X] + (T (SETQ ATTR X) + (SETQ VAL T))) + (SELECTQ ATTR + (BUFFERS (SETFILEINFO STREAM 'BUFFERS VAL)) + (ENDOFSTREAMOP (SETFILEINFO STREAM 'ENDOFSTREAMOP VAL)) + (CHARSET (CHARSET STREAM VAL)) + ((FORMAT EXTERNALFORMAT :EXTERNAL-FORMAT) + (* ;;  "VAL can be :UTF-8, CR, (UTF:8 CR), i.e. specify either one or both") - (if (LISTP VAL) - then (* ; - "VAL could be (:UTF-8 CR) e.g. from CL:OPEN") - (\EXTERNALFORMAT STREAM (CAR VAL)) - (* ; - "Can override the EOL of the format") - (SETQ EOL (CADR VAL)) - elseif (SETQ EOL (CAR) - VAL) - else (\EXTERNALFORMAT STREAM VAL))) - (CONVHANKAKU (CONVHANKAKU STREAM VAL)) - ((EOL EOLCONVENTION EOLC) - (SETQ EOL VAL] finally + + (* ;; "Ignore the case of the non-LISTP X setting VAL to T") - (* ;; + [if (LISTP X) + then (for V in (MKLIST VAL) do (if (FIND-FORMAT V T) + then (\EXTERNALFORMAT STREAM V) + else (SETQ EOL V]) + (CONVHANKAKU (CONVHANKAKU STREAM VAL)) + ((EOL EOLCONVENTION EOLC) + (SETQ EOL VAL)) + NIL)) finally + + (* ;;  "If not specified, default EOL to ANY--SETFILEINFO checks for output streams") - (SETFILEINFO STREAM 'EOL - (OR EOL 'ANY] + (SETFILEINFO STREAM 'EOL (OR EOL 'ANY] (FOR FN IN STREAM-AFTER-OPEN-FNS DO (APPLY* FN STREAM ACCESS PARAMETERS]) (\RENAMEFILE @@ -3161,39 +3159,39 @@ update the map") (ADDTOVAR LAMA \IS.NOT.RANDACCESSP \ILLEGAL.DEVICEOP STREAMPROP) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (27706 31822 (STREAMPROP 27716 . 28150) (GETSTREAMPROP 28152 . 28901) (PUTSTREAMPROP -28903 . 31670) (STREAMP 31672 . 31820)) (31865 35244 (\DEFPRINT.BY.NAME 31875 . 33027) ( -\STREAM.DEFPRINT 33029 . 34937) (\FDEV.DEFPRINT 34939 . 35242)) (35502 40543 (\GETACCESS 35512 . 35966 -) (\SETACCESS 35968 . 40541)) (60769 66738 (\DEFINEDEVICE 60779 . 63095) (\GETDEVICEFROMNAME 63097 . -63570) (\GETDEVICEFROMHOSTNAME 63572 . 64616) (\REMOVEDEVICE 64618 . 65741) (\REMOVEDEVICE.NAMES 65743 - . 66736)) (66778 94509 (\CLOSEFILE 66788 . 67613) (\DELETEFILE 67615 . 67909) (\DEVICEEVENT 67911 . -69681) (\GENERATEFILES 69683 . 70630) (\GENERATENEXTFILE 70632 . 71283) (\GENERATEFILEINFO 71285 . -71746) (\GETFILENAME 71748 . 72137) (\GENERIC.OUTFILEP 72139 . 72609) (\OPENFILE 72611 . 75189) ( -\DO.PARAMS.AT.OPEN 75191 . 79387) (\RENAMEFILE 79389 . 80345) (\REVALIDATEFILE 80347 . 82949) ( -\PAGED.REVALIDATEFILELST 82951 . 84509) (\PAGED.REVALIDATEFILES 84511 . 86230) (\PAGED.REVALIDATEFILE -86232 . 88515) (\BUFFERED.REVALIDATEFILE 88517 . 90803) (\BUFFERED.REVALIDATEFILELST 90805 . 91989) ( -\PRINT-REVALIDATION-RESULT 91991 . 92833) (\TRUNCATEFILE 92835 . 93226) (\FILE-CONFLICT 93228 . 94507) -) (94545 99208 (\GENERATENOFILES 94555 . 96651) (\NULLFILEGENERATOR 96653 . 96897) (\NOFILESNEXTFILEFN - 96899 . 98890) (\NOFILESINFOFN 98892 . 99206)) (99327 101235 (\FILE.NOT.OPEN 99337 . 99850) ( -\FILE.WONT.OPEN 99852 . 100180) (\ILLEGAL.DEVICEOP 100182 . 100464) (\IS.NOT.RANDACCESSP 100466 . -100912) (\STREAM.NOT.OPEN 100914 . 101233)) (101370 103668 (\FDEVINSTANCE 101380 . 103666)) (104870 -111841 (CNDIR 104880 . 106185) (DIRECTORYNAME 106187 . 109967) (DIRECTORYNAMEP 109969 . 110585) ( -HOSTNAMEP 110587 . 111394) (\ADD.CONNECTED.DIR 111396 . 111839)) (111886 140833 (\BACKFILEPTR 111896 - . 112084) (\BACKPEEKBIN 112086 . 112447) (\BACKBIN 112449 . 112800) (BIN 112802 . 113019) (\BIN -113021 . 113298) (\BINS 113300 . 113586) (BOUT 113588 . 113950) (\BOUT 113952 . 114267) (\BOUTS 114269 - . 114580) (COPYBYTES 114582 . 117914) (COPYCHARS 117916 . 121714) (COPYFILE 121716 . 123076) ( -\COPYOPENFILE 123078 . 126277) (\INFER.FILE.TYPE 126279 . 127233) (EOFP 127235 . 127532) (FORCEOUTPUT -127534 . 127781) (\FLUSH.OPEN.STREAMS 127783 . 128139) (CHARSET 128141 . 129500) (ACCESS-CHARSET -129502 . 130139) (GETEOFPTR 130141 . 130391) (GETFILEINFO 130393 . 133586) (\TYPE.FROM.FILETYPE 133588 - . 134058) (\FILETYPE.FROM.TYPE 134060 . 134239) (GETFILEPTR 134241 . 134493) (SETFILEINFO 134495 . -138732) (SETFILEPTR 138734 . 140453) (BOUT16 140455 . 140640) (BIN16 140642 . 140831)) (140936 148116 -(\GENERIC.BINS 140946 . 141226) (\GENERIC.BOUTS 141228 . 141493) (\GENERIC.RENAMEFILE 141495 . 143743) - (\GENERIC.OPENP 143745 . 145060) (\GENERIC.READP 145062 . 146214) (\GENERIC.CHARSET 146216 . 148114)) - (148117 148456 (\MAP-OPEN-STREAMS 148127 . 148454)) (150311 152391 (\EOF.ACTION 150321 . 150572) ( -\EOSERROR 150574 . 150767) (\GETEOFPTR 150769 . 150951) (\INCFILEPTR 150953 . 151303) (\PEEKBIN 151305 - . 151496) (\SETCLOSEDFILELENGTH 151498 . 151832) (\SETEOFPTR 151834 . 152022) (\SETFILEPTR 152024 . -152389)) (152392 152934 (\FIXPOUT 152402 . 152702) (\FIXPIN 152704 . 152932)) (152935 153501 (\BOUTEOL - 152945 . 153499)) (156397 166261 (\BUFFERED.BIN 156407 . 157259) (\BUFFERED.PEEKBIN 157261 . 158043) -(\BUFFERED.BOUT 158045 . 158905) (\BUFFERED.BINS 158907 . 162592) (\BUFFERED.BOUTS 162594 . 164395) ( -\BUFFERED.COPYBYTES 164397 . 166259))))) + (FILEMAP (NIL (27755 31871 (STREAMPROP 27765 . 28199) (GETSTREAMPROP 28201 . 28950) (PUTSTREAMPROP +28952 . 31719) (STREAMP 31721 . 31869)) (31914 35293 (\DEFPRINT.BY.NAME 31924 . 33076) ( +\STREAM.DEFPRINT 33078 . 34986) (\FDEV.DEFPRINT 34988 . 35291)) (35551 40592 (\GETACCESS 35561 . 36015 +) (\SETACCESS 36017 . 40590)) (60818 66787 (\DEFINEDEVICE 60828 . 63144) (\GETDEVICEFROMNAME 63146 . +63619) (\GETDEVICEFROMHOSTNAME 63621 . 64665) (\REMOVEDEVICE 64667 . 65790) (\REMOVEDEVICE.NAMES 65792 + . 66785)) (66827 93709 (\CLOSEFILE 66837 . 67662) (\DELETEFILE 67664 . 67958) (\DEVICEEVENT 67960 . +69730) (\GENERATEFILES 69732 . 70679) (\GENERATENEXTFILE 70681 . 71332) (\GENERATEFILEINFO 71334 . +71795) (\GETFILENAME 71797 . 72186) (\GENERIC.OUTFILEP 72188 . 72658) (\OPENFILE 72660 . 75238) ( +\DO.PARAMS.AT.OPEN 75240 . 78587) (\RENAMEFILE 78589 . 79545) (\REVALIDATEFILE 79547 . 82149) ( +\PAGED.REVALIDATEFILELST 82151 . 83709) (\PAGED.REVALIDATEFILES 83711 . 85430) (\PAGED.REVALIDATEFILE +85432 . 87715) (\BUFFERED.REVALIDATEFILE 87717 . 90003) (\BUFFERED.REVALIDATEFILELST 90005 . 91189) ( +\PRINT-REVALIDATION-RESULT 91191 . 92033) (\TRUNCATEFILE 92035 . 92426) (\FILE-CONFLICT 92428 . 93707) +) (93745 98408 (\GENERATENOFILES 93755 . 95851) (\NULLFILEGENERATOR 95853 . 96097) (\NOFILESNEXTFILEFN + 96099 . 98090) (\NOFILESINFOFN 98092 . 98406)) (98527 100435 (\FILE.NOT.OPEN 98537 . 99050) ( +\FILE.WONT.OPEN 99052 . 99380) (\ILLEGAL.DEVICEOP 99382 . 99664) (\IS.NOT.RANDACCESSP 99666 . 100112) +(\STREAM.NOT.OPEN 100114 . 100433)) (100570 102868 (\FDEVINSTANCE 100580 . 102866)) (104070 111041 ( +CNDIR 104080 . 105385) (DIRECTORYNAME 105387 . 109167) (DIRECTORYNAMEP 109169 . 109785) (HOSTNAMEP +109787 . 110594) (\ADD.CONNECTED.DIR 110596 . 111039)) (111086 140033 (\BACKFILEPTR 111096 . 111284) ( +\BACKPEEKBIN 111286 . 111647) (\BACKBIN 111649 . 112000) (BIN 112002 . 112219) (\BIN 112221 . 112498) +(\BINS 112500 . 112786) (BOUT 112788 . 113150) (\BOUT 113152 . 113467) (\BOUTS 113469 . 113780) ( +COPYBYTES 113782 . 117114) (COPYCHARS 117116 . 120914) (COPYFILE 120916 . 122276) (\COPYOPENFILE +122278 . 125477) (\INFER.FILE.TYPE 125479 . 126433) (EOFP 126435 . 126732) (FORCEOUTPUT 126734 . +126981) (\FLUSH.OPEN.STREAMS 126983 . 127339) (CHARSET 127341 . 128700) (ACCESS-CHARSET 128702 . +129339) (GETEOFPTR 129341 . 129591) (GETFILEINFO 129593 . 132786) (\TYPE.FROM.FILETYPE 132788 . 133258 +) (\FILETYPE.FROM.TYPE 133260 . 133439) (GETFILEPTR 133441 . 133693) (SETFILEINFO 133695 . 137932) ( +SETFILEPTR 137934 . 139653) (BOUT16 139655 . 139840) (BIN16 139842 . 140031)) (140136 147316 ( +\GENERIC.BINS 140146 . 140426) (\GENERIC.BOUTS 140428 . 140693) (\GENERIC.RENAMEFILE 140695 . 142943) +(\GENERIC.OPENP 142945 . 144260) (\GENERIC.READP 144262 . 145414) (\GENERIC.CHARSET 145416 . 147314)) +(147317 147656 (\MAP-OPEN-STREAMS 147327 . 147654)) (149511 151591 (\EOF.ACTION 149521 . 149772) ( +\EOSERROR 149774 . 149967) (\GETEOFPTR 149969 . 150151) (\INCFILEPTR 150153 . 150503) (\PEEKBIN 150505 + . 150696) (\SETCLOSEDFILELENGTH 150698 . 151032) (\SETEOFPTR 151034 . 151222) (\SETFILEPTR 151224 . +151589)) (151592 152134 (\FIXPOUT 151602 . 151902) (\FIXPIN 151904 . 152132)) (152135 152701 (\BOUTEOL + 152145 . 152699)) (155597 165461 (\BUFFERED.BIN 155607 . 156459) (\BUFFERED.PEEKBIN 156461 . 157243) +(\BUFFERED.BOUT 157245 . 158105) (\BUFFERED.BINS 158107 . 161792) (\BUFFERED.BOUTS 161794 . 163595) ( +\BUFFERED.COPYBYTES 163597 . 165459))))) STOP diff --git a/sources/FILEIO.LCOM b/sources/FILEIO.LCOM index d120ea24e37246efed78f3db67ff19949c783bbb..6f1529722a64ae09767aa49fc410e6b900448c97 100644 GIT binary patch delta 1006 zcmb7Dzi-n}5RMb^D@diKpsEGL$s%fkvo4JPT)ZNFqcJond&28uU2~;zAHx*3)$p|O7Qz9pbX_kc5 zmOCV0J6~PdSa;ho(IakM>DF*ArK0O_GBTM=lHja#u$Jf_lvyz?kcnu#pSM^>l8s~_ z|58)tUuqD3F9H~z%P?6Gk*wNOVJQk^qf;e8ES4l=23eGCLR>K{EPnh!0>t?;T2Rf3 zMaftQZW~W2?rP9m+*paoyKD@uS|A{yxXL+z}T;?1lDK;uo<~%YeEFb~I zg|kE`l3x$uFWO%UWB1RLA_r3eq#vB~T^IYV@rB*cM~{k4-`@7Y!*{_U&G+txUd%cH z{bY#<{#PW<>!3k*>W!&IrzFm1sq!g zitFCD*hKe@w%jX)7k7W$bcit`l$Q$iNa@nZI1V|ij)vkaEkMyU7I1?#Nvq&V;9wao z;$jU+SIqL9WCN4o0gtmx4fZSp_(sYW!akY-{P*XuKj)e3sqIKAb8_zy(-Ykk3&_-q zz_MxIz}b;utEK@g!}k$jvf0z3(mbAtU!sO8F!cZ%3KL*pGRGRT93VqBmEbCoIS&F3 qJw`B)NkO5aD5z`!pB|c6sbnlcpc6O{@w1jHx{V*e{?+*RS3dz2gAbGd delta 1180 zcmaJ=QESss6mD7tt>7F5ohaoP8EcV9?roB`QM74uv!+dxkS245J#8&o-0bKO1d+a} z_#jAMMA#5td~~($ZPIt~#or+MJn&t-NxHdiVhB08-?`^I=Y03vr$3_4e@0U&m1w$2 zI88SQr<)uCz98`5AQU`VA!DG{o7%G(0b3QN|Jr%iY!i zPwUZocVkutRd-0qwVZ~j)Cf$qDZShabUfwfEICARiQ50l%=G?S z6(C6xQ66NX>MmDoKzHpv$fdGk&XYRlT9DGrdVI2+G|09?7Ie$2b1F>(EW%v9weHI! z0-uvnUgl|EVd4w_)&up;cbA4Zy2my|sJpb@8mDMfd(N_n$}td=b=Vwy&|CeBpb@% zW6>xh0i6tW%iPLsGg>wjqWdP0wwggzp_<-LL zFgH2 From b0c6136bd656eedbaf4f4adfd829cde95a7457f3 Mon Sep 17 00:00:00 2001 From: Matt Heffron Date: Tue, 21 Apr 2026 22:14:05 -0700 Subject: [PATCH 03/11] Fixes issues causing crashing during loadups building. --- sources/FILEIO | 141 ++++++++++++++++++++++++-------------------- sources/FILEIO.LCOM | Bin 45702 -> 45838 bytes 2 files changed, 77 insertions(+), 64 deletions(-) diff --git a/sources/FILEIO b/sources/FILEIO index ad7f48b0..115d7836 100644 --- a/sources/FILEIO +++ b/sources/FILEIO @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO :PACKAGE "INTERLISP" :READTABLE "INTERLISP" :BASE 10) -(FILECREATED "20-Apr-2026 15:23:07" {DSK}matt>Interlisp>medley>sources>FILEIO.;3 165719 +(FILECREATED "21-Apr-2026 20:57:55" {DSK}matt>Interlisp>medley>sources>FILEIO.;17 166496 :EDIT-BY "mth" :CHANGES-TO (FNS \DO.PARAMS.AT.OPEN) - :PREVIOUS-DATE " 6-Feb-2026 23:22:00" {DSK}matt>Interlisp>medley>sources>FILEIO.;1) + :PREVIOUS-DATE "21-Apr-2026 20:24:53" {DSK}matt>Interlisp>medley>sources>FILEIO.;15) (PRETTYCOMPRINT FILEIOCOMS) @@ -1446,7 +1446,8 @@ (GO RETRY]) (\DO.PARAMS.AT.OPEN - [LAMBDA (STREAM ACCESS PARAMETERS) (* ; "Edited 20-Apr-2026 15:22 by mth") + [LAMBDA (STREAM ACCESS PARAMETERS) (* ; "Edited 21-Apr-2026 20:57 by mth") + (* ; "Edited 20-Apr-2026 17:36 by mth") (* ; "Edited 25-Dec-2024 10:54 by rmk") (* ; "Edited 15-Jul-2024 22:29 by rmk") (* ; "Edited 25-Aug-2023 08:43 by rmk") @@ -1470,37 +1471,49 @@ (DECLARE (USEDFREE STREAM-AFTER-OPEN-FNS)) (\EXTERNALFORMAT STREAM :DEFAULT) - [for X ATTR VAL EOL in PARAMETERS - do ((COND - [(LISTP X) - (SETQ ATTR (CAR X)) - (SETQ VAL (CAR (LISTP (CDR X] - (T (SETQ ATTR X) - (SETQ VAL T))) - (SELECTQ ATTR - (BUFFERS (SETFILEINFO STREAM 'BUFFERS VAL)) - (ENDOFSTREAMOP (SETFILEINFO STREAM 'ENDOFSTREAMOP VAL)) - (CHARSET (CHARSET STREAM VAL)) - ((FORMAT EXTERNALFORMAT :EXTERNAL-FORMAT) - (* ;; - "VAL can be :UTF-8, CR, (UTF:8 CR), i.e. specify either one or both") + (for X ATTR VAL EOL in PARAMETERS + do (COND + [(LISTP X) + (SETQ ATTR (CAR X)) + (SETQ VAL (CAR (LISTP (CDR X] + (T (SETQ ATTR X) + (SETQ VAL T))) + (SELECTQ ATTR + (BUFFERS (SETFILEINFO STREAM 'BUFFERS VAL)) + (ENDOFSTREAMOP (SETFILEINFO STREAM 'ENDOFSTREAMOP VAL)) + (CHARSET (CHARSET STREAM VAL)) + ((FORMAT EXTERNALFORMAT :EXTERNAL-FORMAT) + (* ;; + "Ignore the case of the non-LISTP X setting VAL to T") - - (* ;; "Ignore the case of the non-LISTP X setting VAL to T") + [if (LISTP X) + then + (* ;; + "VAL can be :UTF-8, CR, (UTF:8 CR), i.e. specify either one or both") - [if (LISTP X) - then (for V in (MKLIST VAL) do (if (FIND-FORMAT V T) - then (\EXTERNALFORMAT STREAM V) - else (SETQ EOL V]) - (CONVHANKAKU (CONVHANKAKU STREAM VAL)) - ((EOL EOLCONVENTION EOLC) - (SETQ EOL VAL)) - NIL)) finally + (for V in (MKLIST VAL) do + (* ;; + "FIND-FORMAT doesn't know about :DEFAULT, so...") - (* ;; + (if (OR (EQ V :DEFAULT) + (FIND-FORMAT V T)) + then (\EXTERNALFORMAT STREAM V) + else (SETQ EOL V]) + (CONVHANKAKU (CONVHANKAKU STREAM VAL)) + ((EOL EOLCONVENTION EOLC) + (SETQ EOL VAL)) + NIL) finally + + (* ;;  "If not specified, default EOL to ANY--SETFILEINFO checks for output streams") - (SETFILEINFO STREAM 'EOL (OR EOL 'ANY] + (* ;; + " Cannot depend on SETFILEINFO checking for ANY on output stream, because it ERRORs!") + + (CL:WHEN (OR (NEQ (SETQ EOL (OR EOL 'ANY)) + 'ANY) + (EQ ACCESS 'INPUT)) + (SETFILEINFO STREAM 'EOL EOL))) (FOR FN IN STREAM-AFTER-OPEN-FNS DO (APPLY* FN STREAM ACCESS PARAMETERS]) (\RENAMEFILE @@ -3159,39 +3172,39 @@ update the map") (ADDTOVAR LAMA \IS.NOT.RANDACCESSP \ILLEGAL.DEVICEOP STREAMPROP) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (27755 31871 (STREAMPROP 27765 . 28199) (GETSTREAMPROP 28201 . 28950) (PUTSTREAMPROP -28952 . 31719) (STREAMP 31721 . 31869)) (31914 35293 (\DEFPRINT.BY.NAME 31924 . 33076) ( -\STREAM.DEFPRINT 33078 . 34986) (\FDEV.DEFPRINT 34988 . 35291)) (35551 40592 (\GETACCESS 35561 . 36015 -) (\SETACCESS 36017 . 40590)) (60818 66787 (\DEFINEDEVICE 60828 . 63144) (\GETDEVICEFROMNAME 63146 . -63619) (\GETDEVICEFROMHOSTNAME 63621 . 64665) (\REMOVEDEVICE 64667 . 65790) (\REMOVEDEVICE.NAMES 65792 - . 66785)) (66827 93709 (\CLOSEFILE 66837 . 67662) (\DELETEFILE 67664 . 67958) (\DEVICEEVENT 67960 . -69730) (\GENERATEFILES 69732 . 70679) (\GENERATENEXTFILE 70681 . 71332) (\GENERATEFILEINFO 71334 . -71795) (\GETFILENAME 71797 . 72186) (\GENERIC.OUTFILEP 72188 . 72658) (\OPENFILE 72660 . 75238) ( -\DO.PARAMS.AT.OPEN 75240 . 78587) (\RENAMEFILE 78589 . 79545) (\REVALIDATEFILE 79547 . 82149) ( -\PAGED.REVALIDATEFILELST 82151 . 83709) (\PAGED.REVALIDATEFILES 83711 . 85430) (\PAGED.REVALIDATEFILE -85432 . 87715) (\BUFFERED.REVALIDATEFILE 87717 . 90003) (\BUFFERED.REVALIDATEFILELST 90005 . 91189) ( -\PRINT-REVALIDATION-RESULT 91191 . 92033) (\TRUNCATEFILE 92035 . 92426) (\FILE-CONFLICT 92428 . 93707) -) (93745 98408 (\GENERATENOFILES 93755 . 95851) (\NULLFILEGENERATOR 95853 . 96097) (\NOFILESNEXTFILEFN - 96099 . 98090) (\NOFILESINFOFN 98092 . 98406)) (98527 100435 (\FILE.NOT.OPEN 98537 . 99050) ( -\FILE.WONT.OPEN 99052 . 99380) (\ILLEGAL.DEVICEOP 99382 . 99664) (\IS.NOT.RANDACCESSP 99666 . 100112) -(\STREAM.NOT.OPEN 100114 . 100433)) (100570 102868 (\FDEVINSTANCE 100580 . 102866)) (104070 111041 ( -CNDIR 104080 . 105385) (DIRECTORYNAME 105387 . 109167) (DIRECTORYNAMEP 109169 . 109785) (HOSTNAMEP -109787 . 110594) (\ADD.CONNECTED.DIR 110596 . 111039)) (111086 140033 (\BACKFILEPTR 111096 . 111284) ( -\BACKPEEKBIN 111286 . 111647) (\BACKBIN 111649 . 112000) (BIN 112002 . 112219) (\BIN 112221 . 112498) -(\BINS 112500 . 112786) (BOUT 112788 . 113150) (\BOUT 113152 . 113467) (\BOUTS 113469 . 113780) ( -COPYBYTES 113782 . 117114) (COPYCHARS 117116 . 120914) (COPYFILE 120916 . 122276) (\COPYOPENFILE -122278 . 125477) (\INFER.FILE.TYPE 125479 . 126433) (EOFP 126435 . 126732) (FORCEOUTPUT 126734 . -126981) (\FLUSH.OPEN.STREAMS 126983 . 127339) (CHARSET 127341 . 128700) (ACCESS-CHARSET 128702 . -129339) (GETEOFPTR 129341 . 129591) (GETFILEINFO 129593 . 132786) (\TYPE.FROM.FILETYPE 132788 . 133258 -) (\FILETYPE.FROM.TYPE 133260 . 133439) (GETFILEPTR 133441 . 133693) (SETFILEINFO 133695 . 137932) ( -SETFILEPTR 137934 . 139653) (BOUT16 139655 . 139840) (BIN16 139842 . 140031)) (140136 147316 ( -\GENERIC.BINS 140146 . 140426) (\GENERIC.BOUTS 140428 . 140693) (\GENERIC.RENAMEFILE 140695 . 142943) -(\GENERIC.OPENP 142945 . 144260) (\GENERIC.READP 144262 . 145414) (\GENERIC.CHARSET 145416 . 147314)) -(147317 147656 (\MAP-OPEN-STREAMS 147327 . 147654)) (149511 151591 (\EOF.ACTION 149521 . 149772) ( -\EOSERROR 149774 . 149967) (\GETEOFPTR 149969 . 150151) (\INCFILEPTR 150153 . 150503) (\PEEKBIN 150505 - . 150696) (\SETCLOSEDFILELENGTH 150698 . 151032) (\SETEOFPTR 151034 . 151222) (\SETFILEPTR 151224 . -151589)) (151592 152134 (\FIXPOUT 151602 . 151902) (\FIXPIN 151904 . 152132)) (152135 152701 (\BOUTEOL - 152145 . 152699)) (155597 165461 (\BUFFERED.BIN 155607 . 156459) (\BUFFERED.PEEKBIN 156461 . 157243) -(\BUFFERED.BOUT 157245 . 158105) (\BUFFERED.BINS 158107 . 161792) (\BUFFERED.BOUTS 161794 . 163595) ( -\BUFFERED.COPYBYTES 163597 . 165459))))) + (FILEMAP (NIL (27757 31873 (STREAMPROP 27767 . 28201) (GETSTREAMPROP 28203 . 28952) (PUTSTREAMPROP +28954 . 31721) (STREAMP 31723 . 31871)) (31916 35295 (\DEFPRINT.BY.NAME 31926 . 33078) ( +\STREAM.DEFPRINT 33080 . 34988) (\FDEV.DEFPRINT 34990 . 35293)) (35553 40594 (\GETACCESS 35563 . 36017 +) (\SETACCESS 36019 . 40592)) (60820 66789 (\DEFINEDEVICE 60830 . 63146) (\GETDEVICEFROMNAME 63148 . +63621) (\GETDEVICEFROMHOSTNAME 63623 . 64667) (\REMOVEDEVICE 64669 . 65792) (\REMOVEDEVICE.NAMES 65794 + . 66787)) (66829 94486 (\CLOSEFILE 66839 . 67664) (\DELETEFILE 67666 . 67960) (\DEVICEEVENT 67962 . +69732) (\GENERATEFILES 69734 . 70681) (\GENERATENEXTFILE 70683 . 71334) (\GENERATEFILEINFO 71336 . +71797) (\GETFILENAME 71799 . 72188) (\GENERIC.OUTFILEP 72190 . 72660) (\OPENFILE 72662 . 75240) ( +\DO.PARAMS.AT.OPEN 75242 . 79364) (\RENAMEFILE 79366 . 80322) (\REVALIDATEFILE 80324 . 82926) ( +\PAGED.REVALIDATEFILELST 82928 . 84486) (\PAGED.REVALIDATEFILES 84488 . 86207) (\PAGED.REVALIDATEFILE +86209 . 88492) (\BUFFERED.REVALIDATEFILE 88494 . 90780) (\BUFFERED.REVALIDATEFILELST 90782 . 91966) ( +\PRINT-REVALIDATION-RESULT 91968 . 92810) (\TRUNCATEFILE 92812 . 93203) (\FILE-CONFLICT 93205 . 94484) +) (94522 99185 (\GENERATENOFILES 94532 . 96628) (\NULLFILEGENERATOR 96630 . 96874) (\NOFILESNEXTFILEFN + 96876 . 98867) (\NOFILESINFOFN 98869 . 99183)) (99304 101212 (\FILE.NOT.OPEN 99314 . 99827) ( +\FILE.WONT.OPEN 99829 . 100157) (\ILLEGAL.DEVICEOP 100159 . 100441) (\IS.NOT.RANDACCESSP 100443 . +100889) (\STREAM.NOT.OPEN 100891 . 101210)) (101347 103645 (\FDEVINSTANCE 101357 . 103643)) (104847 +111818 (CNDIR 104857 . 106162) (DIRECTORYNAME 106164 . 109944) (DIRECTORYNAMEP 109946 . 110562) ( +HOSTNAMEP 110564 . 111371) (\ADD.CONNECTED.DIR 111373 . 111816)) (111863 140810 (\BACKFILEPTR 111873 + . 112061) (\BACKPEEKBIN 112063 . 112424) (\BACKBIN 112426 . 112777) (BIN 112779 . 112996) (\BIN +112998 . 113275) (\BINS 113277 . 113563) (BOUT 113565 . 113927) (\BOUT 113929 . 114244) (\BOUTS 114246 + . 114557) (COPYBYTES 114559 . 117891) (COPYCHARS 117893 . 121691) (COPYFILE 121693 . 123053) ( +\COPYOPENFILE 123055 . 126254) (\INFER.FILE.TYPE 126256 . 127210) (EOFP 127212 . 127509) (FORCEOUTPUT +127511 . 127758) (\FLUSH.OPEN.STREAMS 127760 . 128116) (CHARSET 128118 . 129477) (ACCESS-CHARSET +129479 . 130116) (GETEOFPTR 130118 . 130368) (GETFILEINFO 130370 . 133563) (\TYPE.FROM.FILETYPE 133565 + . 134035) (\FILETYPE.FROM.TYPE 134037 . 134216) (GETFILEPTR 134218 . 134470) (SETFILEINFO 134472 . +138709) (SETFILEPTR 138711 . 140430) (BOUT16 140432 . 140617) (BIN16 140619 . 140808)) (140913 148093 +(\GENERIC.BINS 140923 . 141203) (\GENERIC.BOUTS 141205 . 141470) (\GENERIC.RENAMEFILE 141472 . 143720) + (\GENERIC.OPENP 143722 . 145037) (\GENERIC.READP 145039 . 146191) (\GENERIC.CHARSET 146193 . 148091)) + (148094 148433 (\MAP-OPEN-STREAMS 148104 . 148431)) (150288 152368 (\EOF.ACTION 150298 . 150549) ( +\EOSERROR 150551 . 150744) (\GETEOFPTR 150746 . 150928) (\INCFILEPTR 150930 . 151280) (\PEEKBIN 151282 + . 151473) (\SETCLOSEDFILELENGTH 151475 . 151809) (\SETEOFPTR 151811 . 151999) (\SETFILEPTR 152001 . +152366)) (152369 152911 (\FIXPOUT 152379 . 152679) (\FIXPIN 152681 . 152909)) (152912 153478 (\BOUTEOL + 152922 . 153476)) (156374 166238 (\BUFFERED.BIN 156384 . 157236) (\BUFFERED.PEEKBIN 157238 . 158020) +(\BUFFERED.BOUT 158022 . 158882) (\BUFFERED.BINS 158884 . 162569) (\BUFFERED.BOUTS 162571 . 164372) ( +\BUFFERED.COPYBYTES 164374 . 166236))))) STOP diff --git a/sources/FILEIO.LCOM b/sources/FILEIO.LCOM index 6f1529722a64ae09767aa49fc410e6b900448c97..102917fc17bb67b05a47ac457c7809cb00778ffa 100644 GIT binary patch delta 1272 zcmZWpO>Epm6kdCkQZ^!`TA`*tLJ!mY(I)bY$3MG7V!gZLuCrb{-Ji6Tl0%B4Hq|!S zwrN4)5H28bp@@f{ME%tGHds4&Qg^cK-Hpd6$w#bTKRDEdT+hE7Q*HRD3B9@M7D`J0}6d{ z12u~pQ{ZwO-<=9!eFJie)A2kQ4xF2tQy^U3!hEkJu!@W*Gr4KU^?0Sp?KZEz5~Q0& zT^9{W%M%lbVX%S$xgxK+?b-4r@wGI6Z1`(<4$6wUwqLhQbm9MWGNSVTqocn{nT%XI zl)*=+V;`jG!QtKUer+=*2gGP>?C>P;LGF*(+CBS1NG?tC&Da^)Bx3b$ejE#fO5j)Q zHV~a1Kqj7!jc;oOXtkTJe+~-fz6%dcGzw0YF9D%??B{j^2qF8N$_89P9UxO1puq-A zgFPWQrqMJzD&5UnYoP*IuwwUmYa56eVmDAg!=%CO zt={b|%xOhm9Esj4zk5i^WJ_1#hUDT``RMtPT6XWOxA$5?E+_A2-`eT=LmKKO{p{zL z?q&WJ-HEC9eooy#rtW&;zL&YX5T^Y1{Zc(izw?Rsed0JX`)+o3r52P=A>WQ6q zLTM!p{iPAEC!ycvdi6U?Z{Xj`Da((%uG`)na@(q z_Um@NgJLDH%rCZi)3-e*Xf|+$cqhPd{p#$#O>l&jn%!)1oGp^h?l=x_w!oqXkR|m1Q^EBYJ8eJ>+WsZLKL9S#XH)0j zkbV`6Q)i_-M delta 1117 zcmZWoOK%fN5cb$Sf+1N!77@^{C^e7=th3YI^Rhw06T1f++cUwBKtzx>!4^acwl@j8 z+~Bm_5U3Bp0R;ab#L5x*fL7YLX2xy{8G)0qX-Ofa6%9Rj1|a^qTaexX){Mjhn1#&sSY145lG(L7-~34;-sTdeiM zFJGOlU#Tq}OGy3bkGtpVK)gym57fE$-~N-)?-IllhC{}pqh2;IQbpmGMH&eEz9w7M zu#W?^Oq<3bA=24$Y+^bpm$g#|z>0abxo!{G0AmSVClHmo##$e=!96?fYN1d#DTfA5 zkF58t4z@Fm5Pr$^zTIkFvDTw66j&u2j;Oppa3W?hwQ2^(^#KK0h{c{85K|_qZFB>v*4qZlA4o`G@Ufu9IwK zNe&Dj{N>knHnLjDRU<8^uKs-W(8|H8cBwkw33<>?7CPY8OgkJ|dm}FnGwravGkoAT z-BHp^Wn4e!<|;TECd`NnWl{9qycZM;N?F?iFYBjc8#bem%DBanK%Y(lS2ZzN-wVJ- z&9|7`mfJ^;+~f>IkWT@_J5m4-6n;4y_`s;87@(;4S9KT`&efMXdIxhGHn?6b4s1ZW zSytQx;im%+?_anDJD3Cqw{9{>*c>J*o+pYWu#6tWN?m^%x^=cbj-2b))?{G*F8?;q z9O*@*Pls5!ese8surBb=x+(bgtW*D^}s0C zm74w;g{exrxl?|!ni`W0TMu)m_0%>`{nS5-iggCKe-unSU$?n!P>1oc{?_}Yf5Q># QaM}Ljm0DX*{;Z$;3?;-I00000 From 1d2292aa62817308ac865de84de2e86d0aeff27d Mon Sep 17 00:00:00 2001 From: rmkaplan <69548581+rmkaplan@users.noreply.github.com> Date: Mon, 27 Apr 2026 12:16:26 -0700 Subject: [PATCH 04/11] Fixing \DO.PARAMS.AT.OPEN take two (#2581) --- sources/FILEIO | 116 ++++++++++++++++++++------------------------ sources/FILEIO.LCOM | Bin 45838 -> 45848 bytes 2 files changed, 52 insertions(+), 64 deletions(-) diff --git a/sources/FILEIO b/sources/FILEIO index 115d7836..45dab841 100644 --- a/sources/FILEIO +++ b/sources/FILEIO @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO :PACKAGE "INTERLISP" :READTABLE "INTERLISP" :BASE 10) -(FILECREATED "21-Apr-2026 20:57:55" {DSK}matt>Interlisp>medley>sources>FILEIO.;17 166496 +(FILECREATED "26-Apr-2026 23:27:40" {WMEDLEY}FILEIO.;146 165936 - :EDIT-BY "mth" + :EDIT-BY rmk :CHANGES-TO (FNS \DO.PARAMS.AT.OPEN) - :PREVIOUS-DATE "21-Apr-2026 20:24:53" {DSK}matt>Interlisp>medley>sources>FILEIO.;15) + :PREVIOUS-DATE "26-Apr-2026 21:00:55" {WMEDLEY}FILEIO.;145) (PRETTYCOMPRINT FILEIOCOMS) @@ -1446,7 +1446,8 @@ (GO RETRY]) (\DO.PARAMS.AT.OPEN - [LAMBDA (STREAM ACCESS PARAMETERS) (* ; "Edited 21-Apr-2026 20:57 by mth") + [LAMBDA (STREAM ACCESS PARAMETERS) (* ; "Edited 26-Apr-2026 23:27 by rmk") + (* ; "Edited 21-Apr-2026 20:57 by mth") (* ; "Edited 20-Apr-2026 17:36 by mth") (* ; "Edited 25-Dec-2024 10:54 by rmk") (* ; "Edited 15-Jul-2024 22:29 by rmk") @@ -1484,40 +1485,27 @@ (CHARSET (CHARSET STREAM VAL)) ((FORMAT EXTERNALFORMAT :EXTERNAL-FORMAT) (* ;; - "Ignore the case of the non-LISTP X setting VAL to T") + "This allows an EOL and format to be intermixed, the last ones of each are installed") - [if (LISTP X) - then - (* ;; - "VAL can be :UTF-8, CR, (UTF:8 CR), i.e. specify either one or both") - - (for V in (MKLIST VAL) do - (* ;; - "FIND-FORMAT doesn't know about :DEFAULT, so...") - - (if (OR (EQ V :DEFAULT) - (FIND-FORMAT V T)) - then (\EXTERNALFORMAT STREAM V) - else (SETQ EOL V]) + (for V inside VAL do (if (MEMB V '(LF CR CRLF ANY)) + then (SETQ EOL V) + else (\EXTERNALFORMAT STREAM V)))) (CONVHANKAKU (CONVHANKAKU STREAM VAL)) ((EOL EOLCONVENTION EOLC) (SETQ EOL VAL)) NIL) finally - (* ;; - "If not specified, default EOL to ANY--SETFILEINFO checks for output streams") + (* ;; "If EOL is not specified, default input streams to ANY. ") - (* ;; - " Cannot depend on SETFILEINFO checking for ANY on output stream, because it ERRORs!") - - (CL:WHEN (OR (NEQ (SETQ EOL (OR EOL 'ANY)) - 'ANY) - (EQ ACCESS 'INPUT)) + (CL:UNLESS (OR EOL (\GETSTREAM STREAM 'OUTPUT T)) + (SETQ EOL 'ANY)) + (CL:WHEN EOL (SETFILEINFO STREAM 'EOL EOL))) - (FOR FN IN STREAM-AFTER-OPEN-FNS DO (APPLY* FN STREAM ACCESS PARAMETERS]) + (for FN in STREAM-AFTER-OPEN-FNS do (APPLY* FN STREAM ACCESS PARAMETERS]) (\RENAMEFILE - [LAMBDA (OLDFILE NEWFILE) (* ; "Edited 25-Dec-2024 10:14 by rmk") + [LAMBDA (OLDFILE NEWFILE) (* ; "Edited 25-Apr-2026 16:03 by rmk") + (* ; "Edited 25-Dec-2024 10:14 by rmk") (* ; "Edited 16-Dec-2024 21:07 by rmk") (* hdj " 7-May-86 12:22") (SETQ OLDFILE (\ADD.CONNECTED.DIR OLDFILE)) @@ -1532,7 +1520,7 @@ NEW-DEVICE (TRUEFILENAME NEWFILE))) (CL:IF (PSEUDOHOSTP NEWFILE) - (PSEUDOFILENAME NEWFULLNAME) + (PSEUDOFILENAME NEWFULLNAME (FILENAMEFIELD NEWFILE 'HOST)) NEWFULLNAME))]) (\REVALIDATEFILE @@ -3172,39 +3160,39 @@ update the map") (ADDTOVAR LAMA \IS.NOT.RANDACCESSP \ILLEGAL.DEVICEOP STREAMPROP) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (27757 31873 (STREAMPROP 27767 . 28201) (GETSTREAMPROP 28203 . 28952) (PUTSTREAMPROP -28954 . 31721) (STREAMP 31723 . 31871)) (31916 35295 (\DEFPRINT.BY.NAME 31926 . 33078) ( -\STREAM.DEFPRINT 33080 . 34988) (\FDEV.DEFPRINT 34990 . 35293)) (35553 40594 (\GETACCESS 35563 . 36017 -) (\SETACCESS 36019 . 40592)) (60820 66789 (\DEFINEDEVICE 60830 . 63146) (\GETDEVICEFROMNAME 63148 . -63621) (\GETDEVICEFROMHOSTNAME 63623 . 64667) (\REMOVEDEVICE 64669 . 65792) (\REMOVEDEVICE.NAMES 65794 - . 66787)) (66829 94486 (\CLOSEFILE 66839 . 67664) (\DELETEFILE 67666 . 67960) (\DEVICEEVENT 67962 . -69732) (\GENERATEFILES 69734 . 70681) (\GENERATENEXTFILE 70683 . 71334) (\GENERATEFILEINFO 71336 . -71797) (\GETFILENAME 71799 . 72188) (\GENERIC.OUTFILEP 72190 . 72660) (\OPENFILE 72662 . 75240) ( -\DO.PARAMS.AT.OPEN 75242 . 79364) (\RENAMEFILE 79366 . 80322) (\REVALIDATEFILE 80324 . 82926) ( -\PAGED.REVALIDATEFILELST 82928 . 84486) (\PAGED.REVALIDATEFILES 84488 . 86207) (\PAGED.REVALIDATEFILE -86209 . 88492) (\BUFFERED.REVALIDATEFILE 88494 . 90780) (\BUFFERED.REVALIDATEFILELST 90782 . 91966) ( -\PRINT-REVALIDATION-RESULT 91968 . 92810) (\TRUNCATEFILE 92812 . 93203) (\FILE-CONFLICT 93205 . 94484) -) (94522 99185 (\GENERATENOFILES 94532 . 96628) (\NULLFILEGENERATOR 96630 . 96874) (\NOFILESNEXTFILEFN - 96876 . 98867) (\NOFILESINFOFN 98869 . 99183)) (99304 101212 (\FILE.NOT.OPEN 99314 . 99827) ( -\FILE.WONT.OPEN 99829 . 100157) (\ILLEGAL.DEVICEOP 100159 . 100441) (\IS.NOT.RANDACCESSP 100443 . -100889) (\STREAM.NOT.OPEN 100891 . 101210)) (101347 103645 (\FDEVINSTANCE 101357 . 103643)) (104847 -111818 (CNDIR 104857 . 106162) (DIRECTORYNAME 106164 . 109944) (DIRECTORYNAMEP 109946 . 110562) ( -HOSTNAMEP 110564 . 111371) (\ADD.CONNECTED.DIR 111373 . 111816)) (111863 140810 (\BACKFILEPTR 111873 - . 112061) (\BACKPEEKBIN 112063 . 112424) (\BACKBIN 112426 . 112777) (BIN 112779 . 112996) (\BIN -112998 . 113275) (\BINS 113277 . 113563) (BOUT 113565 . 113927) (\BOUT 113929 . 114244) (\BOUTS 114246 - . 114557) (COPYBYTES 114559 . 117891) (COPYCHARS 117893 . 121691) (COPYFILE 121693 . 123053) ( -\COPYOPENFILE 123055 . 126254) (\INFER.FILE.TYPE 126256 . 127210) (EOFP 127212 . 127509) (FORCEOUTPUT -127511 . 127758) (\FLUSH.OPEN.STREAMS 127760 . 128116) (CHARSET 128118 . 129477) (ACCESS-CHARSET -129479 . 130116) (GETEOFPTR 130118 . 130368) (GETFILEINFO 130370 . 133563) (\TYPE.FROM.FILETYPE 133565 - . 134035) (\FILETYPE.FROM.TYPE 134037 . 134216) (GETFILEPTR 134218 . 134470) (SETFILEINFO 134472 . -138709) (SETFILEPTR 138711 . 140430) (BOUT16 140432 . 140617) (BIN16 140619 . 140808)) (140913 148093 -(\GENERIC.BINS 140923 . 141203) (\GENERIC.BOUTS 141205 . 141470) (\GENERIC.RENAMEFILE 141472 . 143720) - (\GENERIC.OPENP 143722 . 145037) (\GENERIC.READP 145039 . 146191) (\GENERIC.CHARSET 146193 . 148091)) - (148094 148433 (\MAP-OPEN-STREAMS 148104 . 148431)) (150288 152368 (\EOF.ACTION 150298 . 150549) ( -\EOSERROR 150551 . 150744) (\GETEOFPTR 150746 . 150928) (\INCFILEPTR 150930 . 151280) (\PEEKBIN 151282 - . 151473) (\SETCLOSEDFILELENGTH 151475 . 151809) (\SETEOFPTR 151811 . 151999) (\SETFILEPTR 152001 . -152366)) (152369 152911 (\FIXPOUT 152379 . 152679) (\FIXPIN 152681 . 152909)) (152912 153478 (\BOUTEOL - 152922 . 153476)) (156374 166238 (\BUFFERED.BIN 156384 . 157236) (\BUFFERED.PEEKBIN 157238 . 158020) -(\BUFFERED.BOUT 158022 . 158882) (\BUFFERED.BINS 158884 . 162569) (\BUFFERED.BOUTS 162571 . 164372) ( -\BUFFERED.COPYBYTES 164374 . 166236))))) + (FILEMAP (NIL (27711 31827 (STREAMPROP 27721 . 28155) (GETSTREAMPROP 28157 . 28906) (PUTSTREAMPROP +28908 . 31675) (STREAMP 31677 . 31825)) (31870 35249 (\DEFPRINT.BY.NAME 31880 . 33032) ( +\STREAM.DEFPRINT 33034 . 34942) (\FDEV.DEFPRINT 34944 . 35247)) (35507 40548 (\GETACCESS 35517 . 35971 +) (\SETACCESS 35973 . 40546)) (60774 66743 (\DEFINEDEVICE 60784 . 63100) (\GETDEVICEFROMNAME 63102 . +63575) (\GETDEVICEFROMHOSTNAME 63577 . 64621) (\REMOVEDEVICE 64623 . 65746) (\REMOVEDEVICE.NAMES 65748 + . 66741)) (66783 93926 (\CLOSEFILE 66793 . 67618) (\DELETEFILE 67620 . 67914) (\DEVICEEVENT 67916 . +69686) (\GENERATEFILES 69688 . 70635) (\GENERATENEXTFILE 70637 . 71288) (\GENERATEFILEINFO 71290 . +71751) (\GETFILENAME 71753 . 72142) (\GENERIC.OUTFILEP 72144 . 72614) (\OPENFILE 72616 . 75194) ( +\DO.PARAMS.AT.OPEN 75196 . 78665) (\RENAMEFILE 78667 . 79762) (\REVALIDATEFILE 79764 . 82366) ( +\PAGED.REVALIDATEFILELST 82368 . 83926) (\PAGED.REVALIDATEFILES 83928 . 85647) (\PAGED.REVALIDATEFILE +85649 . 87932) (\BUFFERED.REVALIDATEFILE 87934 . 90220) (\BUFFERED.REVALIDATEFILELST 90222 . 91406) ( +\PRINT-REVALIDATION-RESULT 91408 . 92250) (\TRUNCATEFILE 92252 . 92643) (\FILE-CONFLICT 92645 . 93924) +) (93962 98625 (\GENERATENOFILES 93972 . 96068) (\NULLFILEGENERATOR 96070 . 96314) (\NOFILESNEXTFILEFN + 96316 . 98307) (\NOFILESINFOFN 98309 . 98623)) (98744 100652 (\FILE.NOT.OPEN 98754 . 99267) ( +\FILE.WONT.OPEN 99269 . 99597) (\ILLEGAL.DEVICEOP 99599 . 99881) (\IS.NOT.RANDACCESSP 99883 . 100329) +(\STREAM.NOT.OPEN 100331 . 100650)) (100787 103085 (\FDEVINSTANCE 100797 . 103083)) (104287 111258 ( +CNDIR 104297 . 105602) (DIRECTORYNAME 105604 . 109384) (DIRECTORYNAMEP 109386 . 110002) (HOSTNAMEP +110004 . 110811) (\ADD.CONNECTED.DIR 110813 . 111256)) (111303 140250 (\BACKFILEPTR 111313 . 111501) ( +\BACKPEEKBIN 111503 . 111864) (\BACKBIN 111866 . 112217) (BIN 112219 . 112436) (\BIN 112438 . 112715) +(\BINS 112717 . 113003) (BOUT 113005 . 113367) (\BOUT 113369 . 113684) (\BOUTS 113686 . 113997) ( +COPYBYTES 113999 . 117331) (COPYCHARS 117333 . 121131) (COPYFILE 121133 . 122493) (\COPYOPENFILE +122495 . 125694) (\INFER.FILE.TYPE 125696 . 126650) (EOFP 126652 . 126949) (FORCEOUTPUT 126951 . +127198) (\FLUSH.OPEN.STREAMS 127200 . 127556) (CHARSET 127558 . 128917) (ACCESS-CHARSET 128919 . +129556) (GETEOFPTR 129558 . 129808) (GETFILEINFO 129810 . 133003) (\TYPE.FROM.FILETYPE 133005 . 133475 +) (\FILETYPE.FROM.TYPE 133477 . 133656) (GETFILEPTR 133658 . 133910) (SETFILEINFO 133912 . 138149) ( +SETFILEPTR 138151 . 139870) (BOUT16 139872 . 140057) (BIN16 140059 . 140248)) (140353 147533 ( +\GENERIC.BINS 140363 . 140643) (\GENERIC.BOUTS 140645 . 140910) (\GENERIC.RENAMEFILE 140912 . 143160) +(\GENERIC.OPENP 143162 . 144477) (\GENERIC.READP 144479 . 145631) (\GENERIC.CHARSET 145633 . 147531)) +(147534 147873 (\MAP-OPEN-STREAMS 147544 . 147871)) (149728 151808 (\EOF.ACTION 149738 . 149989) ( +\EOSERROR 149991 . 150184) (\GETEOFPTR 150186 . 150368) (\INCFILEPTR 150370 . 150720) (\PEEKBIN 150722 + . 150913) (\SETCLOSEDFILELENGTH 150915 . 151249) (\SETEOFPTR 151251 . 151439) (\SETFILEPTR 151441 . +151806)) (151809 152351 (\FIXPOUT 151819 . 152119) (\FIXPIN 152121 . 152349)) (152352 152918 (\BOUTEOL + 152362 . 152916)) (155814 165678 (\BUFFERED.BIN 155824 . 156676) (\BUFFERED.PEEKBIN 156678 . 157460) +(\BUFFERED.BOUT 157462 . 158322) (\BUFFERED.BINS 158324 . 162009) (\BUFFERED.BOUTS 162011 . 163812) ( +\BUFFERED.COPYBYTES 163814 . 165676))))) STOP diff --git a/sources/FILEIO.LCOM b/sources/FILEIO.LCOM index 102917fc17bb67b05a47ac457c7809cb00778ffa..e53409e67143b77bc55c98a3f6f4864e45adacd6 100644 GIT binary patch delta 995 zcmaJ=OK;Oa5RTi5M~bQHv z%7qIcRe&!b0Yc&j&{Fl-<}YxA8=QLJ#1U?+9TFOZYFXZy-EY46c4oY`JMeOM;Mq(| zO5&Af5^+cZlva_f3S11>*nDGoW$9LZ0UEa<1`no9q8ViN;lg2umt%0PS?}@G@2xafCse3ucB+CMY`Q7zrEEWYc4&Bs=FqE#0Z4lO z^?2)lbV!ONqHK^g?-1+}4f=ETr0**gcu7>!5~xHgddb`@G?#CJnlE5$invM723EIR zCh9+B;(Y&&I8GJC{R^@Ai&;Fw$o}~c<4OXUiGxgJFnc3HpJ?#O9ld&>Ft`QAi;c+l z&i>MHa6tVpA*{9$`Q&d;OrCoexIK`rbpKNwfKpa zB!Nr3u)&sY1L9@K+ty`Tq%tm70dYLk$c#rE3mdxanAih8qku`w9Po&O3)rCqz;kjR zQAX@@(<0QSi068=pC$!&N&QokM_LjG#HRBg@WGm=qnQp3s)JZw(Y62~u>;{Uee!q_ z(f0n4m+a~jX!t*p(*kr)gB$il(~Q=2&DJ}@> srO^mWYgchem8zhBfQ3y084kL(UL=O*zhUnml0_)kt_PdriJy;u14@Jb&j0`b delta 1015 zcmbW0&ui0A9Kf5EDR$sCcAA2G&Fq$mDa}h>+GbLkwl6Mg`ZAkzY_JJ)DYnqAW2=WT zqfSvw|0HXgW5Vo+PqP=EI6MTi^X{G zR$FZIOBIruBJtA^p}S44M0A(rFD2oGhA|KShK&1|K~hyEr9wm_dD9iMOTaf;RUWk5 ztWF;gM|5ov4C?qh+@yKoaEgZI|LPR>kH6eJ{KZ)loa)a+$FmbxxKKFrB*eZ*cgc=E z9Gndw-LsCa2F~SRJ$bM9EKLJ-~$y_xfR{tul@ zAt=AMP4;*?M?(`1%-&oK#0b0+JQT*>r*RuAmpn?2;u|CW|g9QQb1^Qc-u=%povL znio%PNlpQ4cF7?wNKy)z3`U9?Hlz}LCRR?(N5t%grTE3_Y)}wR00~JhTji=551q*?bo5dB(;5 z?enB0$d(O*lpIK+GgS#lL5YJ&=gTh02z0sx>|yG3cnRM}@d+8`9a3fx?3qx#Nc_*j_90CFe)$LbDh>w# From 47dd8edf60c00d54d5b85535f533803abb1c59db Mon Sep 17 00:00:00 2001 From: Frank Halasz Date: Mon, 27 Apr 2026 14:08:14 -0700 Subject: [PATCH 05/11] Fix Issue# 2562 - SEE-PDF fails if there is a space in the given filename (#2580) * Fix Issue# 2562 - SEE-PDF fails if there is a space in the given filename * Remove PRINT debugging code from ShellOpen * Fix bug introduced into SLASHIT whereby which it would go into an infinite loop if a filename had two or more spaces in it. --- library/UNIXUTILS | 32 +++++++++++++++++++------------- library/UNIXUTILS.DFASL | Bin 8023 -> 8129 bytes 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/library/UNIXUTILS b/library/UNIXUTILS index d8dce663..fa1c2260 100644 --- a/library/UNIXUTILS +++ b/library/UNIXUTILS @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO :PACKAGE "INTERLISP" :READTABLE "INTERLISP" :BASE 10) -(FILECREATED "31-Mar-2026 00:14:19" {WMEDLEY}UNIXUTILS.;58 21269 +(FILECREATED "27-Apr-2026 11:10:07" {DSK}frank>il>medley>library>UNIXUTILS.;7 21772 - :EDIT-BY rmk + :EDIT-BY "FGH" - :CHANGES-TO (FNS UNIX-FILE-NAME) + :CHANGES-TO (FNS ShellOpen SLASHIT) - :PREVIOUS-DATE "29-Mar-2026 00:26:43" {WMEDLEY}UNIXUTILS.;57) + :PREVIOUS-DATE "31-Mar-2026 00:14:19" {DSK}frank>il>medley>library>UNIXUTILS.;3) (PRETTYCOMPRINT UNIXUTILSCOMS) @@ -148,7 +148,8 @@ "true"]) (ShellOpen - [LAMBDA (FilenameOrURL) (* ; "Edited 28-Dec-2025 18:26 by rmk") + [LAMBDA (FilenameOrURL) (* ; "Edited 27-Apr-2026 11:08 by FGH") + (* ; "Edited 28-Dec-2025 18:26 by rmk") (* ; "Edited 10-Sep-2025 15:29 by rmk") (* ; "Edited 4-May-2025 11:14 by rmk") @@ -210,7 +211,8 @@ 'NAME NEWNAME 'EXTENSION EXTENSION)) (TARGETFILE.UNIX (SLASHIT (PACKFILENAME.STRING 'HOST NIL 'DIRECTORY TMPDIR 'NAME NEWNAME 'EXTENSION - EXTENSION))) + EXTENSION) + NIL NIL NIL T)) (UNIXFILE NIL)) (DECLARE (SPECVARS UNIXFILE)) (if (OR VERSION.SPECIFIED (NOT UNVERSIONED.EXISTS)) @@ -245,7 +247,8 @@ 0))) DO (BLOCK) FINALLY (RETURN CODE]) (SLASHIT - [LAMBDA (X LCASEDIRS NOHOST KEEPDOT) (* ; "Edited 17-Jan-2026 23:15 by rmk") + [LAMBDA (X LCASEDIRS NOHOST KEEPDOT NO.QUOTE.SPACE) (* ; "Edited 27-Apr-2026 11:00 by FGH") + (* ; "Edited 17-Jan-2026 23:15 by rmk") (* ; "Edited 4-Nov-2025 10:10 by rmk") (* ; "Edited 22-Oct-2025 13:05 by rmk") (* ; "Edited 25-Sep-2025 09:57 by rmk") @@ -258,7 +261,10 @@ (* ;; "This is a first approximation to a utility that converts a filename X on a host whose files physically reside in the local Unix file system into the strings that shell commands can use to reference that file. For now, this just involves replacing directory brackets with /, removing the host, perhaps lower-casing the directory, and perhaps removing a final dot. It probably should be extended to deal with version number translation, for now it just keeps the ; version. ") (LET [LASTDIRPOS SLASHED (DIRPOS (ADD1 (OR (STRPOS "}" X) - 0] + 0))) + (REPLACE.SPACE (if NO.QUOTE.SPACE + then (CONS (CHARCODE SPACE)) + else (CHARCODE (\ SPACE] [SETQ SLASHED (CONCATCODES (for I C from DIRPOS while (SETQ C (NTHCHARCODE X I)) join (SELCHARQ C ((< >) @@ -266,7 +272,7 @@ (CONS (CHARCODE /))) (/ (SETQ LASTDIRPOS I) (CONS C)) - (SPACE (APPEND (CHARCODE (\ SPACE)))) + (SPACE (APPEND REPLACE.SPACE)) (CONS C] (CL:WHEN (AND LCASEDIRS LASTDIRPOS) (SETQ LASTDIRPOS (ADD1 (IDIFFERENCE LASTDIRPOS DIRPOS))) @@ -367,8 +373,8 @@ (PUTPROPS UNIXUTILS FILETYPE CL:COMPILE-FILE) (DECLARE%: DONTCOPY - (FILEMAP (NIL (1170 1543 (ShellCommand 1170 . 1543)) (1545 1942 (ShellWhich 1545 . 1942)) (2052 21191 -(ShellBrowser 2062 . 3834) (ShellBrowse 3836 . 4521) (ShellOpener 4523 . 6211) (ShellOpen 6213 . 11982 -) (PROCESS-COMMAND 11984 . 12597) (SLASHIT 12599 . 15623) (UNIX-FILE-NAME 15625 . 19510) ( -UNIX-TMP-FILE-NAME 19512 . 21189))))) + (FILEMAP (NIL (1207 1580 (ShellCommand 1207 . 1580)) (1582 1979 (ShellWhich 1582 . 1979)) (2089 21694 +(ShellBrowser 2099 . 3871) (ShellBrowse 3873 . 4558) (ShellOpener 4560 . 6248) (ShellOpen 6250 . 12197 +) (PROCESS-COMMAND 12199 . 12812) (SLASHIT 12814 . 16126) (UNIX-FILE-NAME 16128 . 20013) ( +UNIX-TMP-FILE-NAME 20015 . 21692))))) STOP diff --git a/library/UNIXUTILS.DFASL b/library/UNIXUTILS.DFASL index f4489675716c690696bdf097f7a9d6de5670af56..6135779e237e13d44a2d81ae66288b563ee25bfe 100644 GIT binary patch delta 1153 zcmaJ7%Q6rQ*1pVV%g7}pIre@jIg+Qf;yZ4$78$+C89ckQ*Cbp@5uLXwV; zNK}BF(xM{jhPtCrZ;?Pf^#lZ4NRb>WAue1v@FS5Pdf|+OIgkU0hM93hg@jm*-h1Eo zzW2@SXnu-*_4KvJ12Ii`Yf@h-=A#SCvx`QwU`C7ic{6`LS_%7RCS2OmYs+(aVWD8= zg}LSY?795BAWj6OmzRTLNE{c!;Yc_X2~D_;Nm}aPvh>p8{OtK*A{U6fUeswesj2|9dQ$sL$J82Nqh!yq5MJ=Fa^oSq z?LS*`Q?ITiM7}8(jn7pQD=!&au^XnahvG}D=RIK4HyN4CXwyn>sx9bOO`&!s!MkZAg{W zie3w*l6Q@*O~pvL=@D2{5NE&yUMq!2xxuU;kjwr<) z2Aj2@Ij9ux?}Gh`QT&Uk**`J%UBcaGTtn$ZoP%65$ef*~BxfVZm6EhvEIFOcXdGXC zYOUSCM2K`DlbE~<8oRFsFOpLw|^fUA5 zq~#B-fo};@LWp{xFIv>?2Ob}>@+NIs57>*;Scfpd1Um6H;Sb>9?kjK*Z*)i64jp9e!}yQx7Y6!yj-de0v)pUtfJb1Rs$!t4 q%pV^Yaj8dy!}VIv0NrP+Hw#gGsP7C6;LCmeFobXSeZrsI+4&oJnMK3^ delta 1116 zcmaJ;T}%^M6rM9vY$FMu`F zdG&H}j=gpJG}rMZ!;AU)-@bk~ZQ5`gpj~@gW?`X2TW@;E!2o(*@c?GDYwH^U%F*L* z#tnjVk4uv*yP>^b{rwMyVV&wPB>bSGoyCiJL$5CuAeGA-RQqc57@MZZv_A^ z>fhXoui+BV%;s6v*@ zSN(1T|n0!acrSL|EEyL3XKWiXCWH}tn zk}sJGh`ot;l4UVACNU8T23WvgonAn%zjIiO3}aBaBEqXoji7y7swTmt;t?}5rz**$ zSqknE<_&##=H(jmFLtYlr9%FYuh$GxKXqfu{4MJx|lY zd&h{YKOXb@Qp7YlOn%^Cj4(pFcrI_iS@I`LnhyFBiC`=sgoqNXoqDLF!D6I#Dq|qt z{}=PnLXxY+Jd@Hq)pGzg^r*&JTcdi7@aYh!x|Z&C)L?Ui1s%3Ifk$(;8Q6ig+1;kb zowVG9hU|wMYB@S1*urs?wW%rK7*P9)2*}EF`#T)yg Date: Wed, 29 Apr 2026 11:45:47 -0700 Subject: [PATCH 06/11] HCFILES added filtering and logging details (#2567) * Add reporting of filtering "Why?" Add reporting of the actual error Condition on files that FAIL. Change extraction of the "hcfiles-fails.txt" to a perl program since the Condition reporting sometimes is multiple lines. * Change running of the getFails.pl that extracts FAIL information. Also check if perl is installed, and report it if not into the fails file. --- internal/MEDLEY-UTILS | 233 +++++++++++++++++++++++------------- internal/MEDLEY-UTILS.DFASL | Bin 17115 -> 19875 bytes scripts/do_hcfiles.sh | 7 +- scripts/getFails.pl | 31 +++++ 4 files changed, 186 insertions(+), 85 deletions(-) create mode 100644 scripts/getFails.pl diff --git a/internal/MEDLEY-UTILS b/internal/MEDLEY-UTILS index 8f32114e..143d15c3 100644 --- a/internal/MEDLEY-UTILS +++ b/internal/MEDLEY-UTILS @@ -1,27 +1,29 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) +(DEFINE-FILE-INFO :PACKAGE "INTERLISP" :READTABLE "INTERLISP" :BASE 10) -(FILECREATED "28-Jan-2026 11:03:17" {DSK}larry>il>medley>internal>MEDLEY-UTILS.;3 26880 +(FILECREATED "16-Apr-2026 22:42:51" {DSK}matt>Interlisp>medley>internal>MEDLEY-UTILS.;2 30564 - :EDIT-BY "lmm" + :EDIT-BY "mth" - :CHANGES-TO (FNS MAKE-INDEX-HTMLS GATHER-INFO MAKE-FULLER-DB MEDLEY-FIX-LINKS MEDLEY-FIX-DATES - MAKE-EXPORTS-ALL MAKE-WHEREIS-HASH MAKE-WHEREIS-LOOPS HCFILES RECOMPILE-ONE - RECMPL COMPILE-SETUP REMAKEFILES) + :CHANGES-TO (FNS HCFILES MAKE-EXPORTS-ALL MAKE-INDEX-HTMLS) + (FUNCTIONS REPORT-AND-GO) + (VARS MEDLEY-UTILSCOMS HC-SKIP-EXTENSIONS) (ADVICE TEDIT.PROMPTPRINT) - :PREVIOUS-DATE "28-Jan-2026 10:46:02" {DSK}larry>il>medley>internal>MEDLEY-UTILS.;1) + :PREVIOUS-DATE "16-Apr-2026 22:27:40" {DSK}matt>Interlisp>medley>internal>MEDLEY-UTILS.;1 +) (PRETTYCOMPRINT MEDLEY-UTILSCOMS) (RPAQQ MEDLEY-UTILSCOMS [(FNS GATHER-INFO MAKE-FULLER-DB MEDLEY-FIX-LINKS MEDLEY-FIX-DATES) - (VARS MEDLEY-FIX-DIRS OKSOURCES OKLIBRARY OKLISPUSERS OKINTERNAL) + (VARS HC-SKIP-EXTENSIONS MEDLEY-FIX-DIRS OKSOURCES OKLIBRARY OKLISPUSERS OKINTERNAL) (FNS MAKE-EXPORTS-ALL MAKE-WHEREIS-HASH MAKE-WHEREIS-LOOPS) (FNS HCFILES MAKE-INDEX-HTMLS) (PROP FILETYPE MEDLEY-UTILS) (ADVISE TEDIT.PROMPTPRINT) (FNS RECOMPILE-ONE RECMPL COMPILE-SETUP REMAKEFILES) + (FUNCTIONS REPORT-AND-GO) (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA) (NLAML) (LAMA]) @@ -140,6 +142,12 @@ (for X in (OR DIRS MEDLEY-FIX-DIRS) join (FIX-DIRECTORY-DATES (MEDLEYDIR (PRINT X T]) ) +(RPAQQ HC-SKIP-EXTENSIONS + (PDF SKIP HTML LCOM DFASL SH SYSOUT DRIBBLE IMPTR DISPLAYFONT WD WIDTHS MEDLEYDISPLAYFONT + PSCFONT ALL DATABASE 1 MD GZ PRESS IP BITMAP EL ELC XFORMS BUGREPORTS SUITE LISTING AWK + DINFOGRAPH HASHFILE BLTCHAR DOC DOCPOINTERS STATUS NOTEFILE ICO ISS BMP PNG PS1 + VENUESYSOUT ACE FMC HKB LGC CMD COMMAND HTM SVG XML EXE)) + (RPAQQ MEDLEY-FIX-DIRS ("sources" "library" "lispusers" "internal" "greetfiles" "doctools")) (RPAQQ OKSOURCES (RENAMEFNS VMEM READSYS CASH-FILE HASH-FILE MEDLEYDIR MAKEINIT)) @@ -162,15 +170,18 @@ (DEFINEQ (MAKE-EXPORTS-ALL - [LAMBDA (OUTFILE) (* ; "Edited 3-Aug-2023 18:34 by frank") + [LAMBDA (OUTFILE) (* ; "Edited 15-Apr-2026 16:42 by mth") + (* ; "Edited 3-Aug-2023 18:34 by frank") (* ; "Edited 9-Mar-2021 16:11 by larry") - (* "Edited May 3, 2018 by Ron Kaplan--relative to MEDLEYDIR/lispcore/. Don't know why it does the CORE/RENAME") - (* - "Edited Aug 17 94 by Sybalsky -- point it to /king/export/lispcore as the truth directory.") - (* - "Edited July 5, 1990 by Sybalsky -- point it to Pele as the truth directory.") - (* - "Edited September 29, 1986 by van Melle") + + (* ;; "Edited May 3, 2018 by Ron Kaplan--relative to MEDLEYDIR/lispcore/. Don't know why it does the CORE/RENAME") + + (* ;; "Edited Aug 17 94 by Sybalsky -- point it to /king/export/lispcore as the truth directory.") + + (* ;; "Edited July 5, 1990 by Sybalsky -- point it to Pele as the truth directory.") + + (* ;; "Edited September 29, 1986 by van Melle") + (CNDIR (MEDLEYDIR "sources")) (LOAD 'FILESETS) (GATHEREXPORTS EXPORTFILES (OR OUTFILE "exports.all"]) @@ -204,7 +215,8 @@ (DEFINEQ (HCFILES - [LAMBDA (BASE REDO SUBSETS) (* ; "Edited 30-Jun-2024 08:27 by lmm") + [LAMBDA (BASE REDO SUBSETS) (* ; "Edited 16-Apr-2026 22:42 by mth") + (* ; "Edited 30-Jun-2024 08:27 by lmm") (* ; "Edited 23-Apr-2024 23:15 by lmm") (* ; "Edited 22-Apr-2024 13:22 by lmm") (* ; "Edited 5-Feb-2024 12:16 by lmm") @@ -213,74 +225,116 @@ (* ;;;; "BASE is the root directory. Doesn't replace PDF files except when REDO") -(* ;;; " SUBSETS is some combinsyion og (:YRDY :HYML :PRETTY and INDEX") +(* ;;; " SUBSETS is some combination of (:YRDY :HYML :PRETTY and INDEX") - (LET - [[DIRLIST (LIST (OR BASE (PSEUDOFILENAME (MEDLEYDIR] - (PHASES (OR SUBSETS '(TEDIT PRETTY INDEX HRULE] - (FILESLOAD PDFSTREAM SKETCH) - (FONTSET 'STANDARD) - (while DIRLIST - do - (SETQ BASE (pop DIRLIST)) - (for SRCPATH in (DIRECTORY (CONCAT BASE "*.*;")) - do (PROG* [(SRC (UNPACKFILENAME SRCPATH)) - [EXT (U-CASE (LISTGET SRC 'EXTENSION] - (DIR (LISTGET SRC 'DIRECTORY)) - FRDY LDGP DEST (NOV (PACKFILENAME `(VERSION NIL ,@SRC] - (CL:FORMAT T "Starting on ~a :~%%" SRCPATH) - (CL:WHEN (DIRECTORYNAMEP SRCPATH) + (LET* ([DIRLIST (LIST (OR BASE (PSEUDOFILENAME (MEDLEYDIR] + [PHASES (OR SUBSETS '(TEDIT PRETTY INDEX HRULE] + (DOTEDIT (MEMB 'TEDIT PHASES)) + (DOPRETTY (MEMB 'PRETTY PHASES))) + (FILESLOAD PDFSTREAM SKETCH) + (FONTSET 'STANDARD) + (while DIRLIST + do (SETQ BASE (pop DIRLIST)) - (* ;; "any directory names, push them off and do them in another phase") + (* ;; "Breadth-first processing") - (CL:UNLESS (OR (STRPOS ">." NOV) - (INFILEP (CONCAT NOV ".skip"))) - (SETQ DIRLIST (NCONC1 DIRLIST SRCPATH))) - (RETURN)) - (CL:WHEN - (MEMB EXT - '(PDF SKIP HTML LCOM DFASL SH SYSOUT DRIBBLE IMPTR DISPLAYFONT ALL - DATABASE)) + (for SRCPATH in (DIRECTORY (CONCAT BASE "*.*;")) + do (PROG* ((SRC (UNPACKFILENAME SRCPATH)) + [EXT (U-CASE (LISTGET SRC 'EXTENSION] + (DIR (LISTGET SRC 'DIRECTORY)) + [NAME (U-CASE (LISTGET SRC 'NAME] + [NOV (PACKFILENAME.STRING `(VERSION NIL ,@SRC] + LSFP DEST) + (CL:WHEN (DIRECTORYNAMEP SRCPATH) - (* ;; "ignore any of these extensions") + (* ;; + "any directory names, push them off and do them in another phase") - (RETURN)) + (if [NOT (OR (STRPOS "<." NOV) + (CL:SEARCH "" NOV :TEST #'CL:CHAR-EQUAL) + (STRPOS ">." NOV) + (INFILEP (CONCAT NOV ".skip"] + then (SETQ DIRLIST (NCONC1 DIRLIST SRCPATH)) + (CL:FORMAT T "~&Deferring to later ~a~%%" SRCPATH) + else (CL:FORMAT T "~&Skipping ~a~%%" SRCPATH)) + (RETURN)) - (* ;; - " doesnt (yet) implement / to - translattion. .readme should show up as -.readme.") + (* ;; "Fixup files that start with . and have no other extension") - (SETQ DEST (CONCAT NOV ".pdf")) - (CL:WHEN (AND (NOT REDO) - (INFILEP DEST)) - (CL:FORMAT T "~a already there~%%" DEST) - (RETURN)) - (CL:WHEN (INFILEP (CONCAT DEST ".skip")) - (PRINTOUT T "Explicit .skip " DEST T) - (RETURN)) - (if (MEMB 'TEDIT PHASES) - then (CL:WHEN [OR (MEMB EXT '(TEDIT TED SKETCH BRAVO)) - (CAR (NLSETQ (TEDIT.FORMATTEDFILEP SRCPATH] - (if (EQ REDO 'TEST) - then (CL:FORMAT T "Testing open ~a..." SRCPATH) - (CLOSEF? (OPENTEXTSTREAM SRCPATH)) - else (OR [NLSETQ (CL:WITH-OPEN-STREAM (S (OPENTEXTSTREAM SRCPATH) - ) - (TEDIT.FORMAT.HARDCOPY S DEST T NIL NIL - NIL 'PDF] - (PRINT 'FAIL T))) - (CL:FORMAT T "DONE"))) - (CL:WHEN (AND (MEMB 'PRETTY PHASES) - (MEMB EXT '(NIL IL)) - [SETQ LSFP (CAR (NLSETQ (LISPSOURCEFILEP SRCPATH] - (NEQ LSFP *COMMON-LISP-READ-ENVIRONMENT*)) - (PRINTOUT T "PDF printing " " to " DEST "...") - (OR (NLSETQ (CL:WITH-OPEN-STREAM (STR (OPEN-PDF-STREAM DEST)) - (PRETTYFILEINDEX SRCPATH NIL STR))) - (PRINT 'FAIL T)) - (PRINTOUT T "DONE" T))]) + (CL:WHEN (AND (NULL EXT) + (EQ (CHCON1 NAME) + (CHARCODE %.))) + (SETQ EXT (SUBATOM NAME 2))) + (CL:WHEN (MEMB EXT HC-SKIP-EXTENSIONS) + + (* ;; "ignore any of these extensions") + + (CL:FORMAT T "~&Ignoring (on extension): ~a~%%" SRCPATH) + (RETURN)) + + (* ;; + " doesn't (yet) implement / to - translation. .readme should show up as -.readme.") + + (SETQ DEST (CONCAT NOV ".pdf")) + (CL:WHEN (AND (NOT REDO) + (INFILEP DEST)) + (CL:FORMAT T "~a is already there~%%" DEST) + (RETURN)) + (CL:WHEN (INFILEP (CONCAT DEST ".skip")) + (CL:FORMAT T "Explicit .skip ~a~%%" DEST) + (RETURN)) + (CL:FORMAT T "~&Starting on ~a:~%%" SRCPATH) + (CL:WHEN [AND DOTEDIT (OR (MEMB EXT '(TEDIT TED SKETCH BRAVO)) + (CAR (REPORT-AND-GO (TEDIT.FORMATTEDFILEP + SRCPATH) + (CL:FORMAT NIL + "~~%%~S TEDIT.FORMATTEDFILEP of ~A -- Condition: ~~A" + 'FAIL SRCPATH] + (if (EQ REDO 'TEST) + then (CL:FORMAT T "Testing open ~a..." SRCPATH) + (CLOSEF? (OPENTEXTSTREAM SRCPATH)) + else (REPORT-AND-GO (CL:WITH-OPEN-STREAM (S (OPENTEXTSTREAM + SRCPATH)) + (TEDIT.FORMAT.HARDCOPY S DEST T NIL NIL + NIL 'PDF)) + (CL:FORMAT NIL + "~~%%~S TEDIT.FORMAT.HARDCOPY of ~A -- Condition: ~~A" + 'FAIL SRCPATH))) + (PRIN3 " DONE" T) + (TERPRI T) + (RETURN)) + (CL:WHEN (AND DOPRETTY (OR (NULL EXT) + (EQ EXT 'IL)) + [SETQ LSFP (CAR (REPORT-AND-GO (LISPSOURCEFILEP SRCPATH) + (CL:FORMAT NIL + "~~%%~S LISPSOURCEFILEP of ~A -- Condition: ~~A" + 'FAIL SRCPATH] + (NEQ LSFP *COMMON-LISP-READ-ENVIRONMENT*)) + + (* ;; "Why the check for NEQ *COMMON-LISP-READ-ENVIRONMENT* ??") + + (PRIN3 "PDF printing " T) + (PRIN3 SRCPATH T) + (PRIN3 " to " T) + (PRIN3 DEST T) + (PRIN3 " ..." T) + (REPORT-AND-GO (CL:WITH-OPEN-STREAM (STR (OPEN-PDF-STREAM DEST)) + (PRETTYFILEINDEX SRCPATH NIL STR)) + (CL:FORMAT NIL + "~~%%~S PRETTYFILEINDEX of ~A -- Condition: ~~A" + 'FAIL SRCPATH)) + (PRIN3 " DONE" T) + (TERPRI T) + (RETURN)) + + (* ;; "Everything else") + + (PRIN3 "No processing." T) + (TERPRI T]) (MAKE-INDEX-HTMLS - [LAMBDA (BASE TOP LEVEL ROOT.NAME) (* ; "Edited 28-Jan-2026 11:01 by lmm") + [LAMBDA (BASE TOP LEVEL ROOT.NAME) (* ; "Edited 15-Apr-2026 16:33 by mth") + (* ; "Edited 28-Jan-2026 11:01 by lmm") (* ; "Edited 27-Jan-2026 10:50 by lmm") (* ; "Edited 23-Jan-2026 11:59 by lmm") (* ; "Edited 29-Apr-2024 14:18 by lmm") @@ -339,8 +393,8 @@ then 2 else 1)) -2))) - (CL:UNLESS (OR (MEMB SHORTNAME '(.git)) - (MEMB SHORTNAME '(.GIT)) + (CL:UNLESS (OR (EQ SHORTNAME '.git) + (EQ SHORTNAME '.GIT) [AND (STRPOS ".git" (L-CASE FULLNAME)) (NOT (STRPOS ".github" (L-CASE FULLNAME] (INFILEP (CONCAT FULLNAME ".skip"))) @@ -372,7 +426,8 @@ (PUTPROPS MEDLEY-UTILS FILETYPE :COMPILE-FILE) -[XCL:REINSTALL-ADVICE 'TEDIT.PROMPTPRINT :BEFORE '((:LAST (PRIN1 MSG T))) +[XCL:REINSTALL-ADVICE 'TEDIT.PROMPTPRINT :BEFORE '[(:LAST (PROGN (PRIN3 " " T) + (PRIN3 MSG T] :AFTER '((:LAST (AND (STRPOS "GETFN" MSG) (HELP MSG] @@ -463,6 +518,15 @@ (SETQ DIFF (COMPARESOURCES X DESTFILE NIL)) (TERPRI]) ) + +(DEFMACRO REPORT-AND-GO (FORM REPORT-FORMAT) (* ; "Edited 16-Apr-2026 16:02 by mth") + `[CL:MULTIPLE-VALUE-BIND (FORM-RESULT ERROR-CONDITION) + (IGNORE-ERRORS (CL:VALUES ,FORM)) (* ; "Only the first value") + (COND + (ERROR-CONDITION (PRIN3 (CL:FORMAT NIL ,REPORT-FORMAT ERROR-CONDITION) + T) + NIL) + (T (LIST FORM-RESULT]) (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDTOVAR NLAMA ) @@ -472,9 +536,10 @@ (ADDTOVAR LAMA ) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (1312 8246 (GATHER-INFO 1322 . 6704) (MAKE-FULLER-DB 6706 . 7615) (MEDLEY-FIX-LINKS 7617 - . 8010) (MEDLEY-FIX-DATES 8012 . 8244)) (9425 12213 (MAKE-EXPORTS-ALL 9435 . 10494) ( -MAKE-WHEREIS-HASH 10496 . 11685) (MAKE-WHEREIS-LOOPS 11687 . 12211)) (12214 21862 (HCFILES 12224 . -16487) (MAKE-INDEX-HTMLS 16489 . 21860)) (22112 26724 (RECOMPILE-ONE 22122 . 24019) (RECMPL 24021 . -24624) (COMPILE-SETUP 24626 . 25250) (REMAKEFILES 25252 . 26722))))) + (FILEMAP (NIL (1289 8223 (GATHER-INFO 1299 . 6681) (MAKE-FULLER-DB 6683 . 7592) (MEDLEY-FIX-LINKS 7594 + . 7987) (MEDLEY-FIX-DATES 7989 . 8221)) (9795 12371 (MAKE-EXPORTS-ALL 9805 . 10652) ( +MAKE-WHEREIS-HASH 10654 . 11843) (MAKE-WHEREIS-LOOPS 11845 . 12369)) (12372 24990 (HCFILES 12382 . +19514) (MAKE-INDEX-HTMLS 19516 . 24988)) (25324 29936 (RECOMPILE-ONE 25334 . 27231) (RECMPL 27233 . +27836) (COMPILE-SETUP 27838 . 28462) (REMAKEFILES 28464 . 29934)) (29938 30408 (REPORT-AND-GO 29938 . +30408))))) STOP diff --git a/internal/MEDLEY-UTILS.DFASL b/internal/MEDLEY-UTILS.DFASL index 00401e75e14ee85dc9a197e6d8d94c9f3466971a..d375d4f36c9864dbe49b3c2f7584b9e9da84e570 100644 GIT binary patch delta 9471 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 diff --git a/scripts/do_hcfiles.sh b/scripts/do_hcfiles.sh index 0246a0db..f32f61de 100755 --- a/scripts/do_hcfiles.sh +++ b/scripts/do_hcfiles.sh @@ -57,7 +57,12 @@ main() { # save dribble file to loadups; extract and save fails "${MEDLEYDIR}"/scripts/cpv ${logindir}/HCFILES.DRIBBLE "${MEDLEYDIR}"/loadups/hcfiles.dribble - grep "IL:FAIL" < "${MEDLEYDIR}"/loadups/hcfiles.dribble > ${logindir}/fails + if [ -f "$(command -v perl)" ] && [ -x "$(command -v perl)" ] + then + perl "${MEDLEYDIR}"/scripts/getFails.pl '^[^\n]*IL:FAIL' 'DONE' "${MEDLEYDIR}"/loadups/hcfiles.dribble > ${logindir}/fails + else + echo Unable to extract FAIL information from "${MEDLEYDIR}"/loadups/hcfiles.dribble > ${logindir}/fails + fi "${MEDLEYDIR}"/scripts/cpv ${logindir}/fails "${MEDLEYDIR}"/loadups/hcfiles-fails.txt # cleanup diff --git a/scripts/getFails.pl b/scripts/getFails.pl new file mode 100644 index 00000000..4c1fea8d --- /dev/null +++ b/scripts/getFails.pl @@ -0,0 +1,31 @@ +#!/usr/bin/env perl +use strict; +use warnings; + +die "Usage: $0 [file...]\n" unless @ARGV >= 2; + +my $pat1 = shift; +my $pat2 = shift; +my $regex1line = qr/${pat1}.*?${pat2}/; # all on 1 line +my $regexStart = qr/${pat1}/; # the line has the start pattern +my $regexEnd = qr/${pat2}/; # the line has the end pattern + +my $flag = 0; + +while (<>) { + if ($flag) { # we're in a multi-line block + print; + if (/$regexEnd/) { # does this line end the multi-line block? + $flag = 0; + print "\n"; # separator + }; + } + elsif (/$regex1line/) { # all on 1 line + print; + print "\n"; # separator + } + elsif (/$regexStart/) { # begin a multi-line block + print; + $flag = 1; + } +} \ No newline at end of file From 4e761298eaccca904b0dd16682f84930b273a651 Mon Sep 17 00:00:00 2001 From: rmkaplan <69548581+rmkaplan@users.noreply.github.com> Date: Wed, 29 Apr 2026 11:59:27 -0700 Subject: [PATCH 07/11] This was well-formed, but had a bogus slug character showing as a black box (#2584) Fix typo --- lispusers/BITMAP-GALLERY.TEDIT | Bin 84639 -> 84776 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/lispusers/BITMAP-GALLERY.TEDIT b/lispusers/BITMAP-GALLERY.TEDIT index aa14181ed8b085855ade87b6c3dc10f51792e103..ab88e8cd1d483b591a9f104786e0b27dba4bb0fe 100644 GIT binary patch delta 6107 zcma)AeQXow8Gm2j*-kDjgp9P|GY83YQd$-7QZLd6bKIXssq8n;l8GT-_zYc*z0mBN@f}DN-HD&P;f+1 zMxx2YW2!Ha+?z;FMW$kjNo6P!PpF>wR6-3!Q_)Cr=N{D;ot%m$l{PrQ_CR7Ps`ka= zaW#~Pj1}xxslG@&wkwgGj78MW_O|AB#T%QNi0p0bjl|>8#Y9#X>y`L(X zI@?V+*Gl&+QNnv7W6_inPE15qZzL7lspcd~CMMnGRLGZzi_pwD=|bjJscvCQQ?rWy z_#<;t{$PHQBJ&OVdzD2p@X0*t_+64Q4689?7U|v2fDnx6+kzacTiC-$LC+;Y>!mbE>?OH zDO|9gWMV??O-6U`R&x^Vj}@Ogi;JXPtUgl8K}1(JLbw-KUY9G1S!yrVe`dEzk2U^7 z;s6e|xB=jGI73;lweE8&n-j_Ll#+?JEds@JZQr#C645$3-m+P^**mY=IOuEZS^%M; z>!z)$m>XL&t@Fzl`O;N*?oyP^v7O^PqRHJ#W`m~++_!ly*p-62*3o-O=I^Tm=VdPD zheI{siYi6%MUrFs(ub$^!JdRW?ef!8Ci2@3e`@1_ zhn_#oFW}$4c`rm?eDtz?L7_}4iIF}`G216)9?qWP{pt5c_=;^k(FOj;PxP2l{N&_D zxs1cp*8k`J%URvsMF+e*hCoSwMcakWn%S6W11+6Hc&k+nPOEQx# z%wBTSvM&T9VHr}ZVShONsb%BsWWt;9&2t%^J?xaid zNPVP_b~A>y979CXrD()Ub*LfuBTJH=W90^2$j%fqCs}VNZOH5$b5we)x_@<2mqkYq zjbs%==jHr}jydh7O=(>$lTxypID$jN{R1AxoRB3AzCKTAC=?tDs|~(jAQ)1cRByoJ zyPqvmGjaL?o^ZI|H#hqN{5%#@hfmLlU$C#_?B`(4!;8&rB%f@0F4@w8y@!;{g-s)o z1Hs-PslJ_Y4Ew#1YWeN#_3Z&I1RI2q`DhO8;INS|z?li`IRO@e?Fc7atjhjk9j$fY zWhq+Y1^(CxJama6Hk|Q>HG~15_hH;29t!H=M+^aEM`ggB=N$-oH#YV9 zhkFLspaJU?wE9S-g-EbFP<>gXW|I%Ke->#OU5)^8gC!W^VI#Og=S6O8{n1U=ri%!( zx}y59$k`IJ9W42n^oYo90a_vGO^X(%158e)7CT#Fvf0SxN!MFY0WV*?&qdliXpK>< zIwWDB7J4H4S}(0m!*+(2609%w3T9UNf=HW>Vgza8g8-=fUy&PYd;qoI$Z6B2o-)+Z zry^%d%ymUE_0GkPHR=uqdc*8TQ(Pw$U=7$lq}Ze=LCs>kG&TlgV0&3a!YID&HzKW3 zG~0EN){;Ogc?4n_O9L?_hsY0y6H=rfh_n{edNemcF(Ed8X!c=`zTWmrA{dCyg2-29 z)&4=GwNOwI%%FhX(35jBuXjGCTZC$89j8Uw+s1Uld#+_{rD3t*z!oeKsPkIKMv?Zm zF(vC5fM`ZY=P$`4R!Vub5R{^_HIy;ToiD|DH`N zeM_XZ)S;6_#1mu#$o7wOZszqywpjbw%OsD^Ddv3$X4C;=4hq}~>n(=_YPRw5B%hs4 z3xV`8Vv31nX7M=^B}Gk_)*qHev6T(8g>iI=w3cG~iV~Oa5V`5K#)t6a%xXw{o=9tn zX?ik2HnUgLQE7mt`Bw&=5;*_RQ1e<#%#NZwr5}sj3{Xk9d&Ug4ynj|_;YhSF^6-ps zr|C}-_9XRSRc=2Wu@m59tI)X!!=8II|3EGm_JNU!{fsCR6ITpkdVfJ~!lG9o6+pJv z^BdX0&Hg*byA{ivHZJ5k8^}>S7L-AeMKD22sYCBvQ$DuzA)nRD&tnny6zz zW}emHW}o>jkq2d;2suFnCm%V6v{=G$ivspu!3&r2M@z!?37r%S_&8NOjXxp1~#lfHdA1valg8%>k delta 6148 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 From 285e35f2ead86d761fc8b9dc9267c1e91a079874 Mon Sep 17 00:00:00 2001 From: rmkaplan <69548581+rmkaplan@users.noreply.github.com> Date: Thu, 30 Apr 2026 22:55:46 -0700 Subject: [PATCH 08/11] MCCS now includes XCCS external format, separate XCCS file now in Obsolete (#2590) --- sources/XCCS | 323 ---------------------------------------------- sources/XCCS.LCOM | Bin 3300 -> 0 bytes 2 files changed, 323 deletions(-) delete mode 100644 sources/XCCS delete mode 100644 sources/XCCS.LCOM diff --git a/sources/XCCS b/sources/XCCS deleted file mode 100644 index 12746d5d..00000000 --- a/sources/XCCS +++ /dev/null @@ -1,323 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) - -(FILECREATED "13-Jul-2025 23:08:39" {DSK}kaplan>Local>medley3.5>git-medley>sources>XCCS.;10 15413 - - :EDIT-BY rmk - - :CHANGES-TO (VARS XCCSCOMS) - - :PREVIOUS-DATE "25-Mar-2025 23:40:52" -{DSK}kaplan>Local>medley3.5>git-medley>sources>XCCS.;9) - - -(PRETTYCOMPRINT XCCSCOMS) - -(RPAQQ XCCSCOMS - [(FNS \XCCSINCCODE \XCCSPEEKCCODE \XCCSOUTCHAR \XCCSBACKCCODE \XCCSFORMATBYTESTREAM - \XCCSCHARSETFN) - (FNS \CREATE.XCCS.EXTERNALFORMAT) - (FNS \NSIN.24BITENCODING.ERROR) - (FNS KANJICHARSETP CHINESECHARSETP) - (INITVARS (*SIGNAL-24BIT-NSENCODING-ERROR*)) - (DECLARE%: EVAL@COMPILE DONTCOPY (EXPORT (CONSTANTS (\NORUNCODE 255) - (NSCHARSETSHIFT 255)) - (MACROS \RUNCODED))) - (DECLARE%: DONTEVAL@LOAD DOCOPY (P (\CREATE.XCCS.EXTERNALFORMAT]) -(DEFINEQ - -(\XCCSINCCODE - [LAMBDA (STREAM COUNTP) (* ; "Edited 8-Dec-2023 15:28 by rmk") - (* ; "Edited 6-Aug-2021 15:57 by rmk:") - -(* ;;; "Returns a 16 bit character code. SHIFTEDCSET is STREAM's char set left shifted 8.") - -(* ;;; "If COUNTP is non-NIL, the variable *BYTECOUNTER* is set freely to the number of bytes read.") - -(* ;;; "This doesn't do EOL conversion, \INCHAR does that") - - (DECLARE (USEDFREE *BYTECOUNTER*)) - (\DTEST STREAM 'STREAM) - (LET (NUMBYTES (CSET (ffetch (STREAM CHARSET) of STREAM)) - (CHAR (\BIN STREAM))) (* ; - "Error on EOF unless ENDOFSTREAMOP does something else.") - - (* ;; " NUMBYTES tracks the number of \BINs. ") - - (IF (EQ CHAR NSCHARSETSHIFT) - THEN (* ; - "Shifting character sets, toss CHAR") - (SETQ CSET (\BIN STREAM)) - (IF (NEQ NSCHARSETSHIFT CSET) - THEN (* ; - "Shift to new runcode CSET: SH CS CH") - (SETQ CHAR (\BIN STREAM)) - (SETQ NUMBYTES 3) - (freplace (STREAM CHARSET) of STREAM with CSET) - ELSEIF (EQ 0 (\BIN STREAM)) - THEN (* ; "SH SH CSH CS CH where CSH is 0") - - (* ;; - "The high-order character set byte must be 0, because we don't support obese characters (24 bit)") - - (SETQ CSET (\BIN STREAM)) - (SETQ CHAR (\BIN STREAM)) (* ; "To align with below") - (SETQ NUMBYTES 5) - (freplace (STREAM CHARSET) of STREAM with \NORUNCODE) - ELSE (\NSIN.24BITENCODING.ERROR STREAM)) - - (* ;; "The stream now knows the new character set, runcoded or not.") - - ELSEIF (EQ CSET \NORUNCODE) - THEN (* ; "2-bytes") - (SETQ CSET CHAR) - (SETQ CHAR (\BIN STREAM)) - (SETQ NUMBYTES 2) - ELSE - (* ;; "Runcoded CSET and CHAR") - - (SETQ NUMBYTES 1)) - (CL:WHEN COUNTP (SETQ *BYTECOUNTER* NUMBYTES)) - (CL:WHEN CHAR (* ; - "Typically NIL if ENDOFSTREAMOP returned NIL at EOF ") - (LOGOR (UNFOLD CSET 256) - CHAR))]) - -(\XCCSPEEKCCODE - [LAMBDA (STREAM NOERROR) (* ; "Edited 8-Dec-2023 15:32 by rmk") - (* ; "Edited 21-Jun-2021 23:44 by rmk:") - - (* ;; - "Modeled on \XCCSINCCODE, but peeks at the last byte in the sequence, leaves the stream unchanged") - - (\DTEST STREAM 'STREAM) - (LET ((CSET (ffetch (STREAM CHARSET) of STREAM)) - (CHAR (\PEEKBIN STREAM NOERROR))) - - (* ;; "Returns a 16 bit character code. Doesn't do EOL conversion--\PEEKCCODE does that. ") - - (* ;; "We don't change the charset in the stream, put the file ptr back the way it was.") - - (CL:WHEN CHAR - (IF (EQ CHAR NSCHARSETSHIFT) - THEN (\BIN STREAM) (* ; "Read the peeked shifting byte") - (SETQ CSET (\BIN STREAM)) (* ; "Consume the char shift byte") - (IF (NEQ CSET NSCHARSETSHIFT) - THEN - (* ;; - "Shift to new runcode CSET: SH CS CH. We have to BIN what we peeked, BIN, and peek again") - - (SETQ CHAR (\PEEKBIN STREAM NOERROR)) - (\BACKFILEPTR STREAM) - (\BACKFILEPTR STREAM) - ELSEIF (EQ 0 (\BIN STREAM)) - THEN (* ; "SH SH CSH CS CH where CSH is 0") - - (* ;; - "Note: no eof error check on this \BIN -- an eof in the middle of a charset shift is an error") - - (SETQ CSET (\BIN STREAM)) - (SETQ CHAR (\PEEKBIN STREAM NOERROR)) - (\BACKFILEPTR STREAM) - (\BACKFILEPTR STREAM) - (\BACKFILEPTR STREAM) - (\BACKFILEPTR STREAM) - ELSE (\NSIN.24BITENCODING.ERROR STREAM)) - ELSEIF (EQ CSET \NORUNCODE) - THEN (* ; "2 byte runs, BIN/PEEK/BACK") - (SETQ CSET CHAR) - (\BIN STREAM) - (SETQ CHAR (\PEEKBIN STREAM NOERROR)) (* ; "One BACKFILEPTR seems OK") - (\BACKFILEPTR STREAM)) - - (* ;; "No need to back up for the runcoded case") - - (CL:WHEN CHAR - (LOGOR (UNFOLD CSET 256) - CHAR)))]) - -(\XCCSOUTCHAR - [LAMBDA (STREAM CHARCODE) (* ; "Edited 13-Aug-2021 10:24 by rmk:") - - (* ;; "Closed function for the :XCCS external format, also called when :XCCS is the default") - - (COND - ((EQ CHARCODE (CHARCODE EOL)) - (FREPLACE (STREAM CHARPOSITION) OF STREAM WITH 0) - [COND - [(NOT (\RUNCODED STREAM)) (* ; - "Charset is a constant 0, we put out the high-order byte.") - (\BOUT STREAM (\CHARSET (CHARCODE EOL] - ((EQ (\CHARSET (CHARCODE EOL)) - (ffetch (STREAM CHARSET) of STREAM))) - (T (* ; - "We are runcoded, and not in character set 0, have to shift.") - (\BOUT STREAM NSCHARSETSHIFT) - (\BOUT STREAM (freplace (STREAM CHARSET) of STREAM with (\CHARSET - (CHARCODE EOL] - - (* ;; "We are now in the right charset (0) for the first EOL byte. For CRLF, the CR is immediately followed by the LF byte, without the prefix 0 byte even if not runcoded, i.e. the 2 bytes are though of as a composite. The stream is left in CSET0 (the freplace above), read for another shift according to the next shift in a runcoded file.") - - (\BOUTEOL STREAM)) - (T (CHANGE (FFETCH (STREAM CHARPOSITION) OF STREAM) - (IPLUS16 1 DATUM)) - (COND - ((NOT (\RUNCODED STREAM)) - (\BOUT STREAM (\CHARSET CHARCODE)) - (\BOUT STREAM (\CHAR8CODE CHARCODE))) - ((EQ (\CHARSET CHARCODE) - (ffetch (STREAM CHARSET) of STREAM)) - (\BOUT STREAM (\CHAR8CODE CHARCODE))) - (T (\BOUT STREAM NSCHARSETSHIFT) - (\BOUT STREAM (freplace (STREAM CHARSET) of STREAM with (\CHARSET - CHARCODE)) - ) - (\BOUT STREAM (\CHAR8CODE CHARCODE]) - -(\XCCSBACKCCODE - [LAMBDA (STREAM COUNTP) (* ; "Edited 8-Dec-2023 15:34 by rmk") - (* ; "Edited 19-Jul-2022 17:12 by rmk") - (* ; "Edited 13-Aug-2021 14:08 by rmk:") - (DECLARE (USEDFREE *BYTECOUNTER*)) - (LET ((BYTE (AND (\BACKFILEPTR STREAM) - (\PEEKBIN STREAM))) - (CSET (fetch (STREAM CHARSET) of STREAM))) - (CL:WHEN BYTE - - (* ;; "The immediately preceding byte must be a character byte. If it is a byte in a runcode, then we are done, even if the byte before is part of a shift sequence.") - - (* ;; "But if we are currently in a nonruncoded file, we have to go back one more to get the character set byte.") - - (* ;; "If we can't back up, we are already at the beginning.") - - (IF (EQ \NORUNCODE CSET) - THEN (IF (\BACKFILEPTR STREAM) - THEN (CL:WHEN COUNTP (SETQ *BYTECOUNTER* -2)) - (LOGOR (UNFOLD (\PEEKBIN STREAM) - 256) - BYTE) - ELSE (CL:WHEN COUNTP (SETQ *BYTECOUNTER* -1)) - NIL) - ELSE (CL:WHEN COUNTP (SETQ *BYTECOUNTER* -1)) - (LOGOR (UNFOLD CSET 256) - BYTE)))]) - -(\XCCSFORMATBYTESTREAM - [LAMBDA (STREAM BYTESTREAM) (* ; "Edited 26-Mar-2024 11:00 by rmk") - (* ; "Edited 19-Mar-2024 16:02 by rmk") - (\EXTERNALFORMAT BYTESTREAM (\EXTERNALFORMAT STREAM)) - - (* ;; "This stream may be read as a continuation of STREAM (TTYIN, LAFITE?), and we want to make sure that the bytes are encoded properly. So let's assert (and possibly mark) that that's its current situation.") - - (\XCCSCHARSETFN BYTESTREAM (fetch (STREAM CHARSET) of STREAM)) - BYTESTREAM]) - -(\XCCSCHARSETFN - [LAMBDA (STREAM CHARSET DONTMARKSTREAM) (* ; "Edited 9-Dec-2023 11:18 by rmk") - - (* ;; "This differs from \GENERIC.CHARSET in that it actually writes the shifting bytes into an output stream, unless DONTMARKSTREAM. It will do write the shifts, even if it just replicates the situation that is already there (presumably CHARSET = the old CHARSET). The client should test and avoid calling if useless shifts are not desired.") - - (LET [(CSET (ffetch (STREAM CHARSET) of (\DTEST STREAM 'STREAM] - (CL:WHEN CHARSET - (CL:WHEN (EQ CHARSET T) - (SETQ CHARSET \NORUNCODE)) - (CL:UNLESS (EQ CHARSET CSET) - (freplace (STREAM CHARSET) of STREAM with CHARSET) - (CL:UNLESS DONTMARKSTREAM - (CL:WHEN (\IOMODEP STREAM 'OUTPUT T) - (\BOUT STREAM NSCHARSETSHIFT) - (if (EQ CHARSET \NORUNCODE) - then (\BOUT STREAM \NORUNCODE) - (\BOUT STREAM 0) - else (\BOUT STREAM CHARSET)))))) - CSET]) -) -(DEFINEQ - -(\CREATE.XCCS.EXTERNALFORMAT - [LAMBDA (NAME EOL) (* ; "Edited 7-Dec-2023 23:03 by rmk") - (* ; "Edited 30-Jun-2022 18:08 by rmk") - (* ; "Edited 10-Sep-2021 19:49 by rmk:") - -(* ;;; "Create the :XCCS external format. Stream's EOL overrides the (vacuous) default here") - - (MAKE-EXTERNALFORMAT (OR NAME :XCCS) - (FUNCTION \XCCSINCCODE) - (FUNCTION \XCCSPEEKCCODE) - (FUNCTION \XCCSBACKCCODE) - (FUNCTION \XCCSOUTCHAR) - (FUNCTION \XCCSFORMATBYTESTREAM) - (OR EOL 'LF) - T NIL NIL (FUNCTION \XCCSCHARSETFN]) -) -(DEFINEQ - -(\NSIN.24BITENCODING.ERROR - [LAMBDA (STREAM) (* bvm%: "12-Mar-86 15:35") - (DECLARE (USEDFREE *SIGNAL-24BIT-NSENCODING-ERROR*)) - -(* ;;; "Called if we see the sequence shift,shift on STREAM -- means shift to 24-bit character set, which we don't support. Usually this just means we're erroneously reading a binary file as text. If this function returns, its value is taken as a character set to shift to") - - (COND - (*SIGNAL-24BIT-NSENCODING-ERROR* (* ; - "Only cause error if user/reader cares") - (ERROR "24-bit NS encoding not supported" STREAM))) - (* ; "Return charset zero") - 0]) -) -(DEFINEQ - -(KANJICHARSETP - [LAMBDA (CHARSET) (* ; "Edited 13-Jun-2025 16:33 by rmk") - - (* ;; "Returns CHARSET if it is a charset with MCCS Kanji characters") - - (AND (<= 48 CHARSET 118) - CHARSET]) - -(CHINESECHARSETP - [LAMBDA (CHARSET) (* ; "Edited 18-Jun-2025 23:09 by rmk") - (* ; "Edited 13-Jun-2025 16:33 by rmk") - - (* ;; "Returns CHARSET if it is a charset with MCCS Chinese characters") - - (AND (<= 161 CHARSET 212) - CHARSET]) -) - -(RPAQ? *SIGNAL-24BIT-NSENCODING-ERROR* ) -(DECLARE%: EVAL@COMPILE DONTCOPY -(* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: EVAL@COMPILE - -(RPAQQ \NORUNCODE 255) - -(RPAQQ NSCHARSETSHIFT 255) - - -(CONSTANTS (\NORUNCODE 255) - (NSCHARSETSHIFT 255)) -) -(DECLARE%: EVAL@COMPILE - -(PUTPROPS \RUNCODED MACRO (OPENLAMBDA (STREAM) - - (* ;; "returns NIL is the stream is not runcoded, that is, if the stream has 16 bit bytes explicitly represented") - (* ; - "note that neq is ok since charsets are known to be SMALLP's") - (NEQ (fetch CHARSET of STREAM) - \NORUNCODE))) -) - -(* "END EXPORTED DEFINITIONS") - -) -(DECLARE%: DONTEVAL@LOAD DOCOPY - -(\CREATE.XCCS.EXTERNALFORMAT) -) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (997 12253 (\XCCSINCCODE 1007 . 3986) (\XCCSPEEKCCODE 3988 . 6657) (\XCCSOUTCHAR 6659 . -8879) (\XCCSBACKCCODE 8881 . 10425) (\XCCSFORMATBYTESTREAM 10427 . 11048) (\XCCSCHARSETFN 11050 . -12251)) (12254 13027 (\CREATE.XCCS.EXTERNALFORMAT 12264 . 13025)) (13028 13859 ( -\NSIN.24BITENCODING.ERROR 13038 . 13857)) (13860 14500 (KANJICHARSETP 13870 . 14126) (CHINESECHARSETP -14128 . 14498))))) -STOP diff --git a/sources/XCCS.LCOM b/sources/XCCS.LCOM deleted file mode 100644 index 031ae49db416dd6ea434ae3cd210c1bc067874f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3300 zcmbtWO>7%g5MDbW1y_~aMu;ClG%_HqE7^G0c4C_>s+J2UOT823z1_95&QFo*gZKT+o0)Is zn>SA^(vqstSV^tYn5va@m@`PBLY62*RL!PlRke%=%$bxFZIZ7}Ea!vuXaIU%P(PUaGsTrwL0G1BO6?X)|sCUmzU0-;ZfR^_v6_1#u)cX4xV zr?a-bSnW2}I*VJaW~cQ@GM-+%)!vIav&G%+onE80ySQ8^Sn>DJD%wf->?Gw}G7*9G zUTb71)cSa*xBE^GDnz@k7Rto5sBJ)@jHoR-nzzxPQoUM5Fk_AJcsv5lwLSFr6icZ@ zB>KN#KOag6N$Hf7gd8oZb}YXFy{%2iq2t;TwPLmo;!VT^EGPxNWH;tGv!C>ldvGpXJJ)C9C107S8b{x993J2Q`6K<%x>EC6NfHjgVKr*^l3OXohvv7 z6k&Z46olijNQilOIT%oz{T_o?QDER8{84c>A2=xXiyY)z45V*k;Ox7f{Wo3lHyG;v zD-8C)J+R`5j-gBP0<7k-*jeQowh5Ai!C?6Ess`C}0s~pee=?Ku&le^%FC@l_)3RSS zl^*X&^P};p!Po0HCl%)#ClpeQGjL2PjP&;`(xh`~*uSQ1{5s=M37LdZ`AXS;osnu| zc<>rhg{NSkG&hhlgAI4anG<$SZ91QyXMX>~uc-gBLLT!23h5mE%|~JKnCTuK%z3Jn zCV7k*E~`wxdSy~x5T$t*4#Wi#4-6kAM{5!bEMH4_Bkus!tB}Un@$D2#2+Cp9G8wP7 z7UsPXvfQmV=_I2W1tuBI3YJwatIRViS3Xg>W{_1bkKf^o&UX}i7KXz#uj99!t^O>z zxAkvh+NI{B@{=$*ys&lDn7$px9sCYdwkU`Ur$@{ba>>Wq{pfVJ7&8`u%;-=H90q27CZdELS^?)EujoiE(5Xk-Ma=6(Z z-Wzm|)`R8Y!Bd4WQsxi-QEst|sC|+B_y6*!J3v|wk>#Tzam!=>p?jqa_V)!bi_zx{ z%y@$ZkCXE(QH;B39H@E?8-;-&Qz^hjgRT2=yt(_M zRPJBk{-60rT!HrOCYQOyfihO5phhY*=C{UN%uFT|Nms>Ig>}jNJ3%3Kld=s2#_uQD z6&#nAxKNE1(QkRfqG2X&rn&ow|7;i$XqlSfm z5HP;&vJ5Mnvm1yXJ#hP+rdC5D(la8bV(aZa&@5~O*GpAaaGgJI(rULkke_@qFF9ZtE`r6zKE+eQZRK4t1DZKV*ZaAWY-lpTGdGr dLPgy%XrTUcf`m%23|Ri&e Date: Thu, 30 Apr 2026 23:04:26 -0700 Subject: [PATCH 09/11] Move UNIXY commands to UNIXUTILS, delete UNIXYCD (#2587) * Move UNIXY commands to UNIXUTILS, delete UNIXYCD * Delete UNIXYCD --- internal/loadups/LOADUP-FULL | 22 ++++++++++------------ internal/loadups/LOADUP-FULL.LCOM | Bin 3022 -> 3032 bytes library/UNIXUTILS | 27 +++++++++++++++++++-------- library/UNIXUTILS.DFASL | Bin 8129 -> 9231 bytes lispusers/UNIXYCD | 24 ------------------------ lispusers/UNIXYCD.LCOM | 13 ------------- lispusers/UNIXYCD.TXT | 13 ------------- 7 files changed, 29 insertions(+), 70 deletions(-) delete mode 100644 lispusers/UNIXYCD delete mode 100644 lispusers/UNIXYCD.LCOM delete mode 100644 lispusers/UNIXYCD.TXT diff --git a/internal/loadups/LOADUP-FULL b/internal/loadups/LOADUP-FULL index f6289eff..00240f7e 100644 --- a/internal/loadups/LOADUP-FULL +++ b/internal/loadups/LOADUP-FULL @@ -1,12 +1,12 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) +(DEFINE-FILE-INFO :PACKAGE "INTERLISP" :READTABLE "INTERLISP" :BASE 10) -(FILECREATED "14-Feb-2026 00:42:39" {WMEDLEY}loadups>LOADUP-FULL.;38 5967 +(FILECREATED "28-Apr-2026 10:01:06" {WMEDLEY}loadups>LOADUP-FULL.;47 5896 :EDIT-BY rmk :CHANGES-TO (FNS LOADUP-FULL) - :PREVIOUS-DATE "13-Feb-2026 00:47:52" {WMEDLEY}loadups>LOADUP-FULL.;37) + :PREVIOUS-DATE "16-Apr-2026 09:37:27" {WMEDLEY}loadups>LOADUP-FULL.;46) (PRETTYCOMPRINT LOADUP-FULLCOMS) @@ -16,7 +16,8 @@ (DEFINEQ (LOADFULLFONTS - [LAMBDA NIL (* ; "Edited 20-Sep-2025 14:17 by rmk") + [LAMBDA NIL (* ; "Edited 16-Apr-2026 09:37 by rmk") + (* ; "Edited 20-Sep-2025 14:17 by rmk") (* ; "Edited 2-Sep-2025 20:06 by rmk") (* ; "Edited 13-Jul-2025 11:40 by rmk") (* ; "Edited 30-Jun-2025 00:04 by rmk") @@ -27,11 +28,8 @@ (* ;; " Don't do Interpress. Do character set 0 and the symbol character sets 41Q, 42Q, 356Q, 357Q and extended and accented Latin 43Q and 361Q") - (PRINTOUT T "Loading FULL fonts..." T) + (PRINTOUT T T "Loading FULL fonts..." T) (SETQ *POSTSCRIPT-FILE-TYPE* 'TEXT) - - (* ;; "Previous code reset the coercion variables to NIL, which would have resulted in glyph-incomplete charsets. With Medley-formatted fonts, the completions have already been installed in the files and there is no need to deal with those variables.") - (for FAMILY in '(CLASSIC MODERN TERMINAL) do (PRINTOUT T " Loading " FAMILY " ") [for SIZE in '(8 10 12) @@ -47,7 +45,8 @@ (PRINTOUT T "FULL fonts loaded" T]) (LOADUP-FULL - [LAMBDA (DRIBBLEFILE) (* ; "Edited 14-Feb-2026 00:42 by rmk") + [LAMBDA (DRIBBLEFILE) (* ; "Edited 28-Apr-2026 10:00 by rmk") + (* ; "Edited 14-Feb-2026 00:42 by rmk") (* ; "Edited 5-Feb-2026 10:26 by rmk") (* ; "Edited 28-Dec-2025 12:06 by rmk") (* ; "Edited 1-Sep-2025 11:59 by rmk") @@ -86,8 +85,7 @@ (LOADUP '(CHAT INTERPRESS TEDIT HRULE TEDIT-CHAT READNUMBER EDITBITMAP FILEBROWSER THINFILES GRAPHER SPY WHERE-IS COPYFILES MSANALYZE MSPARSE MASTERSCOPE UNIXPRINT HELPSYS - DINFO CLIPBOARD MODERNIZE WHEELSCROLL PRETTYFILEINDEX WHO-LINE UNIXCOMM UNIXCHAT - UNIXYCD)) + DINFO CLIPBOARD MODERNIZE WHEELSCROLL PRETTYFILEINDEX WHO-LINE UNIXCOMM UNIXCHAT)) (LOADFULLFONTS) (COND ((WINDOWP *WHO-LINE*) @@ -103,5 +101,5 @@ (FIXMETA) (DECLARE%: DONTCOPY - (FILEMAP (NIL (456 5929 (LOADFULLFONTS 466 . 2601) (LOADUP-FULL 2603 . 5679) (FIXMETA 5681 . 5927))))) + (FILEMAP (NIL (456 5858 (LOADFULLFONTS 466 . 2449) (LOADUP-FULL 2451 . 5608) (FIXMETA 5610 . 5856))))) STOP diff --git a/internal/loadups/LOADUP-FULL.LCOM b/internal/loadups/LOADUP-FULL.LCOM index b6d976e2ceee932f00940259cc5be03074e4efcc..e2f4fb9ee06d1a18a953c3768cc6ae1979519b62 100644 GIT binary patch delta 685 zcmZuuJ#W-N5ItYuP)>9pf=H3kN=QDUvv$|(^+$1GWBbsGJ^SQyq)<>qaX=A}AV^P7 zck)lUp1>cVrlX;w;4d&f*&!foS^M^l-kUe$uUp@?_Ut5`>MR{kwMoZ1o8}PBRs2*v zNrC9BObeqIa{^J3s-#r=<{x^wcmFOA#_H|6F{fMtqY-5hmCIMr1L2QgNUm4uy6Vd1 z`#G=aZdyPgELS{j`2rx3@QM^m?b8J$x=#-#6}A9|8(E^t{l(eF1o847eA-d=XFctaO?^ zGyu5p03#*3Ku96ZvsfX^{VP4Eot|EqGGBtp(c-|E#%7@?r3{$sLvxJ})&t@i{Z<=# zE$}-a-Inn>hKsHz>ttTb;NF<$)t_%}Cm|&GD~);vJjCi@i8bId0Mdkk7w2ae@8R|N zQFT%g;I0Q`a!efgc5Utb3lw7G=1XUTWgyc}g?5^$IwGXLWe;^Cju^d-QFO^yn5CYl*`4!xv z{VBPF_ydSze*qT`+&Fg(PKzqETJ6)Dc{6WjuXeue99VIZW<@ecvpgAOMLL4LGK^k^ zFA^YGQ72WNjY|T1RT9Q^c$nXz7Y7fwm^(;k=L1f;07?Uw2admZ7d&!QA9{q*+bE*} z^#iIFU-oO}-14?<6PTXOXVXUTPoOEM0!m50XEhEZv{5H9kpJ~0puZZ{Jx77(3#mUC z!v}Xt$-v|Kv$5ZC&H2Hay%j-zx`)ONFg z1^~wf=q1i7gbqZbA_|e^^hVE|R?qyKqD=Vuw7Wf~&=mPQ2QW(8Or=^NR=^W2uq^>F?dgF^3pGDi2T438qbIjNv2$B(fedv15ovuL;wH) diff --git a/library/UNIXUTILS b/library/UNIXUTILS index fa1c2260..2a6eac9f 100644 --- a/library/UNIXUTILS +++ b/library/UNIXUTILS @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO :PACKAGE "INTERLISP" :READTABLE "INTERLISP" :BASE 10) -(FILECREATED "27-Apr-2026 11:10:07" {DSK}frank>il>medley>library>UNIXUTILS.;7 21772 +(FILECREATED "28-Apr-2026 09:59:13" {WMEDLEY}UNIXUTILS.;61 22079 - :EDIT-BY "FGH" + :EDIT-BY rmk - :CHANGES-TO (FNS ShellOpen SLASHIT) + :CHANGES-TO (VARS UNIXUTILSCOMS) - :PREVIOUS-DATE "31-Mar-2026 00:14:19" {DSK}frank>il>medley>library>UNIXUTILS.;3) + :PREVIOUS-DATE "27-Apr-2026 11:10:07" {MEDLEY}UNIXUTILS.;60) (PRETTYCOMPRINT UNIXUTILSCOMS) @@ -23,6 +23,7 @@ (ShellOpener NIL RESET))) (FNS ShellBrowser ShellBrowse ShellOpener ShellOpen PROCESS-COMMAND SLASHIT UNIX-FILE-NAME UNIX-TMP-FILE-NAME) + (COMMANDS "cd" cdm "ls" "pwd") (PROPS (UNIXUTILS FILETYPE)))) (DECLARE%: EVAL@COMPILE DONTCOPY @@ -371,10 +372,20 @@ unless (INFILEP UNAME) do (RETURN (SLASHIT (CLOSEF (OPENSTREAM UNAME 'OUTPUT 'NEW]) ) +(DEFCOMMAND "cd" (DIR) (/CNDIR DIR)) + +(DEFCOMMAND cdm (SUBDIR) (/CNDIR (CL:IF SUBDIR + (CONCAT '{MEDLEY}/ SUBDIR) + '{MEDLEY}))) + +(DEFCOMMAND "ls" (FIRST . REST) (DODIR (CONS FIRST REST))) + +(DEFCOMMAND "pwd" NIL (DIRECTORYNAME T)) + (PUTPROPS UNIXUTILS FILETYPE CL:COMPILE-FILE) (DECLARE%: DONTCOPY - (FILEMAP (NIL (1207 1580 (ShellCommand 1207 . 1580)) (1582 1979 (ShellWhich 1582 . 1979)) (2089 21694 -(ShellBrowser 2099 . 3871) (ShellBrowse 3873 . 4558) (ShellOpener 4560 . 6248) (ShellOpen 6250 . 12197 -) (PROCESS-COMMAND 12199 . 12812) (SLASHIT 12814 . 16126) (UNIX-FILE-NAME 16128 . 20013) ( -UNIX-TMP-FILE-NAME 20015 . 21692))))) + (FILEMAP (NIL (1208 1581 (ShellCommand 1208 . 1581)) (1583 1980 (ShellWhich 1583 . 1980)) (2090 21695 +(ShellBrowser 2100 . 3872) (ShellBrowse 3874 . 4559) (ShellOpener 4561 . 6249) (ShellOpen 6251 . 12198 +) (PROCESS-COMMAND 12200 . 12813) (SLASHIT 12815 . 16127) (UNIX-FILE-NAME 16129 . 20014) ( +UNIX-TMP-FILE-NAME 20016 . 21693))))) STOP diff --git a/library/UNIXUTILS.DFASL b/library/UNIXUTILS.DFASL index 6135779e237e13d44a2d81ae66288b563ee25bfe..75d2324237209d94f142ed7aaeb9611df8d55331 100644 GIT binary patch delta 3301 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 BM;ibD diff --git a/lispusers/UNIXYCD b/lispusers/UNIXYCD deleted file mode 100644 index e6dd17ee..00000000 --- a/lispusers/UNIXYCD +++ /dev/null @@ -1,24 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) - -(FILECREATED "12-Aug-2022 12:29:18" {DSK}larry>medley>lispusers>UNIXYCD.;1 568 - - :CHANGES-TO (VARS UNIXYCDCOMS) - - :PREVIOUS-DATE "12-Aug-2022 11:14:47" {DSK}larry>medley>lispusers>UNIXYCD.;1) - - -(PRETTYCOMPRINT UNIXYCDCOMS) - -(RPAQQ UNIXYCDCOMS ((COMMANDS "cd" "ls" "pwd"))) - -(DEFCOMMAND "cd" (DIR) - (/CNDIR DIR)) - -(DEFCOMMAND "ls" (FIRST . REST) - (DODIR (CONS FIRST REST))) - -(DEFCOMMAND "pwd" () - (DIRECTORYNAME T)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL))) -STOP diff --git a/lispusers/UNIXYCD.LCOM b/lispusers/UNIXYCD.LCOM deleted file mode 100644 index 013420cc..00000000 --- a/lispusers/UNIXYCD.LCOM +++ /dev/null @@ -1,13 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) - -(FILECREATED "12-Aug-2022 12:29:30" ("compiled on " {DSK}larry>medley>lispusers>UNIXYCD.;1) -"12-Aug-2022 10:18:11" bcompl'd in "Welcome to Fuller sysout 12-Aug-2022 ..." dated -"12-Aug-2022 10:22:21") -(FILECREATED "12-Aug-2022 12:29:18" {DSK}larry>medley>lispusers>UNIXYCD.;1 568 :CHANGES-TO (VARS - UNIXYCDCOMS) :PREVIOUS-DATE "12-Aug-2022 11:14:47" {DSK}larry>medley>lispusers>UNIXYCD.;1) -(PRETTYCOMPRINT UNIXYCDCOMS) -(RPAQQ UNIXYCDCOMS ((COMMANDS "cd" "ls" "pwd"))) -(DEFCOMMAND "cd" (DIR) (/CNDIR DIR)) -(DEFCOMMAND "ls" (FIRST . REST) (DODIR (CONS FIRST REST))) -(DEFCOMMAND "pwd" NIL (DIRECTORYNAME T)) -NIL diff --git a/lispusers/UNIXYCD.TXT b/lispusers/UNIXYCD.TXT deleted file mode 100644 index 670e3988..00000000 --- a/lispusers/UNIXYCD.TXT +++ /dev/null @@ -1,13 +0,0 @@ - UNIXYCD & .LCOM .TXT - - -This file implements little commands: - -cd change Lisp's current directory to home -cd dir dir can be a path separated by / or >. - if no "hostname" is given, it's assumed {DSK} -ls [dir] list current directory or a directory that's given - non-feature: ls foo only prints foo; you need to - specify ls foo/ -pwd print working directory - From eb6ee871705535a2810f40e8662637218ad244c2 Mon Sep 17 00:00:00 2001 From: rmkaplan <69548581+rmkaplan@users.noreply.github.com> Date: Wed, 6 May 2026 11:54:13 -0700 Subject: [PATCH 10/11] COMPAREDIRECTORIES implements the ** all-subdirectories convention of .gitignore (#2583) * COMPAREDIRECTORIES implements the ** all-subdirectories convention of .gitignore * Can specify exclusions/ignores in gwc command line, after hyphen --- lispusers/COMPAREDIRECTORIES | 135 +++++++++++++----------- lispusers/COMPAREDIRECTORIES.LCOM | Bin 42873 -> 42930 bytes lispusers/GITFNS | 165 +++++++++++++++++++----------- lispusers/GITFNS.LCOM | Bin 51115 -> 52153 bytes lispusers/GITFNS.TEDIT | Bin 19802 -> 19905 bytes 5 files changed, 176 insertions(+), 124 deletions(-) diff --git a/lispusers/COMPAREDIRECTORIES b/lispusers/COMPAREDIRECTORIES index 1c2efa56..962d86d0 100644 --- a/lispusers/COMPAREDIRECTORIES +++ b/lispusers/COMPAREDIRECTORIES @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO :PACKAGE "INTERLISP" :READTABLE "INTERLISP" :BASE 10) -(FILECREATED "31-Mar-2026 10:50:22" {WMEDLEY}COMPAREDIRECTORIES.;287 138875 +(FILECREATED "28-Apr-2026 23:41:24" {MEDLEY}COMPAREDIRECTORIES.;289 139726 :EDIT-BY rmk - :CHANGES-TO (FNS CDBROWSER-COPY) + :CHANGES-TO (FNS CDFILES.PATS CDFILES.MATCH CDBROWSER-COPY) - :PREVIOUS-DATE "10-Feb-2026 21:28:55" {WMEDLEY}COMPAREDIRECTORIES.;286) + :PREVIOUS-DATE "28-Apr-2026 21:38:49" {MEDLEY}COMPAREDIRECTORIES.;288) (PRETTYCOMPRINT COMPAREDIRECTORIESCOMS) @@ -507,32 +507,37 @@ UNLESS (CDFILES.MATCH SUBDIR NAME EXT THISDEPTH EXCLUDES) COLLECT FULLNAME]) (CDFILES.MATCH - [LAMBDA (SUBDIR NAME EXT THISDEPTH PATTERNS) (* ; "Edited 26-Jan-2022 15:33 by rmk") + [LAMBDA (SUBDIR NAME EXT THISDEPTH PATTERNS) (* ; "Edited 28-Apr-2026 23:40 by rmk") + (* ; "Edited 26-Jan-2022 15:33 by rmk") (* ; "Edited 23-Dec-2021 21:47 by rmk") + (thereis P in PATTERNS suchthat - (* ;; "True if the components of the fullname match at least one of the patterns") + (* ;; "The SUBDIR test is tricky. If the exclusion pattern was internal/fonts/**, this shows up as (* * internal/fonts 65535), it has to match internal/fonts/display/completed/. Below we test for an initial substring") - (THEREIS P IN PATTERNS SUCHTHAT (AND [OR (STRING.EQUAL NAME (CAR P) - FILEDIRCASEARRAY) - (EQ '* (CAR P)) - (AND (EQ (CHARCODE %.) - (CHCON1 (CAR P))) - (EQ (CHARCODE %.) - (CHCON1 NAME)) - (OR (STRING.EQUAL NAME (SUBATOM (CAR P) - 2)) - (EQ (CHARCODE *) - (NTHCHARCODE (CAR P) - 2] - (OR (STRING.EQUAL EXT (CADR P)) - (EQ '* (CADR P))) - (OR (STRING.EQUAL SUBDIR (CADDR P)) - (NULL (CADDR P)) - (EQ '* (CADDR P))) - (ILEQ THISDEPTH (CADDDR P]) + (AND [OR (STRING.EQUAL NAME (CAR P) + FILEDIRCASEARRAY) + (EQ '* (CAR P)) + (AND (EQ (CHARCODE %.) + (CHCON1 (CAR P))) + (EQ (CHARCODE %.) + (CHCON1 NAME)) + (OR (STRING.EQUAL NAME (SUBATOM (CAR P) + 2)) + (EQ (CHARCODE *) + (NTHCHARCODE (CAR P) + 2] + (OR (STRING.EQUAL EXT (CADR P)) + (EQ '* (CADR P))) + (ILEQ THISDEPTH (CADDDR P)) + (OR (STRING.EQUAL SUBDIR (CADDR P)) + (NULL (CADDR P)) + (EQ '* (CADDR P)) + (STRPOS (CADDR P) + SUBDIR 1 NIL T]) (CDFILES.PATS - [LAMBDA (PATTERNS) (* ; "Edited 17-Jun-2023 23:36 by rmk") + [LAMBDA (PATTERNS) (* ; "Edited 28-Apr-2026 23:01 by rmk") + (* ; "Edited 17-Jun-2023 23:36 by rmk") (* ; "Edited 23-Dec-2021 17:02 by rmk") (* ;; "Returns (NAME EXT SUBDIR DEPTH) items where NAME or EXT may be the wildcard *, SD is the subdirectory (if any) and DEPTH is the number of / or > in the subdirectory") @@ -544,15 +549,15 @@ (* * NIL 1) ) ELSE (FOR P N E SD DEPTH UNPACK INSIDE PATTERNS - JOIN (SETQ UNPACK (UNPACKFILENAME.STRING P)) (* ; + JOIN (SETQ UNPACK (UNPACKFILENAME P)) (* ;  "String so we can tell the difference between x and x.") - [SETQ SD (MKATOM (LISTGET UNPACK 'SUBDIRECTORY] + (SETQ SD (LISTGET UNPACK 'SUBDIRECTORY)) (* ;; "Count the subdirectory depth") - [SETQ DEPTH (IF (EQ SD '*) - THEN MAX.SMALLP - ELSE (FOR I (CNT _ 1) FROM 1 DO (SELCHARQ (NTHCHARCODE SD I) + [SETQ DEPTH (if (EQ SD '*) + then MAX.SMALLP + else (for I (CNT _ 1) from 1 do (SELCHARQ (NTHCHARCODE SD I) ((/ >) (ADD CNT 1)) (NIL (RETURN CNT)) @@ -560,28 +565,31 @@ (SETQ N (LISTGET UNPACK 'NAME)) (SETQ N (if (NULL N) then '* + elseif (EQ N '**) + then (SETQ DEPTH MAX.SMALLP) + '* elseif (NEQ 0 (NCHARS N)) - then (MKATOM N))) + then N)) (SETQ E (LISTGET UNPACK 'EXTENSION)) (SETQ E (if (NULL E) then '* elseif (NEQ 0 (NCHARS E)) - then (MKATOM E))) - (if [OR (AND (STRING.EQUAL N 'COM) + then E)) + (if [OR (AND (EQ N 'COM) (NULL E)) - (AND (STRING.EQUAL E 'COM) + (AND (EQ E 'COM) (MEMB N ' (* NIL)] - THEN (FOR CE IN *COMPILED-EXTENSIONS* COLLECT (LIST '* CE SD DEPTH)) - ELSE (CONS (IF N - THEN (LIST N E SD DEPTH) - ELSEIF E - THEN + then (for CE in *COMPILED-EXTENSIONS* collect (LIST '* CE SD DEPTH)) + else (CONS (if N + then (LIST N E SD DEPTH) + elseif E + then (* ;; "This is the case .XXX, which presumably identifies a dotted file. If this is supposed to be all files with extension XXX, it shoud be specified as *.XXX, the case above. So we move .E into the N field.") (LIST (PACK* '%. E) NIL SD DEPTH) - ELSE ` + else ` (* * (\, SD) (\, DEPTH)) ]) @@ -2146,7 +2154,8 @@ NIL]) (CDBROWSER-COPY - [LAMBDA (CDBROWSER TBITEM SOURCE UNIXDEST) (* ; "Edited 31-Mar-2026 10:49 by rmk") + [LAMBDA (CDBROWSER TBITEM SOURCE UNIXDEST) (* ; "Edited 28-Apr-2026 18:54 by rmk") + (* ; "Edited 31-Mar-2026 10:49 by rmk") (* ; "Edited 28-Oct-2025 17:39 by rmk") (* ; "Edited 25-Oct-2025 23:58 by rmk") (* ; "Edited 24-May-2022 15:49 by rmk") @@ -2185,7 +2194,8 @@ (PRIN3 "No source file to copy" T) (RETURN NIL)) (CL:WHEN [AND (EQ DATERELBAD (FETCH (CDENTRY DATEREL) OF CDENTRY)) - (PROGN (FLASHWINDOW T) + (PROGN (GIVE.TTY.PROCESS T) + (FLASHWINDOW T) (EQ 'N (ASKUSER NIL NIL "Target is newer than source. Really copy? "] (RETURN NIL)) @@ -2195,6 +2205,7 @@ )) 'VERSION)) (PROGN (FLASHWINDOW T) + (GIVE.TTY.PROCESS T) (EQ 'N (ASKUSER NIL NIL (CONCAT SOURCEFILE " is not the newest version. Really copy? " ] @@ -2326,25 +2337,25 @@ (MOVD? 'NILL 'TEDIT.FILEDATE) (DECLARE%: DONTCOPY - (FILEMAP (NIL (2658 23637 (COMPAREDIRECTORIES 2668 . 8003) (COMPAREDIRECTORIES.INFOS 8005 . 11234) ( -COMPAREDIRECTORIES.CANDIDATES 11236 . 14621) (CDENTRIES.SELECT 14623 . 19525) ( -COMPAREDIRECTORIES.INFOS.TYPE 19527 . 20871) (MATCHNAME 20873 . 21553) (CD.INSURECDVALUE 21555 . 23169 -) (CD.UPDATEWIDTHS 23171 . 23635)) (23638 34343 (CDFILES 23648 . 29745) (CDFILES.MATCH 29747 . 31372) -(CDFILES.PATS 31374 . 34341)) (34344 52362 (CDPRINT 34354 . 36871) (CDPRINT.HEADER 36873 . 37770) ( -CDPRINT.LINE 37772 . 41201) (CDPRINT.MAXWIDTHS 41203 . 45318) (CDPRINT.COLHEADERS 45320 . 46605) ( -CDPRINT.COLUMNS 46607 . 51727) (CDTEDIT 51729 . 52360)) (52363 61484 (CDMAP 52373 . 53805) (CDENTRY -53807 . 54116) (CDSUBSET 54118 . 55557) (CDMERGE 55559 . 59543) (CDMERGE.COMMON 59545 . 60860) ( -CD.SORT 60862 . 61482)) (61485 69023 (BINCOMP 61495 . 65784) (EOLTYPE 65786 . 68348) (EOLTYPE.SHOW -68350 . 69021)) (69551 82078 (FIND-UNCOMPILED-FILES 69561 . 73204) (FIND-UNSOURCED-FILES 73206 . 75590 -) (FIND-SOURCE-FILES 75592 . 77330) (FIND-COMPILED-FILES 77332 . 79209) (FIND-UNLOADED-FILES 79211 . -80064) (FIND-LOADED-FILES 80066 . 80494) (FIND-MULTICOMPILED-FILES 80496 . 82076)) (82079 90510 ( -CREATED-AS 82089 . 86886) (SOURCE-FOR-COMPILED-P 86888 . 89815) (COMPILE-SOURCE-DATE-DIFF 89817 . -90508)) (90511 101274 (FIX-DIRECTORY-DATES 90521 . 93971) (FIX-EQUIV-DATES 93973 . 95498) ( -COPY-COMPARED-FILES 95500 . 97321) (COPY-MISSING-FILES 97323 . 99480) (COMPILED-ON-SAME-SOURCE 99482 - . 101272)) (101468 109346 (CDBROWSER 101478 . 105445) (CDBROWSER.STRINGS 105447 . 109344)) (109508 -111244 (CD.TABLEITEM 109518 . 109738) (CD.TABLEITEM.PRINTFN 109740 . 109939) (CD.TABLEITEM.COPYFN -109941 . 110999) (CDTABLEBROWSER.HEADING.REPAINTFN 111001 . 111242)) (111245 138359 ( -CDTABLEBROWSER.WHENSELECTEDFN 111255 . 111723) (CD.COMMANDSELECTEDFN 111725 . 117898) (CD-MENUFN -117900 . 124377) (CD-COMPARE-FILES 124379 . 127906) (CDBROWSER-COPY 127908 . 133233) ( -CDBROWSER-DELETE-FILE 133235 . 137838) (CD-SWAPDIRS 137840 . 138357))))) + (FILEMAP (NIL (2683 23662 (COMPAREDIRECTORIES 2693 . 8028) (COMPAREDIRECTORIES.INFOS 8030 . 11259) ( +COMPAREDIRECTORIES.CANDIDATES 11261 . 14646) (CDENTRIES.SELECT 14648 . 19550) ( +COMPAREDIRECTORIES.INFOS.TYPE 19552 . 20896) (MATCHNAME 20898 . 21578) (CD.INSURECDVALUE 21580 . 23194 +) (CD.UPDATEWIDTHS 23196 . 23660)) (23663 34971 (CDFILES 23673 . 29770) (CDFILES.MATCH 29772 . 31782) +(CDFILES.PATS 31784 . 34969)) (34972 52990 (CDPRINT 34982 . 37499) (CDPRINT.HEADER 37501 . 38398) ( +CDPRINT.LINE 38400 . 41829) (CDPRINT.MAXWIDTHS 41831 . 45946) (CDPRINT.COLHEADERS 45948 . 47233) ( +CDPRINT.COLUMNS 47235 . 52355) (CDTEDIT 52357 . 52988)) (52991 62112 (CDMAP 53001 . 54433) (CDENTRY +54435 . 54744) (CDSUBSET 54746 . 56185) (CDMERGE 56187 . 60171) (CDMERGE.COMMON 60173 . 61488) ( +CD.SORT 61490 . 62110)) (62113 69651 (BINCOMP 62123 . 66412) (EOLTYPE 66414 . 68976) (EOLTYPE.SHOW +68978 . 69649)) (70179 82706 (FIND-UNCOMPILED-FILES 70189 . 73832) (FIND-UNSOURCED-FILES 73834 . 76218 +) (FIND-SOURCE-FILES 76220 . 77958) (FIND-COMPILED-FILES 77960 . 79837) (FIND-UNLOADED-FILES 79839 . +80692) (FIND-LOADED-FILES 80694 . 81122) (FIND-MULTICOMPILED-FILES 81124 . 82704)) (82707 91138 ( +CREATED-AS 82717 . 87514) (SOURCE-FOR-COMPILED-P 87516 . 90443) (COMPILE-SOURCE-DATE-DIFF 90445 . +91136)) (91139 101902 (FIX-DIRECTORY-DATES 91149 . 94599) (FIX-EQUIV-DATES 94601 . 96126) ( +COPY-COMPARED-FILES 96128 . 97949) (COPY-MISSING-FILES 97951 . 100108) (COMPILED-ON-SAME-SOURCE 100110 + . 101900)) (102096 109974 (CDBROWSER 102106 . 106073) (CDBROWSER.STRINGS 106075 . 109972)) (110136 +111872 (CD.TABLEITEM 110146 . 110366) (CD.TABLEITEM.PRINTFN 110368 . 110567) (CD.TABLEITEM.COPYFN +110569 . 111627) (CDTABLEBROWSER.HEADING.REPAINTFN 111629 . 111870)) (111873 139210 ( +CDTABLEBROWSER.WHENSELECTEDFN 111883 . 112351) (CD.COMMANDSELECTEDFN 112353 . 118526) (CD-MENUFN +118528 . 125005) (CD-COMPARE-FILES 125007 . 128534) (CDBROWSER-COPY 128536 . 134084) ( +CDBROWSER-DELETE-FILE 134086 . 138689) (CD-SWAPDIRS 138691 . 139208))))) STOP diff --git a/lispusers/COMPAREDIRECTORIES.LCOM b/lispusers/COMPAREDIRECTORIES.LCOM index 996c39502f921e05aee68560af95e8ef64a83086..341d25920a0073817fa5ea0c3e2fe674d38e8666 100644 GIT binary patch delta 1493 zcmZux-EZ4e6tB&Yx=KKW7%E*i4whhDwHn_Ke?@($W8XAZ96Q*~(xQUc)@luerh@K; zYRbe5()L1oD=H*j#v@{grJ95UDm)+|fdmimFYvtb$Wys?mNc#KgZ(?dd(OGP^O5}f zyWIUl{I$^iL4mF9&h$(6Wf)V2{gGDC ztO7>cKTUK>e!vp7>ZEQNT(4)}=6((SqJPhivrL~Iiqd{a^;h7|PWD831!^lWmQ^WP zyf*&A{+Rq=Li(D2H>q_#a?Xy3r==ct+m0`_P zch2=?S(g6UC-VaIj`tORMd0pK_U`$8BhdVNYt3h#&cb&6M^81!%ktvGqqoLKrjc$z zlE$?t0fcq_=J~cv3IFZ9#Am_Kg_rq zP|V+nU+hq%K`mi*FY3Dj6+Iqqz96(?Wkd|{#3>O?Pvbfp#1m2Lpb(-_NSq{zT)@;G zK#Y4rLZJj}qAqVXX*e~{&-Oyx;0DZz8)B5`R0+t?1`R>fJW(*B{PD-0Cy$VQ0`^AthxDMI{=qS#;XLnp{OE7~%o z1{pekdk?GPMg?xPZ?#rny}b$7SB0_BTwPH>7o%3(+2Yau}y1xH-@9uN| E0m;{WS^xk5 delta 1414 zcmZux&2Jk;6!$Jg3ZbGE5yELw^RyDejcT*=wI4n}*Sq6-<@K)FUE@S55-o{{QNR`C zf&zpCCpbVe5vdAX5aPfEB~edBija^vRH8=?AXNT?^n^IU?AnP_!yabe{NC@)`<&Uk zr~dtm`dP0`P^EqK?F!bh0Z6Ygy@s&{W$m@Wo7ekmE6Xr=3pCj1i3dt~*1Q1I8YW{4 zU9S;ZL-@u)ajhOly@baVH|i`wUs^S~K>#P&)oN9P<*V!R)c+hqts1el3)AI>A8f-J{gF+c0LwqqePze&J=RZ+;;^utg(cF{xW4@72<+h*Zz#E6(wsPUa)jQD> zx#GDiweFV%a3hby8B;$Z zF%!C>__H|ElD#At!vYZL>Dek^X2}gkHn`FS)@lAnmM&3bBH)WD4--EM0Z}8vWJ00S z=3pA)s}iV$>>re--Z_O0S>3xgem+}%vQRj6$r%=9SNTf)j@BL?CpWkt~KidfyAQ+^X4ZMQfzp(D#ffKenP3tcA#hHYpBPSWi8 zp%?XlAqr`|>hXZ5yy~aC4J^;2vy_c3Q1NQ~bdwquI7zE3F9T46934jK!-r9sUuKo% z*zkGa0mUZxVTN_2jK%%pQ=3#L&`EgLi;lQJY%A~X2_SPaia}n939W@8jl0sv&=(M5 zjOo}mA#sud$UH3S=BB-3!Cn7K>z(XWj}O+tfbi$ t8ApSdC3beON(^y#XLbhbpt*zVefi?859B*arTVX(=T&O$mv4T2=3i>`VR!%l diff --git a/lispusers/GITFNS b/lispusers/GITFNS index 035519af..1ce3bdc3 100644 --- a/lispusers/GITFNS +++ b/lispusers/GITFNS @@ -1,12 +1,14 @@ (DEFINE-FILE-INFO :PACKAGE "INTERLISP" :READTABLE "INTERLISP" :BASE 10 :FORMAT :UTF-8) -(FILECREATED "16-Mar-2026 12:05:55" {WMEDLEY}GITFNS.;578 134065 +(FILECREATED "29-Apr-2026 12:51:53" {MEDLEY}GITFNS.;592 137200 :EDIT-BY rmk - :CHANGES-TO (FNS GIT-BRANCH-WHENSELECTEDFN PRC-COMMAND) + :CHANGES-TO (FNS GIT-GWC-COMMAND) + (COMMANDS gwc) + (VARS GITFNSCOMS) - :PREVIOUS-DATE " 2-Mar-2026 14:00:13" {WMEDLEY}GITFNS.;576) + :PREVIOUS-DATE "29-Apr-2026 09:00:33" {MEDLEY}GITFNS.;588) (PRETTYCOMPRINT GITFNSCOMS) @@ -51,7 +53,7 @@ (INITVARS (GIT-MERGE-COMPARES T) (GIT-CDBROWSER-SEPARATE-DIRECTIONS T)) (COMMANDS gwc bbc prc cob b? cdg cdw) - (FNS PRC-COMMAND) + (FNS PRC-COMMAND GIT-GWC-COMMAND) (* ;; "") @@ -60,7 +62,7 @@ (FNS ALLSUBDIRS MEDLEYSUBDIRS GITSUBDIRS) (FNS TOGIT FROMGIT) - (FNS MYMEDLEYSUBDIR GITSUBDIR STRIPDIR STRIPHOST STRIPNAME STRIPWHERE) + (FNS WORKINGSUBDIR GITSUBDIR STRIPDIR STRIPHOST STRIPNAME STRIPWHERE) (FNS GFILE4MFILE MFILE4GFILE GIT-REPO-FILENAME) (* ;; "") @@ -169,6 +171,9 @@ (GIT-MAKE-PROJECT [LAMBDA (PROJECTNAME CLONEPATH WORKINGPATH EXCLUSIONS DEFAULTSUBDIRS) + (* ; "Edited 29-Apr-2026 09:00 by rmk") + (* ; "Edited 17-Apr-2026 12:33 by rmk") + (* ; "Edited 15-Apr-2026 16:33 by rmk") (* ; "Edited 25-Feb-2026 23:25 by rmk") (* ; "Edited 25-Oct-2025 16:53 by rmk") (* ; "Edited 22-Oct-2025 12:45 by rmk") @@ -275,7 +280,8 @@ "for " PROJECTNAME] (SETQ PROJECT (create GIT-PROJECT PROJECTNAME ← PROJECTNAME - GITHOST ← (PACK* "{" (PSEUDOHOST PROJECTNAME CLONEPATH) + GITHOST ← (PACK* "{" (PSEUDOHOST (CONCAT "G" PROJECTNAME) + CLONEPATH) "}") WHOST ← (AND WORKINGPATH (PACK* "{" (PSEUDOHOST (CONCAT "W" PROJECTNAME) @@ -439,18 +445,7 @@ (RPAQ? GIT-CDBROWSER-SEPARATE-DIRECTIONS T) -(DEFCOMMAND gwc (SUBDIR . OTHERS) - - (* ;; "Compares the specified local git-medley subdirectories against my working Medley. The SUBDIRS are the arguments up to one that looks like a project") - - (LET ((SUBDIRS (AND SUBDIR (CONS SUBDIR OTHERS))) - PROJECT) - (SETQ SUBDIRS (FOR STAIL ON SUBDIRS COLLECT (IF (GIT-GET-PROJECT (CAR STAIL) - NIL T) - THEN (SETQ PROJECT (CAR STAIL)) - (GO $$OUT)) - (CAR STAIL))) - (GIT-WORKING-COMPARE-DIRECTORIES SUBDIRS NIL NIL NIL T PROJECT))) +(DEFCOMMAND gwc (SUBDIR . OTHERS) (GIT-GWC-COMMAND SUBDIR OTHERS)) (DEFCOMMAND bbc (BRANCH1 BRANCH2 LOCAL PROJECT) @@ -616,6 +611,32 @@ PROJECT)) else (CONCAT "No open " (OR REMOTEBRANCH "") " pull requests"]) + +(GIT-GWC-COMMAND + [LAMBDA (SUBDIR OTHERS) (* ; "Edited 29-Apr-2026 12:51 by rmk") + + (* ;; "Compares the specified local git-medley subdirectories against my working Medley. The SUBDIRS are the arguments up to one that looks like a project, which may be followed by - and some excluded files") + + (LET ((SUBDIRS (AND SUBDIR (CONS SUBDIR OTHERS))) + EXCLUDEDFILES PROJECT) + (SETQ SUBDIRS (for STAIL on SUBDIRS unless (CL:WHEN (AND (NULL PROJECT) + (SETQ PROJECT (GIT-GET-PROJECT + (CAR STAIL) + NIL T))) + (CL:UNLESS (EQ '- (CADR STAIL)) + (RETURN $$VAL)) + T) collect (CL:WHEN (EQ '- (CAR STAIL)) + (SETQ EXCLUDEDFILES + (CDR STAIL)) + (RETURN $$VAL)) + (CAR STAIL))) + (CL:UNLESS PROJECT + (SETQ PROJECT (GIT-GET-PROJECT PROJECT))) + (if (AND (fetch GITHOST of PROJECT) + (fetch WHOST of PROJECT)) + then (GIT-WORKING-COMPARE-DIRECTORIES SUBDIRS NIL EXCLUDEDFILES NIL T PROJECT) + else (PRINTOUT T "gwc requires " (fetch PROJECTNAME of PROJECT) + " to have both git and working directories" T T]) ) @@ -727,7 +748,7 @@ ) (DEFINEQ -(MYMEDLEYSUBDIR +(WORKINGSUBDIR [LAMBDA (SUBDIR STAR PROJECT) (* ; "Edited 13-May-2022 10:40 by rmk") (* ; "Edited 7-May-2022 23:15 by rmk") (UNSLASHIT (PACK* (PACKFILENAME 'HOST (FETCH WHOST OF PROJECT) @@ -1398,13 +1419,12 @@ " branches"]) (GIT-BRANCH-MENU - [LAMBDA (BRANCHES TITLE PIN?) (* ; "Edited 1-May-2024 14:36 by rmk") + [LAMBDA (BRANCHES TITLE) (* ; "Edited 18-Apr-2026 21:36 by rmk") + (* ; "Edited 1-May-2024 14:36 by rmk") (* ; "Edited 6-Jul-2023 22:31 by rmk") (* ; "Edited 30-Jun-2023 16:58 by rmk") (* ; "Edited 18-May-2022 13:44 by rmk") (CL:WHEN (SETQ BRANCHES (MKLIST BRANCHES)) - (CL:WHEN PIN? - [SETQ BRANCHES (APPEND BRANCHES '((" Pin menu" 'PinMenu]) (create MENU TITLE ← (OR TITLE (CONCAT (LENGTH BRANCHES) " branches")) @@ -1950,6 +1970,8 @@ (GIT-WORKING-COMPARE-DIRECTORIES [LAMBDA (SUBDIRS SELECT EXCLUDEDFILES FIXDIRECTORYDATES UPDATE PROJECT) + (* ;; "Edited 29-Apr-2026 08:46 by rmk") + (* ;; "Edited 28-Oct-2025 14:00 by rmk") (* ;; "Edited 25-Oct-2025 23:32 by rmk") @@ -1960,18 +1982,12 @@ (* ;; "Edited 26-Sep-2023 22:41 by rmk") - (* ;; "Edited 17-Jun-2023 22:54 by rmk") - - (* ;; "Edited 10-Jun-2023 21:32 by rmk") - (* ;; "Edited 20-Jul-2022 21:18 by rmk") (* ;; "Edited 25-Jun-2022 21:37 by rmk") (* ;; "Edited 17-May-2022 17:39 by rmk") - (* ;; "Edited 10-May-2022 10:41 by rmk") - (* ;;  "Edited 29-Mar-2022 13:58 by rmk: working medley subdirectories with the current local git branch.") @@ -1991,7 +2007,8 @@ (LET ((SUBDIRSTRING (if (EQ SUBDIRS 'all) then (SETQ SUBDIRS (ALLSUBDIRS PROJECT)) "ALL subdirectories" - else SUBDIRS))) + else SUBDIRS)) + (EXCLUSIONS)) (for SUBDIR TITLE CDVAL (WPROJ ← (CONCAT "Working " (L-CASE (fetch PROJECTNAME of PROJECT) T))) (NENTRIES ← 0) @@ -1999,11 +2016,12 @@ first (PRINTOUT T "Comparing " SUBDIRSTRING 6 " of " WPROJ " and Git " BRANCH2 T) (BKSYSBUF " ") inside SUBDIRS collect (TERPRI T) - (SETQ CDVAL (COMPAREDIRECTORIES (MYMEDLEYSUBDIR SUBDIR T PROJECT) + (SETQ CDVAL (COMPAREDIRECTORIES (WORKINGSUBDIR SUBDIR T PROJECT) (GITSUBDIR SUBDIR T PROJECT) (OR SELECT '(> < ~= -* *-)) '(*.* *>*.* .* *>.*) - (for E DPOS in (GIT-GET-PROJECT PROJECT 'EXCLUSIONS) + (for E DPOS in (APPEND (MKLIST EXCLUDEDFILES) + (GIT-GET-PROJECT PROJECT 'EXCLUSIONS)) collect (SETQ DPOS (STRPOS SUBDIR (FILENAMEFIELD E 'DIRECTORY) 1 NIL T T FILEDIRCASEARRAY)) @@ -2216,7 +2234,7 @@ (OR LABEL2 FILE2]) (GIT-CD-MENUFN - [LAMBDA (TBITEM MENUITEM CDBROWSER KEY) (* ; "Edited 28-Oct-2025 11:50 by rmk") + [LAMBDA (TBITEM MENUITEM CDBROWSER KEY) (* ; "Edited 28-Oct-2025 11:30 by rmk") (* ; "Edited 25-Oct-2025 23:44 by rmk") (* ; "Edited 21-Sep-2022 21:34 by rmk") (* ; "Edited 22-May-2022 19:13 by rmk") @@ -2225,9 +2243,32 @@ (* ;; "MENUITEM is of the form (display-atom . extrainfo). The selector for the selectq is either the CAR of the extrainfo or the display atom") - (DECLARE (USEDFREE FILE1 FILE2 LABEL2 TYPE CDENTRY USERDATA PWINDOW)) + (DECLARE (USEDFREE FILE1 FILE2 LABEL2 TYPE CDENTRY USERDATA)) (SELECTQ (OR (CADDR MENUITEM) (CAR MENUITEM)) + (Delete% -> (FLASHWINDOW PWINDOW) + (GIVE.TTY.PROCESS PWINDOW) + (CL:WHEN [OR (EQ KEY 'MIDDLE) + (EQ 'Y (ASKUSER NIL 'N (CONCAT "Delete " LABEL2 " ? "] + (CDBROWSER-DELETE-FILE CDBROWSER TBITEM 'RIGHT NIL T))) + (|Delete ALL <-| + (FLASHWINDOW PWINDOW) + (GIVE.TTY.PROCESS PWINDOW) + (if (NAMEFIELD LABEL1 T) + then (CL:WHEN [OR (EQ KEY 'MIDDLE) + (EQ 'Y (ASKUSER NIL 'N (CONCAT "Delete ALL versions of " + (NAMEFIELD LABEL1 T) + " ? "] + (CDBROWSER-DELETE-FILE CDBROWSER TBITEM 'LEFT NIL T)) + else (PRINTOUT T "Nothing to delete"))) + (Delete% BOTH (FLASHWINDOW PWINDOW) + (GIVE.TTY.PROCESS PWINDOW) + (CL:WHEN (EQ 'Y (ASKUSER NIL 'N (CONCAT + "Delete all Medley and git versions of " + (NAMEFIELD LABEL1 T) + " ? "))) + (CDBROWSER-DELETE-FILE CDBROWSER TBITEM 'LEFT NIL T) + (CDBROWSER-DELETE-FILE CDBROWSER TBITEM 'RIGHT NIL T T))) (Copy% -> (CDBROWSER-COPY CDBROWSER TBITEM 'LEFT (CADDDR MENUITEM))) (SHOULDNT]) @@ -2429,33 +2470,33 @@ (PUTPROPS GITFNS FILETYPE :TCOMPL) (DECLARE%: DONTCOPY - (FILEMAP (NIL (4197 21075 (GIT-CLONEP 4207 . 5638) (GIT-INIT 5640 . 6270) (GIT-MAKE-PROJECT 6272 . -14129) (GIT-GET-PROJECT 14131 . 16056) (GIT-PUT-PROJECT-FIELD 16058 . 17699) (GIT-PROJECT-PATH 17701 - . 18745) (FIND-ANCESTOR-DIRECTORY 18747 . 19098) (GIT-FIND-CLONE 19100 . 20183) (GIT-MAINBRANCH 20185 - . 20580) (GIT-MAINBRANCH? 20582 . 21073)) (26538 31832 (PRC-COMMAND 26548 . 31830)) (31888 34676 ( -ALLSUBDIRS 31898 . 33184) (MEDLEYSUBDIRS 33186 . 33879) (GITSUBDIRS 33881 . 34674)) (34677 37082 ( -TOGIT 34687 . 36095) (FROMGIT 36097 . 37080)) (37083 40093 (MYMEDLEYSUBDIR 37093 . 37549) (GITSUBDIR -37551 . 37994) (STRIPDIR 37996 . 38374) (STRIPHOST 38376 . 38616) (STRIPNAME 38618 . 39371) ( -STRIPWHERE 39373 . 40091)) (40094 42329 (GFILE4MFILE 40104 . 40800) (MFILE4GFILE 40802 . 41371) ( -GIT-REPO-FILENAME 41373 . 42327)) (42378 52635 (GIT-COMMIT 42388 . 43214) (GIT-PUSH 43216 . 43976) ( -GIT-PULL 43978 . 44730) (GIT-APPROVAL 44732 . 45081) (GIT-GET-FILE 45083 . 46998) (GIT-FILE-EXISTS? -47000 . 47274) (GIT-REMOTE-UPDATE 47276 . 48111) (GIT-REMOTE-ADD 48113 . 48420) (GIT-FILE-DATE 48422 - . 49469) (GIT-FILE-HISTORY 49471 . 51405) (GIT-PRINT-FILE-HISTORY 51407 . 52459) (GIT-FETCH 52461 . -52633)) (52665 64617 (GIT-BRANCH-DIFF 52675 . 59564) (GIT-COMMIT-DIFFS 59566 . 60457) ( -GIT-BRANCH-RELATIONS 60459 . 64143) (GIT-MODIFIED 64145 . 64615)) (64662 83597 (GIT-BRANCH-NUM 64672 - . 65245) (GIT-CHECKOUT 65247 . 66533) (GIT-WHICH-BRANCH 66535 . 66942) (GIT-MAKE-BRANCH 66944 . 69523 -) (GIT-BRANCHES 69525 . 72122) (GIT-BRANCH-EXISTS? 72124 . 72995) (GIT-PICK-BRANCH 72997 . 73487) ( -GIT-BRANCH-MENU 73489 . 74378) (GIT-BRANCH-WHENSELECTEDFN 74380 . 76087) (GIT-PULL-REQUESTS 76089 . -79974) (GIT-SHORT-BRANCH-NAME 79976 . 80267) (GIT-LONG-NAME 80269 . 80586) (GIT-PRC-BRANCHES 80588 . -83595)) (83627 88381 (GIT-MY-CURRENT-BRANCH 83637 . 84007) (GIT-MY-BRANCHP 84009 . 84627) ( -GIT-MY-NEXT-BRANCH 84629 . 86429) (GIT-MY-BRANCHES 86431 . 88379)) (88427 92511 (GIT-ADD-WORKTREE -88437 . 90044) (GIT-REMOVE-WORKTREE 90046 . 90978) (GIT-LIST-WORKTREES 90980 . 91791) (WORKTREEDIR -91793 . 92509)) (92559 125597 (GIT-GET-DIFFERENT-FILES 92569 . 99477) ( -GIT-BRANCHES-COMPARE-DIRECTORIES 99479 . 107118) (GIT-WORKING-COMPARE-DIRECTORIES 107120 . 112922) ( -GIT-COMPARE-WORKTREE 112924 . 116902) (GITCDOBJBUTTONFN 116904 . 121402) (GIT-CD-LABELFN 121404 . -122490) (GIT-CD-MENUFN 122492 . 123578) (GIT-WORKING-COMPARE-FILES 123580 . 124200) ( -GIT-BRANCHES-COMPARE-FILES 124202 . 125366) (GIT-PR-COMPARE 125368 . 125595)) (125667 133998 (CDGITDIR - 125677 . 126364) (GIT-COMMAND 126366 . 127924) (GITORIGIN 127926 . 128623) (GIT-INITIALS 128625 . -128929) (GIT-COMMAND-TO-FILE 128931 . 132416) (GIT-RESULT-TO-LINES 132418 . 133331) (STRIPLOCAL 133333 - . 133996))))) + (FILEMAP (NIL (4257 21537 (GIT-CLONEP 4267 . 5698) (GIT-INIT 5700 . 6330) (GIT-MAKE-PROJECT 6332 . +14591) (GIT-GET-PROJECT 14593 . 16518) (GIT-PUT-PROJECT-FIELD 16520 . 18161) (GIT-PROJECT-PATH 18163 + . 19207) (FIND-ANCESTOR-DIRECTORY 19209 . 19560) (GIT-FIND-CLONE 19562 . 20645) (GIT-MAINBRANCH 20647 + . 21042) (GIT-MAINBRANCH? 21044 . 21535)) (26309 33483 (PRC-COMMAND 26319 . 31601) (GIT-GWC-COMMAND +31603 . 33481)) (33539 36327 (ALLSUBDIRS 33549 . 34835) (MEDLEYSUBDIRS 34837 . 35530) (GITSUBDIRS +35532 . 36325)) (36328 38733 (TOGIT 36338 . 37746) (FROMGIT 37748 . 38731)) (38734 41743 ( +WORKINGSUBDIR 38744 . 39199) (GITSUBDIR 39201 . 39644) (STRIPDIR 39646 . 40024) (STRIPHOST 40026 . +40266) (STRIPNAME 40268 . 41021) (STRIPWHERE 41023 . 41741)) (41744 43979 (GFILE4MFILE 41754 . 42450) +(MFILE4GFILE 42452 . 43021) (GIT-REPO-FILENAME 43023 . 43977)) (44028 54285 (GIT-COMMIT 44038 . 44864) + (GIT-PUSH 44866 . 45626) (GIT-PULL 45628 . 46380) (GIT-APPROVAL 46382 . 46731) (GIT-GET-FILE 46733 . +48648) (GIT-FILE-EXISTS? 48650 . 48924) (GIT-REMOTE-UPDATE 48926 . 49761) (GIT-REMOTE-ADD 49763 . +50070) (GIT-FILE-DATE 50072 . 51119) (GIT-FILE-HISTORY 51121 . 53055) (GIT-PRINT-FILE-HISTORY 53057 . +54109) (GIT-FETCH 54111 . 54283)) (54315 66267 (GIT-BRANCH-DIFF 54325 . 61214) (GIT-COMMIT-DIFFS 61216 + . 62107) (GIT-BRANCH-RELATIONS 62109 . 65793) (GIT-MODIFIED 65795 . 66265)) (66312 85259 ( +GIT-BRANCH-NUM 66322 . 66895) (GIT-CHECKOUT 66897 . 68183) (GIT-WHICH-BRANCH 68185 . 68592) ( +GIT-MAKE-BRANCH 68594 . 71173) (GIT-BRANCHES 71175 . 73772) (GIT-BRANCH-EXISTS? 73774 . 74645) ( +GIT-PICK-BRANCH 74647 . 75137) (GIT-BRANCH-MENU 75139 . 76040) (GIT-BRANCH-WHENSELECTEDFN 76042 . +77749) (GIT-PULL-REQUESTS 77751 . 81636) (GIT-SHORT-BRANCH-NAME 81638 . 81929) (GIT-LONG-NAME 81931 . +82248) (GIT-PRC-BRANCHES 82250 . 85257)) (85289 90043 (GIT-MY-CURRENT-BRANCH 85299 . 85669) ( +GIT-MY-BRANCHP 85671 . 86289) (GIT-MY-NEXT-BRANCH 86291 . 88091) (GIT-MY-BRANCHES 88093 . 90041)) ( +90089 94173 (GIT-ADD-WORKTREE 90099 . 91706) (GIT-REMOVE-WORKTREE 91708 . 92640) (GIT-LIST-WORKTREES +92642 . 93453) (WORKTREEDIR 93455 . 94171)) (94221 128732 (GIT-GET-DIFFERENT-FILES 94231 . 101139) ( +GIT-BRANCHES-COMPARE-DIRECTORIES 101141 . 108780) (GIT-WORKING-COMPARE-DIRECTORIES 108782 . 114597) ( +GIT-COMPARE-WORKTREE 114599 . 118577) (GITCDOBJBUTTONFN 118579 . 123077) (GIT-CD-LABELFN 123079 . +124165) (GIT-CD-MENUFN 124167 . 126713) (GIT-WORKING-COMPARE-FILES 126715 . 127335) ( +GIT-BRANCHES-COMPARE-FILES 127337 . 128501) (GIT-PR-COMPARE 128503 . 128730)) (128802 137133 (CDGITDIR + 128812 . 129499) (GIT-COMMAND 129501 . 131059) (GITORIGIN 131061 . 131758) (GIT-INITIALS 131760 . +132064) (GIT-COMMAND-TO-FILE 132066 . 135551) (GIT-RESULT-TO-LINES 135553 . 136466) (STRIPLOCAL 136468 + . 137131))))) STOP diff --git a/lispusers/GITFNS.LCOM b/lispusers/GITFNS.LCOM index 03bd1bb96b43d7758cc49cc24c0dd2a09482ead6..fa32aa44b07d6d19f098becb43bf5d3de3a601b4 100644 GIT binary patch delta 3871 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 delta 2914 zcmZt|YiwIr+1GB@#8sla2$|ctpKjC0u4?!Caj%_p>T+XWCr+;KaqR0xQM*}g?8GJy z2Rj8yJKRO1ttL%lx)S_A(;jFH0h5}Uh~>qdkPrxdOqvkdKg18j4-hItgMSs@Irfc* zv@6-?obP<^=h^##<7clqzPIcNNWN5|<_iiz2?D_hL7WgJ9z6U~b$zq4Rw_bu19-Tz z@cOG~{E?^^oO~eIp%8?LKwv@$@K7rqQ$f+vw?oj#tejbX2 zE#&@X>;eMsb$Sv>Rf%O3Sy$q~e~Ff2TdVF!6at~JAc;nW8#S&S3`^-u%oii6l&rD8I6CngwtoHRl5ucygzf)y z@_p{N#>-Frhx=Xg&Z!v3eb+F%cy7}8N7riZw#^d}B#03$ChH)Lhv9N2t;(@DNMaDu za%}D*NMYP%m0X<6kSrpFI{1Nzg(Kk3!fF1p`<&x~5J0_oq>cdpBCa6;_yt^pBJg)` z4FnP1boAK!ntyeFeyS_Am{Q`Zve^8~*l>6rMJBc9APE7`le((lPJpS5ti@)OEF>TZ zaU~(=R6Rj7-3zvF+c}$Kvgr6x@%6InrtKFSQ*TUGZTLCq-%XoooV)JjGDhmUm_WRvv<{IdO%*j1gu5pk z6iHu9E9dVbEl`8uX05QXR4&zd2#kZr!vp)$m|E+lja!(k^ErZ%ML-JAUi_TK(REjI z^hRj3Awf1b6;Ea$4d|_w{kRQ7EPhQ^DKzi}3<1H&i3*CRNtW)SzyS27MKFHMCEB43 zwH=DSMt^FGre~7q+;kT@eF5#9HU4>Tbyk4sr0z>8nQ4V4Xj;y&0E7ZSvmLdJ$yr6t zWaLE*3;IKqv$}7g6-ytJpKB3>j2j>EC%xd9cN@QdX$=ErM7Q0X(^%NP$R&-ppB}tE zS7G5YE8R3|CJSI|tM0l}Mf*EDT*6#<7MH6j20!W-dM0-`-tn%Q?=#EyRSp-`e%NL} z`YOt4%8K+EkGF>!$_hO&8U6Evx2n;j#RPi5xy9t^sBgCVy(OKjL^#J}qv zOf5}Xj-D;9K7MD%_Bk_o$M%`y$Hboxo8^bZ&*4h^_PpOrGMRJipM+bBU}qxOp{I-a zCukCZ1e0?v#w^)dTBnAMgk21m-6^iJi+&4J?8yE)w`@13R9O7pWv6>B{GO+%AhWGQ zE1JSHM0oUck>m1`NuuZt3B56~O{B4WlzQWDWMaTCZ$z=If&n%{r;@n9d02rnkh2^kA+_k_$DdvBZ#$Z?MI_j)RlkNZcqh6> zRdgKO79$V7%dBkoVCiP91JP%cOcv+2RToH_RrL8|6+8)&!OE4BDiG}$y6%h-6(5Tz zBbfjX^`2Fw3>cH!L|)L45;F?rXl>S31$sJID0P~^=qTm^s?xb|Qq4TZ<$K_^OriX& OpMI=$^Vc8!*ZDs_u=Lvi diff --git a/lispusers/GITFNS.TEDIT b/lispusers/GITFNS.TEDIT index 0aa747b426239c9b51923c5ceddf09df726eb5b1..86b5f8c15fe6501b1331756701423003cdee11bc 100644 GIT binary patch delta 4209 zcmZu!OKcle6rFKN2~9$1V+Wi9b)u-XNoz<1g(ju8u^q>#c8cuy_?G|J+gHA>sSAM=x{E7D!2L0#_r{dn-{mXcQ@bs=B0(LaO#aqx$W2E zhHF2boEUpJIM`aR)jRFrko)CK&vlmqF05 zD?3NR0RK|{e-IS03|;f=?8pJX=(sQInNuJfguz3>&sfBeKMkRXyIM;3R{)Lp4>ZZP z0CyN5!S52t{f5BlF8}2m00j4vDK3~N5GGGiZ$UIfZ4pkGm<+gM{zI8LEMmoogSh0R z-0iiQJ_6tAk)-`Nh|q||8}-0AEQp7kXr93$k#R(GW_ z(;tSF-XYi#=~)u}LkJ@z5{@NtH=N+Thed)5OWG`Tb&83A3_Bk}*c-s7VZt}nd6LLy zrOYIw?gw*wjdY)50vX1G0;Q~G)LVc6ENn9@Y|j63wEJ910}!oCT0`bPai!t%xNoFEv-ac;9pw5^s!f9+5hHZy>&$m9N?srRO;s zMIjsyB%$G)fb3EEz84GZzvN+ezn4bxa6>xKP{tWxuxPI`-XX)2%cx+V0SPBeh;{M- zSb$mr;jAGHhsUFanA0)6Q&!AZ*J)Ej)A+*976$7f>M6VqpbEmEa3hW79eW_7##>c{aExxj}WFH+}9Jx zw}x1Knh@KXplTFEU=~VQ)A&)uaUayvTc)H-RLwkLN=d|=bk7)|0YmIKQlB+9ZKMWY(kfU&G{q9qnU`0z0gxY5s-cEV zi@oK@K}XTmN+B9G?iC(u{u8w`QVu8aJNp=P#8EIsch9V5_*Ry(S_V(L&SQaZ8rilX zYO88jH)f3^FLgtl9ddB;Eg^A~vpUZO;On3xpTk%H`4Ed3QZdAYsRxP*EgMBsr)yJ( zp1*J5Wiq-=03ah8@hJOGG*po#^(%m3-#-k{z(&=ge(oo7WP0!tNe!SDI6_zy9#JEQ zz4V*d5-oZw(~+=UGX4FZWSs;_!>HG@5WOq856Di}xdv9q*@QA*aq#NvNV7sz$6zr< zMrGlH@jhXKwl(@8p{~pgQ-JC<2p<3?FgX9}iUWkuygfmhF+{@3bJa}xLrA7raAg0n zaV0$1N5B7qvI!D{QZ*_(rQTZMf0>W|MES`Oqx?-EpU?N|wPvq)zS8X#SDWoxvD@o3 z&$S!5Vs7rWw>RbrxqNl4(y6zr>$N7~R<+tK6bctQ>leCcU#(W@)t7f}TrT_9!>6f{ HcfbD+>-V3* delta 4019 zcmZXX-D@3H6vbzf+?beHTg`2At2IeU+QyXFrheW;lbD=>0SWwVg zA4LUW9t8Ehua^3tKIv&vsyZB)5&MWUNoXM~JarnRS;zIjq(QF?Xy(b$! zezLQ9>O`^KUMiky&lQ*2KjnkP#pT&_z1nyEd->dLgBkw@(qEPxWjR>9wlcFllx6uT z-E!&K#{(E@HRR7g!YLO}{Ib$I+aC+>48U67)Q~#^L2ESKJOY4c1BAt*kmARU ziM&yK*=ZKPZ49kZOGex=S<_`di%K+e(3O;tM)CeybI(l)He}KPf}9yiHZ_AFDVI`v zFAI`V$+{$kijEU{4lW5zv5*tWin<2~o7p+G`HIrbknnqk1#BZ@R&xG3Ai;hU+Z^-> zAQr9-yAaT9sMua@F5VxQb2%J{=v-Xx4#e4k$vYrn)9yl0xFI%baz2de97a_vW5-Rr z9TrCC=W1fKEObkiOO);c7%6z8#Hv(GM^*8yEFc>Z+126YGF6j$l(v@}tt-OgdX|8Y zkgE$*EKHt!#wk5_`_^02;P-KhpP6pK2pv97-yrH@+g*XUn4N)`qg}++$W-jvv9(~! zjrhtPwm1Jka7uqhq^pgB<(8>bC72q-u00WM+6!bK2qgB>nee^Yh+0N)50@4omVA~BKs*B43=nt9I-u&q3=8gteQc4jAWOR<3(16=6H-(Vd(~R( zv9*jQO40S&sPxLCKqLFICxM5sMb=Xn>mm}yQiMw*$C|^ zJ`srf?&i2ociCQUmpR>YAru*!<08B@T5!1(PPs!vI;-VY7-X)tGFu<*|ULe>S~rB z4ENYPe^t0E`}--NhXB;QBmuArz`_L=f#_(2>u@m*#8LVte@U&zj}K3({xV1KG1mQ+y4P% C5}0-X From 6159c64b84836bd3c9986576d42428b3f04fb3f1 Mon Sep 17 00:00:00 2001 From: rmkaplan <69548581+rmkaplan@users.noreply.github.com> Date: Wed, 6 May 2026 11:55:34 -0700 Subject: [PATCH 11/11] man [filename] just opens the corresponding documentation file (#2572) * man [filename] just opens the corresponding documentation file * When a particular ENTRY is provided and found in the file, scroll its first occurrence to the top --- lispusers/HELPSYS | 53 ++++++++++++++++++++++------------------- lispusers/HELPSYS.LCOM | Bin 62554 -> 62282 bytes 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/lispusers/HELPSYS b/lispusers/HELPSYS index 748a9348..12cde91a 100644 --- a/lispusers/HELPSYS +++ b/lispusers/HELPSYS @@ -1,13 +1,12 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) +(DEFINE-FILE-INFO :PACKAGE "INTERLISP" :READTABLE "INTERLISP" :BASE 10) -(FILECREATED "27-Jan-2026 13:21:10" {WMEDLEY}HELPSYS.;21 88654 +(FILECREATED "20-Apr-2026 08:07:50" {MEDLEY}HELPSYS.;24 89018 :EDIT-BY rmk - :CHANGES-TO (FNS DOCS.LOOKUP GENERIC.MAN.LOOKUP) - (VARS HELPSYSCOMS) + :CHANGES-TO (FNS REPO.LOOKUP) - :PREVIOUS-DATE " 5-May-2025 22:04:32" {WMEDLEY}HELPSYS.;15) + :PREVIOUS-DATE "27-Jan-2026 13:21:10" {MEDLEY}HELPSYS.;21) (PRETTYCOMPRINT HELPSYSCOMS) @@ -340,21 +339,27 @@ else "git web--browse"]) (REPO.LOOKUP - [LAMBDA (ENTRY TYPES) (* ; "Edited 13-Jan-2023 10:46 by lmm") + [LAMBDA (ENTRY TYPES) (* ; "Edited 20-Apr-2026 08:06 by rmk") + (* ; "Edited 13-Jan-2023 10:46 by lmm") (* ; "Edited 16-Aug-2022 16:26 by lmm") - (for FL in (UNION (WHEREIS ENTRY (OR TYPES HELPSYS.REPO.TYPES) - T) - (LIST ENTRY)) bind POS FND + (for FL POS FND TSTREAM in (UNION (WHEREIS ENTRY (OR TYPES HELPSYS.REPO.TYPES) + T) + (LIST ENTRY)) when [SETQ FND (OR (FINDFILE-WITH-EXTENSIONS FL NIL '(TEDIT TXT TED)) (AND (SETQ POS (STRPOS "-" FL)) (FINDFILE-WITH-EXTENSIONS (SUBSTRING FL 1 (CL:1- POS)) NIL '(TEDIT TXT TTY TED] - join (CL:WITH-OPEN-FILE (STR (PATHNAME FND) - :DIRECTION :INPUT) - (CL:WHEN (SETQ POS (FFILEPOS ENTRY STR)) - (TEDIT-SEE STR NIL NIL (CL:FORMAT NIL "~a [~a]" FL ENTRY)) - (LIST FL))]) + collect (SETQ TSTREAM (OPENTEXTSTREAM FND)) + [TEDIT TSTREAM NIL NIL `(READONLY T LEAVETTY T FONT ,DEFAULTFONT TITLE + ,(CL:IF (EQ FL ENTRY) + FL + (CONCAT ENTRY " on " FL))] + (CL:UNLESS (EQ FL ENTRY) + (CL:WHEN (SETQ POS (TEDIT.FIND TSTREAM ENTRY)) + (TEDIT.SETSEL TSTREAM POS (NCHARS ENTRY)) + (TEDIT.NORMALIZECARET TSTREAM))) + FL]) ) (RPAQQ CLHS.INDEX @@ -1716,14 +1721,14 @@ (PUTPROPS HELPSYS FILETYPE :FAKE-COMPILE-FILE) (DECLARE%: DONTCOPY - (FILEMAP (NIL (4640 10992 (HELPSYS 4650 . 6491) (IRM.LOOKUP 6493 . 8131) (GENERIC.MAN.LOOKUP 8133 . -10001) (IRM.SMART.LOOKUP 10003 . 10159) (IRM.RESET 10161 . 10570) (DOCS.LOOKUP 10572 . 10990)) (11249 -18568 (CLHS.INDEX 11259 . 14223) (CLHS.LOOKUP 14225 . 16231) (CLHS.OPENER 16233 . 17556) (REPO.LOOKUP -17558 . 18566)) (71663 73181 (IRM.GET.DINFOGRAPH 71673 . 72548) (IRM.DISPLAY.REF 72550 . 73179)) ( -73183 73545 (IRM.LOAD-GRAPH 73183 . 73545)) (73870 79374 (IRM.DISPLAY.CREF 73880 . 75594) ( -IRM.CREF.BOX 75596 . 76423) (IRM.PUT.CREF 76425 . 76650) (IRM.GET.CREF 76652 . 77023) ( -IRM.CREF.BUTTONEVENTFN 77025 . 79372)) (79929 88235 (\IRM.GET.REF 79939 . 81270) (\IRM.SMART.REF 81272 - . 83199) (\IRM.CHOOSE.REF 83201 . 84452) (\IRM.WILD.REF 84454 . 85709) (\IRM.WILDCARD 85711 . 86077) -(\IRM.WILD.MATCH 86079 . 87309) (\IRM.GET.HASHFILE 87311 . 87774) (\IRM.GET.KEYWORDS 87776 . 88233)) ( -88372 88528 (\IRM.AROUND-EXIT 88372 . 88528))))) + (FILEMAP (NIL (4582 10934 (HELPSYS 4592 . 6433) (IRM.LOOKUP 6435 . 8073) (GENERIC.MAN.LOOKUP 8075 . +9943) (IRM.SMART.LOOKUP 9945 . 10101) (IRM.RESET 10103 . 10512) (DOCS.LOOKUP 10514 . 10932)) (11191 +18932 (CLHS.INDEX 11201 . 14165) (CLHS.LOOKUP 14167 . 16173) (CLHS.OPENER 16175 . 17498) (REPO.LOOKUP +17500 . 18930)) (72027 73545 (IRM.GET.DINFOGRAPH 72037 . 72912) (IRM.DISPLAY.REF 72914 . 73543)) ( +73547 73909 (IRM.LOAD-GRAPH 73547 . 73909)) (74234 79738 (IRM.DISPLAY.CREF 74244 . 75958) ( +IRM.CREF.BOX 75960 . 76787) (IRM.PUT.CREF 76789 . 77014) (IRM.GET.CREF 77016 . 77387) ( +IRM.CREF.BUTTONEVENTFN 77389 . 79736)) (80293 88599 (\IRM.GET.REF 80303 . 81634) (\IRM.SMART.REF 81636 + . 83563) (\IRM.CHOOSE.REF 83565 . 84816) (\IRM.WILD.REF 84818 . 86073) (\IRM.WILDCARD 86075 . 86441) +(\IRM.WILD.MATCH 86443 . 87673) (\IRM.GET.HASHFILE 87675 . 88138) (\IRM.GET.KEYWORDS 88140 . 88597)) ( +88736 88892 (\IRM.AROUND-EXIT 88736 . 88892))))) STOP diff --git a/lispusers/HELPSYS.LCOM b/lispusers/HELPSYS.LCOM index 8307d3e27d4f6840c07ff024eff872ac8e4b5059..951eccb28d4dc1bdd6d2098f6f4906df5dad8101 100644 GIT binary patch delta 846 zcmZ8fzf%)I6b6EWL`6F!FwUDBk_p9Sb}zp!*O23Gj~vQpFm>@wMcJaXQP#kqaB^4zPrc}*<$zYzHh(%_Py`x&%~!6iN&nV9M@y2<8r3D zo+H5UO{;D$Gf-SlvVgmxuYeIS)0XBEzjS=OIFli&d2py|L@NQ&4N^9WM1idGXn*%$ z`|0C0?C*gBN5`GHPGJF(3N2mWDK%)tC>9k^EYa{I4Uv$x0^4}WX>tz3@LVpZKzs8! zl3u3Kh(YqoLNXiOw@|HQHYnPE+9uD%MPlw2K(7$0gTZW9s!J_6+}#1gs+rz03sor~ z>v&-j0_KYx7oy(u7qB(~TXjV9qUn zwmlXFCuFu39~{lzoJfOV>&dJSWsspnxef541deCpS_EH&xE5Z`r^dcrJ(-)I?L3>P zC3@rTt}8F)8`*odN=A@srC1@ zv9&jU+F<#&trP+K;>w&Sf`-Z6b!M3XlR$N>L!1bi3>kJ^*TBPG1R>Be0hy1J z=u{hMu`s{_EfBDTXPFWz6ok*vuWRS!#DXuTQzx19%7&(abR}As(lVgm%_f(Q@bFox z!5|(74yignCW delta 973 zcmZvb&ui2`6vsEa?bfbBYe8zeQXXN2ERrRY{n>z)Y%=L)n@y%kc6DtPmae#^wiWRr zLVM`dgC#dT`5zS93Z8oR;LVGFfcR(lW~#6hbC@?T^L~9llYIM?`T0AuqS(}NeX2UH zM^)E%0$5_EwPvnTkX=8fq31?ShNY02c5F7iE3c1N7Lp_B)|?`5?eD(ae(`Jw`+Fe6 z+lR*ocMeGra+AH&Sivh9awKXYhs#tAef@TE!@% zupF13Pm}8D7b!cRsn@jAi`#aZZ<1`jC0?xOXQq<-Gv*=nNTX8(o>TuiLK{S_-tj*^6R7FaGyINyTOfEF2d2`H1|eZ*DeZKX*Q))G}!F) z@D5`r6F^2NKcW=yE-cUJI6>GkW2k|{F=EqV&Ud|>0%RHFg8^(D44xq55RXb;5Uh2X zscD)HhTTB&p#2@2h&hwVd^sEoy^La5U8n#CRT0lnm*d;$U+QF+vR$MQ_Zf}A#lnIN z3ja8je3J8r=0q!VKH<(vk4HlGbuRP#uGqH)m5sCc_RiYQ4{jyda`L@C*2dndlmf zLEyXy5UmCQqdqJXU}oI%%?^bINuaQpOcmO7yc@%824ReUNcCzuHp3Ez>$7eQ%QeL6 ThSZAPz)#*47EVtJAHM$qq@~>V