diff --git a/library/HRULE b/library/HRULE index cf9d2bc21..47a768c5a 100644 --- a/library/HRULE +++ b/library/HRULE @@ -1,13 +1,15 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED " 8-Oct-92 16:50:21" "{Pele:mv:envos}library>HRULE.;11" 23325 - changes to%: (FNS VRULE.CREATE VRULE.GETFN2) +(FILECREATED "25-Jul-2022 15:09:26" {DSK}kaplan>Local>medley3.5>working-medley>library>HRULE.;4 23801 - previous date%: "29-Sep-92 21:06:13" "{Pele:mv:envos}library>HRULE.;10") + :CHANGES-TO (VARS HRULECOMS) + + :PREVIOUS-DATE "25-Jul-2022 15:07:00" +{DSK}kaplan>Local>medley3.5>working-medley>library>HRULE.;3) (* ; " -Copyright (c) 1985, 1990, 1991, 1992 by Venue & Xerox Corporation. All rights reserved. +Copyright (c) 1985, 1990-1992 by Venue & Xerox Corporation. ") (PRETTYCOMPRINT HRULECOMS) @@ -33,7 +35,10 @@ Copyright (c) 1985, 1990, 1991, 1992 by Venue & Xerox Corporation. All rights r (FUNCTION NILL) (FUNCTION NILL) (FUNCTION HRULE.WHENOPERATEDONFN) - (FUNCTION NILL] + (FUNCTION (LAMBDA (OBJ) + (CONCAT (CHARACTER (CHARCODE EOL)) + (ALLOCSTRING 20 "-") + (CHARACTER (CHARCODE EOL] [COMS (* ;; "Vertical rules") @@ -200,11 +205,11 @@ Copyright (c) 1985, 1990, 1991, 1992 by Venue & Xerox Corporation. All rights r (RPAQ? HRULE.DEFAULT.WIDTH 2) -(RPAQQ HRULEFNS (HRULE.CREATE HRULE.DISPLAYFN HRULE.GETFN HRULE.IMAGEBOXFN HRULE.PUTFN - HRULE.COPYFN HRULE.WHENOPERATEDONFN)) +(RPAQQ HRULEFNS (HRULE.CREATE HRULE.DISPLAYFN HRULE.GETFN HRULE.IMAGEBOXFN HRULE.PUTFN HRULE.COPYFN + HRULE.WHENOPERATEDONFN)) (RPAQ HRULE.IMAGEFNS - (IMAGEFNSCREATE (FUNCTION HRULE.DISPLAYFN) + [IMAGEFNSCREATE (FUNCTION HRULE.DISPLAYFN) (FUNCTION HRULE.IMAGEBOXFN) (FUNCTION HRULE.PUTFN) (FUNCTION HRULE.GETFN) @@ -216,7 +221,10 @@ Copyright (c) 1985, 1990, 1991, 1992 by Venue & Xerox Corporation. All rights r (FUNCTION NILL) (FUNCTION NILL) (FUNCTION HRULE.WHENOPERATEDONFN) - (FUNCTION NILL))) + (FUNCTION (LAMBDA (OBJ) + (CONCAT (CHARACTER (CHARCODE EOL)) + (ALLOCSTRING 20 "-") + (CHARACTER (CHARCODE EOL]) @@ -502,12 +510,12 @@ Copyright (c) 1985, 1990, 1991, 1992 by Venue & Xerox Corporation. All rights r (FUNCTION NILL))) (PUTPROPS HRULE COPYRIGHT ("Venue & Xerox Corporation" 1985 1990 1991 1992)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (4225 10404 (HRULE.CREATE 4235 . 5657) (HRULE.DISPLAYFN 5659 . 8228) (HRULE.GETFN 8230 - . 8550) (HRULE.IMAGEBOXFN 8552 . 9354) (HRULE.PUTFN 9356 . 9734) (HRULE.COPYFN 9736 . 10200) ( -HRULE.WHENOPERATEDONFN 10202 . 10402)) (11107 17312 (VRULE.CREATE 11117 . 13116) (VRULE.DISPLAYFN -13118 . 15312) (VRULE.GETFN 15314 . 15535) (VRULE.GETFN2 15537 . 15873) (VRULE.IMAGEBOXFN 15875 . -16303) (VRULE.PUTFN 16305 . 16703) (VRULE.COPYFN 16705 . 17108) (VRULE.WHENOPERATEDONFN 17110 . 17310) -) (17951 22601 (CROPMARK.CREATE 17961 . 19228) (CROPMARK.DISPLAYFN 19230 . 20730) (CROPMARK.GETFN -20732 . 21026) (CROPMARK.IMAGEBOXFN 21028 . 21729) (CROPMARK.PUTFN 21731 . 22009) (CROPMARK.COPYFN -22011 . 22394) (CROPMARK.WHENOPERATEDONFN 22396 . 22599))))) + (FILEMAP (NIL (4512 10691 (HRULE.CREATE 4522 . 5944) (HRULE.DISPLAYFN 5946 . 8515) (HRULE.GETFN 8517 + . 8837) (HRULE.IMAGEBOXFN 8839 . 9641) (HRULE.PUTFN 9643 . 10021) (HRULE.COPYFN 10023 . 10487) ( +HRULE.WHENOPERATEDONFN 10489 . 10689)) (11583 17788 (VRULE.CREATE 11593 . 13592) (VRULE.DISPLAYFN +13594 . 15788) (VRULE.GETFN 15790 . 16011) (VRULE.GETFN2 16013 . 16349) (VRULE.IMAGEBOXFN 16351 . +16779) (VRULE.PUTFN 16781 . 17179) (VRULE.COPYFN 17181 . 17584) (VRULE.WHENOPERATEDONFN 17586 . 17786) +) (18427 23077 (CROPMARK.CREATE 18437 . 19704) (CROPMARK.DISPLAYFN 19706 . 21206) (CROPMARK.GETFN +21208 . 21502) (CROPMARK.IMAGEBOXFN 21504 . 22205) (CROPMARK.PUTFN 22207 . 22485) (CROPMARK.COPYFN +22487 . 22870) (CROPMARK.WHENOPERATEDONFN 22872 . 23075))))) STOP diff --git a/library/HRULE.LCOM b/library/HRULE.LCOM index f1d395d1f..191f546bb 100644 Binary files a/library/HRULE.LCOM and b/library/HRULE.LCOM differ diff --git a/lispusers/COMPAREDIRECTORIES b/lispusers/COMPAREDIRECTORIES index 270a4318b..911e9218c 100644 --- a/lispusers/COMPAREDIRECTORIES +++ b/lispusers/COMPAREDIRECTORIES @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "20-Jul-2022 08:54:12"  -{DSK}kaplan>local>medley3.5>working-medley>lispusers>COMPAREDIRECTORIES.;246 128062 +(FILECREATED "25-Jul-2022 15:31:50"  +{DSK}kaplan>Local>medley3.5>working-medley>lispusers>COMPAREDIRECTORIES.;248 128327 - :CHANGES-TO (FNS CDPRINT.COLUMNS) + :CHANGES-TO (FNS CDBROWSER.STRINGS) - :PREVIOUS-DATE "17-Jul-2022 11:04:12" -{DSK}kaplan>local>medley3.5>working-medley>lispusers>COMPAREDIRECTORIES.;245) + :PREVIOUS-DATE "20-Jul-2022 21:20:33" +{DSK}kaplan>Local>medley3.5>working-medley>lispusers>COMPAREDIRECTORIES.;247) (* ; " @@ -1707,7 +1707,9 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp BROWSER)]) (CDBROWSER.STRINGS - [LAMBDA (CDVALUE COLHEADINGS SEPARATEDIRECTIONS) (* ; "Edited 22-Feb-2022 18:30 by rmk") + [LAMBDA (CDVALUE COLHEADINGS SEPARATEDIRECTIONS) (* ; "Edited 25-Jul-2022 15:31 by rmk") + (* ; "Edited 20-Jul-2022 21:14 by rmk") + (* ; "Edited 22-Feb-2022 18:30 by rmk") (* ; "Edited 14-Dec-2021 21:03 by rmk") (* ; "Edited 8-Dec-2021 11:22 by rmk") (* ; "Edited 27-Nov-2021 21:37 by rmk:") @@ -1756,7 +1758,8 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp (* ;; "Stick a blank object between") (SETQ PAIRS (NCONC (DREVERSE L2R) - (LIST "") + `(("") + ("")) (DREVERSE R2L))))) (CL:WHEN COLHEADERS (PUSH PAIRS (LIST COLHEADERS))) @@ -2150,25 +2153,25 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp (PUTPROPS COMPAREDIRECTORIES COPYRIGHT ("Venue & Xerox Corporation" 1985 1986 1987 1988 1990 1994 1998 2018 2020 2021)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (2632 22189 (COMPAREDIRECTORIES 2642 . 7475) (COMPAREDIRECTORIES.INFOS 7477 . 10351) ( -COMPAREDIRECTORIES.CANDIDATES 10353 . 13738) (CDENTRIES.SELECT 13740 . 18515) ( -COMPAREDIRECTORIES.INFOS.TYPE 18517 . 19423) (MATCHNAME 19425 . 20105) (CD.INSURECDVALUE 20107 . 21721 -) (CD.UPDATEWIDTHS 21723 . 22187)) (22190 31859 (CDFILES 22200 . 27953) (CDFILES.MATCH 27955 . 29580) -(CDFILES.PATS 29582 . 31857)) (31860 49681 (CDPRINT 31870 . 34387) (CDPRINT.HEADER 34389 . 35286) ( -CDPRINT.LINE 35288 . 38520) (CDPRINT.MAXWIDTHS 38522 . 42637) (CDPRINT.COLHEADERS 42639 . 43924) ( -CDPRINT.COLUMNS 43926 . 49046) (CDTEDIT 49048 . 49679)) (49682 58051 (CDMAP 49692 . 51124) (CDENTRY -51126 . 51435) (CDSUBSET 51437 . 52876) (CDMERGE 52878 . 56732) (CDMERGE.COMMON 56734 . 58049)) (58052 - 65590 (BINCOMP 58062 . 62351) (EOLTYPE 62353 . 64915) (EOLTYPE.SHOW 64917 . 65588)) (66118 78645 ( -FIND-UNCOMPILED-FILES 66128 . 69771) (FIND-UNSOURCED-FILES 69773 . 72157) (FIND-SOURCE-FILES 72159 . -73897) (FIND-COMPILED-FILES 73899 . 75776) (FIND-UNLOADED-FILES 75778 . 76631) (FIND-LOADED-FILES -76633 . 77061) (FIND-MULTICOMPILED-FILES 77063 . 78643)) (78646 87077 (CREATED-AS 78656 . 83453) ( -SOURCE-FOR-COMPILED-P 83455 . 86382) (COMPILE-SOURCE-DATE-DIFF 86384 . 87075)) (87078 97384 ( -FIX-DIRECTORY-DATES 87088 . 90081) (FIX-EQUIV-DATES 90083 . 91608) (COPY-COMPARED-FILES 91610 . 93431) - (COPY-MISSING-FILES 93433 . 95590) (COMPILED-ON-SAME-SOURCE 95592 . 97382)) (97578 104924 (CDBROWSER -97588 . 101515) (CDBROWSER.STRINGS 101517 . 104922)) (105086 106822 (CD.TABLEITEM 105096 . 105316) ( -CD.TABLEITEM.PRINTFN 105318 . 105517) (CD.TABLEITEM.COPYFN 105519 . 106577) ( -CDTABLEBROWSER.HEADING.REPAINTFN 106579 . 106820)) (106823 127478 (CDTABLEBROWSER.WHENSELECTEDFN -106833 . 107301) (CD.COMMANDSELECTEDFN 107303 . 112404) (CD-MENUFN 112406 . 116717) (CD-COMPARE-FILES -116719 . 120071) (CDBROWSER-COPY 120073 . 123742) (CDBROWSER-DELETE-FILE 123744 . 126957) (CD-SWAPDIRS - 126959 . 127476))))) + (FILEMAP (NIL (2634 22191 (COMPAREDIRECTORIES 2644 . 7477) (COMPAREDIRECTORIES.INFOS 7479 . 10353) ( +COMPAREDIRECTORIES.CANDIDATES 10355 . 13740) (CDENTRIES.SELECT 13742 . 18517) ( +COMPAREDIRECTORIES.INFOS.TYPE 18519 . 19425) (MATCHNAME 19427 . 20107) (CD.INSURECDVALUE 20109 . 21723 +) (CD.UPDATEWIDTHS 21725 . 22189)) (22192 31861 (CDFILES 22202 . 27955) (CDFILES.MATCH 27957 . 29582) +(CDFILES.PATS 29584 . 31859)) (31862 49683 (CDPRINT 31872 . 34389) (CDPRINT.HEADER 34391 . 35288) ( +CDPRINT.LINE 35290 . 38522) (CDPRINT.MAXWIDTHS 38524 . 42639) (CDPRINT.COLHEADERS 42641 . 43926) ( +CDPRINT.COLUMNS 43928 . 49048) (CDTEDIT 49050 . 49681)) (49684 58053 (CDMAP 49694 . 51126) (CDENTRY +51128 . 51437) (CDSUBSET 51439 . 52878) (CDMERGE 52880 . 56734) (CDMERGE.COMMON 56736 . 58051)) (58054 + 65592 (BINCOMP 58064 . 62353) (EOLTYPE 62355 . 64917) (EOLTYPE.SHOW 64919 . 65590)) (66120 78647 ( +FIND-UNCOMPILED-FILES 66130 . 69773) (FIND-UNSOURCED-FILES 69775 . 72159) (FIND-SOURCE-FILES 72161 . +73899) (FIND-COMPILED-FILES 73901 . 75778) (FIND-UNLOADED-FILES 75780 . 76633) (FIND-LOADED-FILES +76635 . 77063) (FIND-MULTICOMPILED-FILES 77065 . 78645)) (78648 87079 (CREATED-AS 78658 . 83455) ( +SOURCE-FOR-COMPILED-P 83457 . 86384) (COMPILE-SOURCE-DATE-DIFF 86386 . 87077)) (87080 97386 ( +FIX-DIRECTORY-DATES 87090 . 90083) (FIX-EQUIV-DATES 90085 . 91610) (COPY-COMPARED-FILES 91612 . 93433) + (COPY-MISSING-FILES 93435 . 95592) (COMPILED-ON-SAME-SOURCE 95594 . 97384)) (97580 105189 (CDBROWSER +97590 . 101517) (CDBROWSER.STRINGS 101519 . 105187)) (105351 107087 (CD.TABLEITEM 105361 . 105581) ( +CD.TABLEITEM.PRINTFN 105583 . 105782) (CD.TABLEITEM.COPYFN 105784 . 106842) ( +CDTABLEBROWSER.HEADING.REPAINTFN 106844 . 107085)) (107088 127743 (CDTABLEBROWSER.WHENSELECTEDFN +107098 . 107566) (CD.COMMANDSELECTEDFN 107568 . 112669) (CD-MENUFN 112671 . 116982) (CD-COMPARE-FILES +116984 . 120336) (CDBROWSER-COPY 120338 . 124007) (CDBROWSER-DELETE-FILE 124009 . 127222) (CD-SWAPDIRS + 127224 . 127741))))) STOP diff --git a/lispusers/COMPAREDIRECTORIES.LCOM b/lispusers/COMPAREDIRECTORIES.LCOM index 322d9505d..558cb081c 100644 Binary files a/lispusers/COMPAREDIRECTORIES.LCOM and b/lispusers/COMPAREDIRECTORIES.LCOM differ diff --git a/lispusers/COMPAREDIRECTORIES.TEDIT b/lispusers/COMPAREDIRECTORIES.TEDIT index 24d80a712..fb9d5f539 100644 --- a/lispusers/COMPAREDIRECTORIES.TEDIT +++ b/lispusers/COMPAREDIRECTORIES.TEDIT @@ -18,7 +18,7 @@ Produce the CDPRINT output in a TABLEBROWSER window with menu commands for compa (CDFILES DIR INCLUDEDFILES EXCLUDEDFILES ALLVERSIONS DEPTH) [Function] Returns a list of full filenames for files in directory DIR (NIL=T=the connected directory) that match the other file-name filtering criteria. Files are excluded if: Their name does not match a pattern in INCLUDEDFILES (NIL = *.*). Dotted files are excluded unless FILEPATTERNS includes .* and files in subdirectories are excluded if the number of subdirectories exceeds DEPTH (below). They do not match patterns on the list EXCLUDEDFILES. *.* excludes all extensions, *.COM or just COM excludes extentsions on *COMPILED-EXTENSIONS*. EXCLUDEDFILES contains .* to suppress dotted files unless .* also appears in INCLUDEDFILES. They are not the highest version unless ALLVERSIONS=T. DEPTH controls the depth of subdirectory exploration. T means all levels, NIL means no subdirectories. Otherwise the maximum number of > or / characters below the starting DIR in the fullname of files. (CDFILES) produces all the newest, undotted files in the immediate connected directory. (CDMERGE CDVALUES) [Function] Merges all subsets of CDVALUES that have the same CDSELECT into a single CDVALUE with the union of their CDENTRIES. The CDCOMPAREDATE of the merger will be the latest of the dates, and the directories and match names will be adjusted to reflect the original subdirectory sources. (CDMAP CDVALUE FN) [Function] (CDSUBSET CDVALUE FN) [Function] CDMAP and CDSUBSET both apply FN to each CDENTRY in CDVALUE, perhaps modifying the information in the entry. CDSUBSET returns a new cdvalue structure whose entries are the subset of the entries (perhaps modified) for which FN is non-NIL. For convenience, at each invocation the variables MATCHNAME INFO1 DATEREL INFO2 and EQUIV are bound to the corresponding fields and can be used freely by FN. USEFUL UTILITIES (FIX-DIRECTORY-DATES FILES) [Function] For every file included in or specified by FILES, if it is a Lisp source or compiled whose directory creation date is more than 30 seconds later than its internal filecreated date (presumably because of copying), then its directory date is reset to match the internal date. FILES can be a list of file names or a pattern interpretable by FILDIR. Returns a list of files whose dates have been changed. (FIX-EQUIV-DATES CDVALUE) [Function] If there is an entry in CDVALUE whose files are EQUIVALENT but with different directory creation dates, the directory date of the file with the later date (presumably a copy) is reset to match the date of the earlier file. In the end all equivalent files will have the same (earliest) date. Returns a list of files whose dates have been changed. (COPY-MISSING-FILES CDVALUE TARGET MATCHNAMES) [Function] Target is 1 or 2, indicating the direction of potential copies. If an entry with a source file but no target file has a matchname in MATCHNAMES, the source file is copied to the target directory. All target-absent files are copied if MATCNAMES is NIL. Source properties (including version number) are preserved in the target. (COPY-COMPARED-FILES CDVALUE TARGET MATCHNAMES) [Function] TARGET is 1 or 2, indicating the direction of potential copies. If an entry with both source and target files has a matchname in MATCHNAMES, the source file is copied to a new version of the target file. All files are copied if MATCHNAMES is NIL. (COMPILED-ON-SAME-SOURCE CDVALUE) [Function] Returns the subset of entries with Lisp compiled files (dfasl or lcom) that are compiled on the same source, according to SOURCE-FOR-COMPILED-P below. Presumably one should be removed to avoid confusion. (FIND-SOURCE-FILES CFILES SDIRS DFASLMARGIN) [Function] Returns (CFILE . SFILES) pairs where CFILE is a Lisp compiled file in CFILES and SFILES is list of files in SDIRS that CFILE was compiled on according to SOURCE-FOR-COMPILED-P. This suggests that at least one of SFILES should be copied to CFILE's location (or vice versa). (FIND-COMPILED-FILES SFILES CDIRS DFASLMARGIN) [Function] Returns (CFILE . SFILES) pairs where SFILE is a Lisp source file in SFILES and CFILES are files in CDIRS that are compiled on SFILE according to SOURCE-FOR-COMPILED-P. This suggests that at least one of CFILES should be copied to SFILE's location. (FIND-UNCOMPILED-FILES FILES DFASLMARGIN COMPILEXTS) [Function] Returns a list of elements each of which corresponds to a source file in FILES for which no appropriate compiled file can be found. An appropriate compiled file is a file in the same location with extension in COMPILEEXTS (defaulting to *COMPILED-EXTENSIONS*) that satisfies SOURCE-FOR-COMPILED-P. Each element is a list of the form (sourcefile . cfiles) cfiles contains compiled files that were compiled on a different version of sourcefile, NIL if no such files exist. Each cfile item is a pair (cfile timediff) where timediff is the time difference (in minutes) between the creation date of the compiled-file's source and the creation date of sourcefile (positive if the cfile was compiled later, as should be the case). FILES can be an explicit list of files, or a file specification interpretable by FILDIR; in that case only the newest source-file versions are processed. (FIND-UNSOURCED-FILES CFILES DFASLMARGIN COMPILEXTS) [Function] Returns the subset of the compiled files specified by CFILES for which a corresponding source file according to SOURCE-FOR-COMPILED-P cannot be found in the same directory. CFILES can be a list of files or a pattern that FILDIR can interpret. COMPILEEXTS can be one or more explicit compile-file extensions, defaulting to *COMPILED-EXTENSIONS*. (SOURCE-FOR-COMPILED-P SOURCE COMPILED DFASLMARGIN) [Function] Returns T if it can confirm that Lisp COMPILED file was compiled on Lisp SOURCE file. SOURCE and COMPILED can be provided as CREATED-AS values, to avoid repetitive computation. This compares the information in the filecreated expressions, original file names and original dates, and not the current directory names and dates. It appears that the times in DFASL files may differ from the filecreated source dates by a few minutes. The DFASLMARGIN can be provided to loosen up the date matching criterion. DFASLMARGIN is a pair (max min) and a DFASL COMPILED is deemed to be compiled on SOURCE if the compiled's source date is no more than max and no less than min minutes after the source date. A negative min allows for the possibility that the compiled-source date is earlier than the candidate source date. DFASLMARGIN defaults to (20 0). A single positive number x is coerced to (x 0). A single negative number is coerced to (-x x) (compiled file is no more than x minutes later or earlier). T is infinity in either direction. Examples: (T 0): COMPILED compiled on source later than SOURCE (0 T): COMPILED compiled on source earlier than SOURCE (odd) - 12: COMPILED compiled on source later than SOURCE by no more than 12 minutes -12: COMPILED compiled on source 12 minutes before or after SOURCE (FIND-MULTICOMPILED-FILES FILES SHOWINFO) [Function] Returns a list of files in FILES that have more than one type of compiled file (e.g. LCOM and DFASL). FILES is interpretable by FILDIR. If SHOWINFO, then the value contains a list for each file of the form ÿÿï!ÿ(rootname loaded-version . CREATED-AS information for each compile-type) Otherwise just the rootname of the source is returns. (CREATED-AS FILE) [Function] If FILE is a Lisp source or compiled file, returns a record of its original filename and filecreated dates, and for compiled files, also the original compiled-on name and date. The return for a source file is a pair (sfullname sfilecreateddate) The return for a compiled file is a quadruple (cfullname cfilecreated sfullname sfilecreateddate) where sfullname and sourcefilecreated are extracted from the file's compiled-on information. The return is (fullname NIL) for a non-Lisp file. (EOLTYPE FILE SHOWCONTEXT) [Function] Returns the EOLTYPE of FILE (CR, LF, CRLF) if the type is unmistakable: contains at least one instance of one type and no instances of any others. Returns NIL if there is evidence of inconsistent types. If SHOWCONTEXT is an integer, it is the number of bytes for EOLTYPE to display before and after an instance of an inconsistent type. At each instance, the user is asked whether to continue scanning for other instances. SHOWCONTEXT = T is interpreted as 100. (BINCOMP FILE1 FILE2 EOLDIFFOK) [Function] Returns T if FILE1 and FILE2 are byte-identical. If EOLDIFFOK and FILE1 and FILE2 differ only in their eol conventions, the value is a list of the form (EOL1 EOL2), e.g. (CR CRLF). Otherwise the value is NIL. (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC) STARTINGPAGE# 1) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC)) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC)) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC)) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC)) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC)) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))))) 4ÈÈ4ÈÈ4 ÈÈ4ÈÈ.4@È4ÈÈ.È.ŠŠ8.ŠŠ8JÈÈ PAGEHEADING RUNNINGHEAD.MODERNTERMINALMODERN + 12: COMPILED compiled on source later than SOURCE by no more than 12 minutes -12: COMPILED compiled on source 12 minutes before or after SOURCE (FIND-MULTICOMPILED-FILES FILES SHOWINFO) [Function] Returns a list of files in FILES that have more than one type of compiled file (e.g. LCOM and DFASL). FILES is interpretable by FILDIR. If SHOWINFO, then the value contains a list for each file of the form (rootname loaded-version . CREATED-AS information for each compile-type) Otherwise just the rootname of the source is returns. (CREATED-AS FILE) [Function] If FILE is a Lisp source or compiled file, returns a record of its original filename and filecreated dates, and for compiled files, also the original compiled-on name and date. The return for a source file is a pair (sfullname sfilecreateddate) The return for a compiled file is a quadruple (cfullname cfilecreated sfullname sfilecreateddate) where sfullname and sourcefilecreated are extracted from the file's compiled-on information. The return is (fullname NIL) for a non-Lisp file. (EOLTYPE FILE SHOWCONTEXT) [Function] Returns the EOLTYPE of FILE (CR, LF, CRLF) if the type is unmistakable: contains at least one instance of one type and no instances of any others. Returns NIL if there is evidence of inconsistent types. If SHOWCONTEXT is an integer, it is the number of bytes for EOLTYPE to display before and after an instance of an inconsistent type. At each instance, the user is asked whether to continue scanning for other instances. SHOWCONTEXT = T is interpreted as 100. (BINCOMP FILE1 FILE2 EOLDIFFOK) [Function] Returns T if FILE1 and FILE2 are byte-identical. If EOLDIFFOK and FILE1 and FILE2 differ only in their eol conventions, the value is a list of the form (EOL1 EOL2), e.g. (CR CRLF). Otherwise the value is NIL. (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC) STARTINGPAGE# 1) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC)) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC)) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC)) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC)) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC)) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))))) 4ÈÈ4ÈÈ4 ÈÈ4ÈÈ.4@È4ÈÈ.È.ŠŠ8.ŠŠ8JÈÈ PAGEHEADING RUNNINGHEAD.MODERNTERMINALMODERN TERMINAL MODERN MODERN LOGOMODERN @@ -37,5 +37,5 @@ Merges all subsets of CDVALUES that have the same CDSELECT into a single CDVALUE \ T=| Z  .z=: %< &AI† %A64)* D@& -ÀK < Ü ß  ! &/65; -$7Ù".9' § .š -  G "  5Úazº \ No newline at end of file +ÀK < Ü ß  ! &/65;  +$7Ù".9' § .š -  G "  5Õ_zº \ No newline at end of file diff --git a/lispusers/GITFNS b/lispusers/GITFNS index c5b6720e4..08769d041 100644 --- a/lispusers/GITFNS +++ b/lispusers/GITFNS @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "18-Jul-2022 21:45:18"  -{DSK}kaplan>Local>medley3.5>working-medley>lispusers>GITFNS.;428 113994 +(FILECREATED "25-Jul-2022 15:14:26"  +{DSK}kaplan>local>medley3.5>working-medley>lispusers>GITFNS.;430 114311 - :CHANGES-TO (FNS GIT-MAKE-BRANCH) + :CHANGES-TO (VARS GITFNSCOMS) - :PREVIOUS-DATE "18-Jul-2022 09:53:48" -{DSK}kaplan>Local>medley3.5>working-medley>lispusers>GITFNS.;427) + :PREVIOUS-DATE "20-Jul-2022 21:20:33" +{DSK}kaplan>local>medley3.5>working-medley>lispusers>GITFNS.;429) (PRETTYCOMPRINT GITFNSCOMS) @@ -40,7 +40,8 @@ (* ;; "Lisp exec commands") - (INITVARS (GIT-MERGE-COMPARES T)) + (INITVARS (GIT-MERGE-COMPARES T) + (GIT-CDBROWSER-SEPARATE-DIRECTIONS T)) (COMMANDS gwc bbc prc cob b? cdg cdw) (* ;; "") @@ -390,6 +391,8 @@ (RPAQ? GIT-MERGE-COMPARES T) +(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") @@ -1572,7 +1575,8 @@ (LIST DIR1 DIR2 MAPPINGS))]) (GIT-BRANCHES-COMPARE-DIRECTORIES - [LAMBDA (BRANCH1 BRANCH2 LOCAL PROJECT) (* ; "Edited 22-May-2022 22:47 by rmk") + [LAMBDA (BRANCH1 BRANCH2 LOCAL PROJECT) (* ; "Edited 20-Jul-2022 21:18 by rmk") + (* ; "Edited 22-May-2022 22:47 by rmk") (* ; "Edited 9-May-2022 15:14 by rmk") (* ; "Edited 3-May-2022 23:04 by rmk") (SETQ PROJECT (GIT-GET-PROJECT PROJECT)) @@ -1647,7 +1651,7 @@ (LIST SHORT1 SHORT2) `(LABELFN GIT-CD-LABELFN BRANCH1 ,BRANCH1 BRANCH2 ,BRANCH2 PROJECT ,PROJECT) - NIL + GIT-CDBROWSER-SEPARATE-DIRECTIONS `(Compare See)) (SETQ NENTRIES (LENGTH (FETCH (CDVALUE CDENTRIES) OF CDVALUE))) (LIST NENTRIES (CL:IF (EQ NENTRIES 1) @@ -1659,6 +1663,8 @@ (GIT-WORKING-COMPARE-DIRECTORIES [LAMBDA (SUBDIRS SELECT EXCLUDEDFILES FIXDIRECTORYDATES UPDATE PROJECT) + (* ;; "Edited 20-Jul-2022 21:18 by rmk") + (* ;; "Edited 25-Jun-2022 21:37 by rmk") (* ;; "Edited 17-May-2022 17:39 by rmk") @@ -1722,7 +1728,7 @@ [CDBROWSER CDVAL TITLE `(,WPROJ ,BRANCH2) `(BRANCH1 ,WPROJ BRANCH2 ,BRANCH2 SUBDIR ,SUBDIR LABELFN GIT-CD-LABELFN PROJECT ,PROJECT) - NIL + GIT-CDBROWSER-SEPARATE-DIRECTIONS `(Compare See "" Copy% <- (|Delete ALL <-| GIT-CD-MENUFN) ,@(CL:UNLESS (GIT-MAINBRANCH? BRANCH2 PROJECT T) '("" Copy% -> (Delete% -> GIT-CD-MENUFN)))] @@ -2134,31 +2140,31 @@ (PUTPROPS GITFNS FILETYPE :TCOMPL) (DECLARE%: DONTCOPY - (FILEMAP (NIL (3603 18135 (GIT-CLONEP 3613 . 4876) (GIT-MAKE-PROJECT 4878 . 12976) (GIT-GET-PROJECT -12978 . 14903) (GIT-PROJECT-PATH 14905 . 15949) (FIND-ANCESTOR-DIRECTORY 15951 . 16300) ( -GIT-FIND-CLONE 16302 . 17383) (GIT-MAINBRANCH 17385 . 17780) (GIT-MAINBRANCH? 17782 . 18133)) (24452 -27240 (ALLSUBDIRS 24462 . 25748) (MEDLEYSUBDIRS 25750 . 26443) (GITSUBDIRS 26445 . 27238)) (27241 -32031 (TOGIT 27251 . 28657) (FROMGIT 28659 . 29640) (GIT-DELETE-FILE 29642 . 30488) ( -MYMEDLEY-DELETE-FILES 30490 . 32029)) (32032 34564 (MYMEDLEYSUBDIR 32042 . 32498) (GITSUBDIR 32500 . -32943) (STRIPDIR 32945 . 33316) (STRIPHOST 33318 . 33558) (STRIPNAME 33560 . 34313) (STRIPWHERE 34315 - . 34562)) (34565 36467 (GFILE4MFILE 34575 . 34938) (MFILE4GFILE 34940 . 35509) (GIT-REPO-FILENAME -35511 . 36465)) (36516 46338 (GIT-COMMIT 36526 . 37352) (GIT-PUSH 37354 . 37998) (GIT-PULL 38000 . -38612) (GIT-APPROVAL 38614 . 38963) (GIT-GET-FILE 38965 . 40930) (GIT-FILE-EXISTS? 40932 . 41206) ( -GIT-REMOTE-UPDATE 41208 . 41932) (GIT-REMOTE-ADD 41934 . 42241) (GIT-FILE-DATE 42243 . 43174) ( -GIT-FILE-HISTORY 43176 . 45110) (GIT-PRINT-FILE-HISTORY 45112 . 46162) (GIT-FETCH 46164 . 46336)) ( -46368 57100 (GIT-BRANCH-DIFF 46378 . 53162) (GIT-COMMIT-DIFFS 53164 . 53717) (GIT-BRANCH-RELATIONS -53719 . 57098)) (57145 67947 (GIT-BRANCH-NUM 57155 . 57728) (GIT-CHECKOUT 57730 . 58789) ( -GIT-WHICH-BRANCH 58791 . 59089) (GIT-MAKE-BRANCH 59091 . 61304) (GIT-BRANCHES 61306 . 63279) ( -GIT-BRANCH-EXISTS? 63281 . 63985) (GIT-PICK-BRANCH 63987 . 64315) (GIT-PRC-MENU 64317 . 66065) ( -GIT-PULL-REQUESTS 66067 . 67333) (GIT-SHORT-BRANCH-NAME 67335 . 67626) (GIT-LONG-NAME 67628 . 67945)) -(67977 71312 (GIT-MY-CURRENT-BRANCH 67987 . 68357) (GIT-MY-BRANCHP 68359 . 68864) (GIT-MY-NEXT-BRANCH -68866 . 69360) (GIT-MY-BRANCHES 69362 . 71310)) (71358 75310 (GIT-ADD-WORKTREE 71368 . 72852) ( -GIT-REMOVE-WORKTREE 72854 . 73784) (GIT-LIST-WORKTREES 73786 . 74590) (WORKTREEDIR 74592 . 75308)) ( -75358 105340 (GIT-GET-DIFFERENT-FILES 75368 . 81193) (GIT-BRANCHES-COMPARE-DIRECTORIES 81195 . 87037) -(GIT-WORKING-COMPARE-DIRECTORIES 87039 . 91785) (GIT-COMPARE-WORKTREE 91787 . 95765) (GITCDOBJBUTTONFN - 95767 . 100257) (GIT-CD-LABELFN 100259 . 101341) (GIT-CD-MENUFN 101343 . 103550) ( -GIT-WORKING-COMPARE-FILES 103552 . 104172) (GIT-BRANCHES-COMPARE-FILES 104174 . 105338)) (105410 -113927 (CDGITDIR 105420 . 105980) (GIT-COMMAND 105982 . 107540) (GITORIGIN 107542 . 108239) ( -GIT-INITIALS 108241 . 108545) (GIT-COMMAND-TO-FILE 108547 . 112036) (PROCESS-COMMAND 112038 . 112651) -(GIT-RESULT-TO-LINES 112653 . 113260) (STRIPLOCAL 113262 . 113925))))) + (FILEMAP (NIL (3652 18184 (GIT-CLONEP 3662 . 4925) (GIT-MAKE-PROJECT 4927 . 13025) (GIT-GET-PROJECT +13027 . 14952) (GIT-PROJECT-PATH 14954 . 15998) (FIND-ANCESTOR-DIRECTORY 16000 . 16349) ( +GIT-FIND-CLONE 16351 . 17432) (GIT-MAINBRANCH 17434 . 17829) (GIT-MAINBRANCH? 17831 . 18182)) (24550 +27338 (ALLSUBDIRS 24560 . 25846) (MEDLEYSUBDIRS 25848 . 26541) (GITSUBDIRS 26543 . 27336)) (27339 +32129 (TOGIT 27349 . 28755) (FROMGIT 28757 . 29738) (GIT-DELETE-FILE 29740 . 30586) ( +MYMEDLEY-DELETE-FILES 30588 . 32127)) (32130 34662 (MYMEDLEYSUBDIR 32140 . 32596) (GITSUBDIR 32598 . +33041) (STRIPDIR 33043 . 33414) (STRIPHOST 33416 . 33656) (STRIPNAME 33658 . 34411) (STRIPWHERE 34413 + . 34660)) (34663 36565 (GFILE4MFILE 34673 . 35036) (MFILE4GFILE 35038 . 35607) (GIT-REPO-FILENAME +35609 . 36563)) (36614 46436 (GIT-COMMIT 36624 . 37450) (GIT-PUSH 37452 . 38096) (GIT-PULL 38098 . +38710) (GIT-APPROVAL 38712 . 39061) (GIT-GET-FILE 39063 . 41028) (GIT-FILE-EXISTS? 41030 . 41304) ( +GIT-REMOTE-UPDATE 41306 . 42030) (GIT-REMOTE-ADD 42032 . 42339) (GIT-FILE-DATE 42341 . 43272) ( +GIT-FILE-HISTORY 43274 . 45208) (GIT-PRINT-FILE-HISTORY 45210 . 46260) (GIT-FETCH 46262 . 46434)) ( +46466 57198 (GIT-BRANCH-DIFF 46476 . 53260) (GIT-COMMIT-DIFFS 53262 . 53815) (GIT-BRANCH-RELATIONS +53817 . 57196)) (57243 68045 (GIT-BRANCH-NUM 57253 . 57826) (GIT-CHECKOUT 57828 . 58887) ( +GIT-WHICH-BRANCH 58889 . 59187) (GIT-MAKE-BRANCH 59189 . 61402) (GIT-BRANCHES 61404 . 63377) ( +GIT-BRANCH-EXISTS? 63379 . 64083) (GIT-PICK-BRANCH 64085 . 64413) (GIT-PRC-MENU 64415 . 66163) ( +GIT-PULL-REQUESTS 66165 . 67431) (GIT-SHORT-BRANCH-NAME 67433 . 67724) (GIT-LONG-NAME 67726 . 68043)) +(68075 71410 (GIT-MY-CURRENT-BRANCH 68085 . 68455) (GIT-MY-BRANCHP 68457 . 68962) (GIT-MY-NEXT-BRANCH +68964 . 69458) (GIT-MY-BRANCHES 69460 . 71408)) (71456 75408 (GIT-ADD-WORKTREE 71466 . 72950) ( +GIT-REMOVE-WORKTREE 72952 . 73882) (GIT-LIST-WORKTREES 73884 . 74688) (WORKTREEDIR 74690 . 75406)) ( +75456 105657 (GIT-GET-DIFFERENT-FILES 75466 . 81291) (GIT-BRANCHES-COMPARE-DIRECTORIES 81293 . 87274) +(GIT-WORKING-COMPARE-DIRECTORIES 87276 . 92102) (GIT-COMPARE-WORKTREE 92104 . 96082) (GITCDOBJBUTTONFN + 96084 . 100574) (GIT-CD-LABELFN 100576 . 101658) (GIT-CD-MENUFN 101660 . 103867) ( +GIT-WORKING-COMPARE-FILES 103869 . 104489) (GIT-BRANCHES-COMPARE-FILES 104491 . 105655)) (105727 +114244 (CDGITDIR 105737 . 106297) (GIT-COMMAND 106299 . 107857) (GITORIGIN 107859 . 108556) ( +GIT-INITIALS 108558 . 108862) (GIT-COMMAND-TO-FILE 108864 . 112353) (PROCESS-COMMAND 112355 . 112968) +(GIT-RESULT-TO-LINES 112970 . 113577) (STRIPLOCAL 113579 . 114242))))) STOP diff --git a/lispusers/GITFNS.LCOM b/lispusers/GITFNS.LCOM index e70e64903..517abd24e 100644 Binary files a/lispusers/GITFNS.LCOM and b/lispusers/GITFNS.LCOM differ diff --git a/sources/EXTERNALFORMAT b/sources/EXTERNALFORMAT index 0375b7a50..31e7f8033 100644 --- a/sources/EXTERNALFORMAT +++ b/sources/EXTERNALFORMAT @@ -1,12 +1,13 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "20-Jul-2022 13:05:12"  -{DSK}kaplan>local>medley3.5>working-medley>sources>EXTERNALFORMAT.;67 36927 +(FILECREATED "24-Jul-2022 14:56:07"  +{DSK}kaplan>local>medley3.5>working-medley>sources>EXTERNALFORMAT.;75 37244 - :CHANGES-TO (FNS \BACKCCODE.EOLC) + :CHANGES-TO (MACROS \CHECKEOLC) + (FNS \INCCODE.EOLC) - :PREVIOUS-DATE "19-Jul-2022 23:52:46" -{DSK}kaplan>local>medley3.5>working-medley>sources>EXTERNALFORMAT.;66) + :PREVIOUS-DATE "24-Jul-2022 08:30:32" +{DSK}kaplan>local>medley3.5>working-medley>sources>EXTERNALFORMAT.;72) (PRETTYCOMPRINT EXTERNALFORMATCOMS) @@ -432,45 +433,42 @@ EOL STREAM T]) (\INCCODE.EOLC - [LAMBDA (STREAM EOLC BYTECOUNTVAR BYTECOUNTVAL) (* ; "Edited 30-Jun-2022 10:12 by rmk") + [LAMBDA (STREAM EOLC BYTECOUNTVAR BYTECOUNTVAL) (* ; "Edited 24-Jul-2022 13:15 by rmk") + (* ; "Edited 30-Jun-2022 10:12 by rmk") (* ; "Edited 8-Aug-2021 14:52 by rmk:") (* ;; "EOL conversion around essentially a copy of \INCCODE but avoids the extra function call.") - (* ;; " EOLC of ANY means all patterns go to EOL") + (* ;; "EOLC of ANY means all patterns go to EOL") - (IF BYTECOUNTVAR - THEN [LET (*BYTECOUNTER* CODE) - (DECLARE (SPECVARS *BYTECOUNTER*)) - - (* ;; "The INCCODEFN first sets *BYTECOUNTER*") - - (CL:UNLESS BYTECOUNTVAL - (SETQ BYTECOUNTVAL (\EVALV1 BYTECOUNTVAR))) - (SETQ CODE (CL:FUNCALL (ffetch (STREAM INCCODEFN) of STREAM) - STREAM T)) - - (* ;; "Update according to the number of first-char (CR or LF) bytes") + (* ;; "For simplicity of the raft of implementation functions, they only need to set the constant *BYTECOUNTER* to the number of bytes moved forward (if COUNTP is T). We take responsibility for translating the forward bytes to the countdown value of the particular BYTECOUNTVAR. The goal is simplicity on both sides of the interface. ") - (SETQ BYTECOUNTVAL (IDIFFERENCE BYTECOUNTVAL *BYTECOUNTER*)) - (SETQ *BYTECOUNTER* 0) - - (* ;; "*BYTECOUNTER* will now be reset to the number of LF-after-CR bytes, if any") - - (PROG1 (\CHECKEOLC CODE (OR EOLC (FFETCH (STREAM EOLCONVENTION) OF STREAM)) - STREAM NIL T) + (CL:UNLESS EOLC + (SETQ EOLC (FFETCH (STREAM EOLCONVENTION) OF STREAM))) - (* ;; "Post the results") + (* ;; "The implementation functions could do a multiple value return, but that seems to be slower and buggy in current implementation, compared to free-variable setting.") - (SET BYTECOUNTVAR (IDIFFERENCE BYTECOUNTVAL *BYTECOUNTER*)))] + (IF BYTECOUNTVAR + THEN (LET (*BYTECOUNTER* CODE) + (DECLARE (SPECVARS *BYTECOUNTER*)) + (SETQ CODE (\CHECKEOLC (CL:FUNCALL (ffetch (STREAM INCCODEFN) of STREAM) + STREAM T) + EOLC STREAM NIL T)) + (SET BYTECOUNTVAR (IDIFFERENCE (OR BYTECOUNTVAL (\EVALV1 BYTECOUNTVAR)) + *BYTECOUNTER*)) + CODE) ELSE (\CHECKEOLC (CL:FUNCALL (ffetch (STREAM INCCODEFN) of STREAM) STREAM) - (OR EOLC (FFETCH (STREAM EOLCONVENTION) OF STREAM)) - STREAM]) + EOLC STREAM]) (\FORMATBYTESTREAM - [LAMBDA (STREAM BYTESTREAM) (* ; "Edited 22-Jun-2022 11:09 by rmk") - (* ; "Edited 24-Jun-2021 17:26 by rmk:") + [LAMBDA (STREAM BYTESTREAM) + + (* ;; "Edited 24-Jul-2022 08:30 by rmk: STREAM can be the external format to be used for BYTESTREAM, not just a carrier of that format") + + (* ;; "Edited 22-Jun-2022 11:09 by rmk") + + (* ;; "Edited 24-Jun-2021 17:26 by rmk:") (* ;; "Create or modify a stream that will simulate the current character input/output byte sequences of STREAM. The set up here does what is common to all formats: an IO stream starting with STREAM external format and EOL.") @@ -479,17 +477,25 @@ (CL:UNLESS (AND (STREAMP BYTESTREAM) (\IOMODEP BYTESTREAM 'BOTH)) (SETQ BYTESTREAM (OPENSTREAM '{NODIRCORE} 'BOTH))) - (LET ((FORMAT (FETCH (STREAM EXTERNALFORMAT) OF STREAM)) - (EOLC (FETCH (STREAM EOLCONVENTION) OF STREAM))) + (LET (FORMAT EOLC) + (IF (TYPE? STREAM STREAM) + THEN (SETQ FORMAT (FFETCH (STREAM EXTERNALFORMAT) OF STREAM)) + (SETQ EOLC (FFETCH (STREAM EOLCONVENTION) OF STREAM)) + (CL:WHEN (EQ EOLC ANY.EOLC) + (SETQ EOLC (OR (FFETCH (EXTERNALFORMAT EOL) OF FORMAT) + LF.EOLC))) + ELSEIF (TYPE? EXTERNALFORMAT STREAM) + THEN (SETQ FORMAT STREAM) + (SETQ EOLC (FFETCH (EXTERNALFORMAT EOL) OF FORMAT))) (\EXTERNALFORMAT BYTESTREAM FORMAT) - (CL:WHEN (EQ EOLC ANY.EOLC) - (SETQ EOLC (OR (FETCH (EXTERNALFORMAT EOL) OF FORMAT) - LF.EOLC))) (REPLACE (STREAM EOLCONVENTION) OF BYTESTREAM WITH EOLC) (\SETFILEPTR BYTESTREAM 0) (freplace (STREAM ENDOFSTREAMOP) of BYTESTREAM with (FUNCTION NILL)) - (CL:WHEN (FETCH (EXTERNALFORMAT FORMATBYTESTREAMFN) OF FORMAT) - (APPLY* (FETCH (EXTERNALFORMAT FORMATBYTESTREAMFN) OF FORMAT) + + (* ;; "Presumably any format-specific cleanup function will know what to do if it receives a format instead of a stream.") + + (CL:WHEN (FFETCH (EXTERNALFORMAT FORMATBYTESTREAMFN) OF FORMAT) + (APPLY* (FFETCH (EXTERNALFORMAT FORMATBYTESTREAMFN) OF FORMAT) STREAM BYTESTREAM)) BYTESTREAM]) @@ -568,24 +574,19 @@ (DECLARE%: DOEVAL@COMPILE DONTCOPY (* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: EVAL@COMPILE -(PUTPROPS \CHECKEOLC MACRO [OPENLAMBDA (CH EOLC STRM PEEKBINFLG COUNTP) - (COND - ((EQ EOLC 'NOEOLC) - CH) - (T (SELCHARQ CH - (LF (SELECTC (OR EOLC (FFETCH (STREAM EOLCONVENTION) - OF STRM)) - ((LIST LF.EOLC ANY.EOLC 'LF 'ANY) - (CHARCODE EOL)) - (CHARCODE LF))) - (CR (SELECTC (OR EOLC (FFETCH (STREAM EOLCONVENTION) - OF STRM)) - ((LIST CR.EOLC 'ANY) - (CHARCODE EOL)) - ((LIST ANY.EOLC CRLF.EOLC 'CRLF 'ANY) - (\CHECKEOLC.CRLF STRM PEEKBINFLG COUNTP)) - (CHARCODE CR))) - CH]) +(PUTPROPS \CHECKEOLC MACRO (OPENLAMBDA (CH EOLC STRM PEEKBINFLG COUNTP) + (SELCHARQ CH + (LF (SELECTC (OR EOLC (FFETCH (STREAM EOLCONVENTION) OF STRM)) + ((LIST LF.EOLC ANY.EOLC 'LF 'ANY) + (CHARCODE EOL)) + (CHARCODE LF))) + (CR (SELECTC (OR EOLC (FFETCH (STREAM EOLCONVENTION) OF STRM)) + ((LIST CR.EOLC 'ANY) + (CHARCODE EOL)) + ((LIST ANY.EOLC CRLF.EOLC 'CRLF 'ANY) + (\CHECKEOLC.CRLF STRM PEEKBINFLG COUNTP)) + (CHARCODE CR))) + CH))) ) (* "END EXPORTED DEFINITIONS") @@ -659,17 +660,23 @@ (DEFINEQ (\CREATE.THROUGH.EXTERNALFORMAT - [LAMBDA NIL (* ; "Edited 23-Jun-2021 13:34 by rmk:") + [LAMBDA NIL (* ; "Edited 24-Jul-2022 08:08 by rmk") + (* ; "Edited 23-Jun-2021 13:34 by rmk:") -(* ;;; "Create an instance of EXTERNALFORMAT datatype and install it with :THROUGH as its name. EOL is adjusted to CR so as not to do any eol conversion on this stream.") +(* ;;; "Create the :THROUGH external format. EOL is adjusted so that the .EOLC callers will not do any conversion.") - (\INSTALL.EXTERNALFORMAT (create EXTERNALFORMAT - NAME _ :THROUGH - INCCODEFN _ (FUNCTION \THROUGHIN) - PEEKCCODEFN _ (FUNCTION \PEEKBIN) - BACKCCODEFN _ (FUNCTION \THROUGHBACKCCODE) - OUTCHARFN _ (FUNCTION \THROUGHOUTCHARFN) - EOL _ CR.EOLC]) + (MAKE-EXTERNALFORMAT :THROUGH (FUNCTION \THROUGHIN) + (FUNCTION \PEEKBIN) + (FUNCTION \THROUGHBACKCCODE) + (FUNCTION \THROUGHOUTCHARFN) + NIL + (CL:IF (EQ (CHARCODE CR) + (CHARCODE EOL)) + CR.EOLC + LF.EOLC) + NIL + (FUNCTION (LAMBDA (STREAM STRING) + (MKSTRING STRING]) (\THROUGHIN [LAMBDA (STREAM COUNTP) (* ; "Edited 6-Aug-2021 16:13 by rmk:") @@ -705,13 +712,13 @@ (\CREATE.THROUGH.EXTERNALFORMAT) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (6571 13206 (\EXTERNALFORMAT 6581 . 10359) (MAKE-EXTERNALFORMAT 10361 . 12733) ( -\EXTERNALFORMAT.DEFPRINT 12735 . 13204)) (13207 16248 (\INSTALL.EXTERNALFORMAT 13217 . 14666) ( -\REMOVE.EXTERNALFORMAT 14668 . 15499) (FIND-FORMAT 15501 . 16246)) (16249 16462 (SYSTEM-EXTERNALFORMAT - 16259 . 16460)) (16811 31010 (\OUTCHAR 16821 . 18038) (\INCCODE 18040 . 19193) (\BACKCCODE 19195 . -20764) (\BACKCCODE.EOLC 20766 . 22956) (\PEEKCCODE 22958 . 23283) (\PEEKCCODE.EOLC 23285 . 23664) ( -\INCCODE.EOLC 23666 . 25346) (\FORMATBYTESTREAM 25348 . 26981) (\FORMATBYTESTRING 26983 . 28442) ( -\CHECKEOLC.CRLF 28444 . 31008)) (32612 34848 (\NULLDEVICE 32622 . 34524) (\NULL.OPENFILE 34526 . 34846 -)) (34988 36831 (\CREATE.THROUGH.EXTERNALFORMAT 34998 . 35800) (\THROUGHIN 35802 . 36222) ( -\THROUGHBACKCCODE 36224 . 36491) (\THROUGHOUTCHARFN 36493 . 36829))))) + (FILEMAP (NIL (6607 13242 (\EXTERNALFORMAT 6617 . 10395) (MAKE-EXTERNALFORMAT 10397 . 12769) ( +\EXTERNALFORMAT.DEFPRINT 12771 . 13240)) (13243 16284 (\INSTALL.EXTERNALFORMAT 13253 . 14702) ( +\REMOVE.EXTERNALFORMAT 14704 . 15535) (FIND-FORMAT 15537 . 16282)) (16285 16498 (SYSTEM-EXTERNALFORMAT + 16295 . 16496)) (16847 31667 (\OUTCHAR 16857 . 18074) (\INCCODE 18076 . 19229) (\BACKCCODE 19231 . +20800) (\BACKCCODE.EOLC 20802 . 22992) (\PEEKCCODE 22994 . 23319) (\PEEKCCODE.EOLC 23321 . 23700) ( +\INCCODE.EOLC 23702 . 25501) (\FORMATBYTESTREAM 25503 . 27638) (\FORMATBYTESTRING 27640 . 29099) ( +\CHECKEOLC.CRLF 29101 . 31665)) (32945 35181 (\NULLDEVICE 32955 . 34857) (\NULL.OPENFILE 34859 . 35179 +)) (35321 37148 (\CREATE.THROUGH.EXTERNALFORMAT 35331 . 36117) (\THROUGHIN 36119 . 36539) ( +\THROUGHBACKCCODE 36541 . 36808) (\THROUGHOUTCHARFN 36810 . 37146))))) STOP diff --git a/sources/EXTERNALFORMAT.LCOM b/sources/EXTERNALFORMAT.LCOM index 567266e50..b131da2fb 100644 Binary files a/sources/EXTERNALFORMAT.LCOM and b/sources/EXTERNALFORMAT.LCOM differ diff --git a/sources/FILEIO b/sources/FILEIO index 78a0ae839..7e0631003 100644 --- a/sources/FILEIO +++ b/sources/FILEIO @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "19-Jul-2022 23:23:39"  -{DSK}kaplan>local>medley3.5>working-medley>sources>FILEIO.;115 160200 +(FILECREATED "24-Jul-2022 09:28:20"  +{DSK}kaplan>local>medley3.5>working-medley>sources>FILEIO.;116 160597 - :CHANGES-TO (FNS \GENERIC.READP) + :CHANGES-TO (VARS FILEIOCOMS) - :PREVIOUS-DATE " 8-Jul-2022 10:59:15" -{DSK}kaplan>local>medley3.5>working-medley>sources>FILEIO.;114) + :PREVIOUS-DATE "19-Jul-2022 23:23:39" +{DSK}kaplan>local>medley3.5>working-medley>sources>FILEIO.;115) (* ; " @@ -90,7 +90,14 @@ Copyright (c) 1981-1993, 1999, 2020-2022 by Venue & Xerox Corporation. (FNS \GENERIC.BINS \GENERIC.BOUTS \GENERIC.RENAMEFILE \GENERIC.OPENP \GENERIC.READP \GENERIC.CHARSET) (FNS \MAP-OPEN-STREAMS) - (VARS FILING.TYPES) + [INITVARS (FILING.TYPES '((BINARY 0) + (DIRECTORY 1) + (TEXT 2) + (SERIALIZED 3) + (INTERPRESS 4361) + (TEDIT 6056) + (FASL 6057) + (LAFITE 6058] (GLOBALVARS FILING.TYPES) (DECLARE%: EVAL@COMPILE DONTCOPY (EXPORT (MACROS \DEVICE-OPEN-STREAMS \CONVERT-PATHNAME ) @@ -2656,14 +2663,14 @@ update the map") collect (APPLY* FN STREAM]) ) -(RPAQQ FILING.TYPES ((BINARY 0) - (DIRECTORY 1) - (TEXT 2) - (SERIALIZED 3) - (INTERPRESS 4361) - (TEDIT 6056) - (FASL 6057) - (LAFITE 6058))) +(RPAQ? FILING.TYPES '((BINARY 0) + (DIRECTORY 1) + (TEXT 2) + (SERIALIZED 3) + (INTERPRESS 4361) + (TEDIT 6056) + (FASL 6057) + (LAFITE 6058))) (DECLARE%: DOEVAL@COMPILE DONTCOPY (GLOBALVARS FILING.TYPES) @@ -3071,39 +3078,39 @@ update the map") (PUTPROPS FILEIO COPYRIGHT ("Venue & Xerox Corporation" 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1999 2020 2021 2022)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (27459 31265 (STREAMPROP 27469 . 27903) (GETSTREAMPROP 27905 . 28500) (PUTSTREAMPROP -28502 . 31113) (STREAMP 31115 . 31263)) (31308 33827 (\DEFPRINT.BY.NAME 31318 . 32470) ( -\STREAM.DEFPRINT 32472 . 33520) (\FDEV.DEFPRINT 33522 . 33825)) (34085 39126 (\GETACCESS 34095 . 34549 -) (\SETACCESS 34551 . 39124)) (59352 65321 (\DEFINEDEVICE 59362 . 61678) (\GETDEVICEFROMNAME 61680 . -62153) (\GETDEVICEFROMHOSTNAME 62155 . 63199) (\REMOVEDEVICE 63201 . 64324) (\REMOVEDEVICE.NAMES 64326 - . 65319)) (65361 90252 (\CLOSEFILE 65371 . 66196) (\DELETEFILE 66198 . 66492) (\DEVICEEVENT 66494 . -68264) (\GENERATEFILES 68266 . 69213) (\GENERATENEXTFILE 69215 . 69866) (\GENERATEFILEINFO 69868 . -70329) (\GETFILENAME 70331 . 70720) (\GENERIC.OUTFILEP 70722 . 71192) (\OPENFILE 71194 . 73772) ( -\DO.PARAMS.AT.OPEN 73774 . 76089) (\RENAMEFILE 76091 . 76515) (\REVALIDATEFILE 76517 . 79119) ( -\PAGED.REVALIDATEFILELST 79121 . 80679) (\PAGED.REVALIDATEFILES 80681 . 82400) (\PAGED.REVALIDATEFILE -82402 . 84685) (\BUFFERED.REVALIDATEFILE 84687 . 86973) (\BUFFERED.REVALIDATEFILELST 86975 . 88159) ( -\PRINT-REVALIDATION-RESULT 88161 . 88576) (\TRUNCATEFILE 88578 . 88969) (\FILE-CONFLICT 88971 . 90250) -) (90288 94951 (\GENERATENOFILES 90298 . 92394) (\NULLFILEGENERATOR 92396 . 92640) (\NOFILESNEXTFILEFN - 92642 . 94633) (\NOFILESINFOFN 94635 . 94949)) (95070 96978 (\FILE.NOT.OPEN 95080 . 95593) ( -\FILE.WONT.OPEN 95595 . 95923) (\ILLEGAL.DEVICEOP 95925 . 96207) (\IS.NOT.RANDACCESSP 96209 . 96655) ( -\STREAM.NOT.OPEN 96657 . 96976)) (97113 99411 (\FDEVINSTANCE 97123 . 99409)) (100613 107987 (CNDIR -100623 . 101928) (DIRECTORYNAME 101930 . 106113) (DIRECTORYNAMEP 106115 . 106731) (HOSTNAMEP 106733 . -107540) (\ADD.CONNECTED.DIR 107542 . 107985)) (108032 136305 (\BACKFILEPTR 108042 . 108230) ( -\BACKPEEKBIN 108232 . 108593) (\BACKBIN 108595 . 108946) (BIN 108948 . 109165) (\BIN 109167 . 109444) -(\BINS 109446 . 109732) (BOUT 109734 . 110096) (\BOUT 110098 . 110413) (\BOUTS 110415 . 110726) ( -COPYBYTES 110728 . 114060) (COPYCHARS 114062 . 117728) (COPYFILE 117730 . 118794) (\COPYOPENFILE -118796 . 121995) (\INFER.FILE.TYPE 121997 . 122951) (EOFP 122953 . 123250) (FORCEOUTPUT 123252 . -123499) (\FLUSH.OPEN.STREAMS 123501 . 123857) (CHARSET 123859 . 125523) (ACCESS-CHARSET 125525 . -125742) (GETEOFPTR 125744 . 125994) (GETFILEINFO 125996 . 129189) (\TYPE.FROM.FILETYPE 129191 . 129661 -) (\FILETYPE.FROM.TYPE 129663 . 129842) (GETFILEPTR 129844 . 130096) (SETFILEINFO 130098 . 134204) ( -SETFILEPTR 134206 . 135925) (BOUT16 135927 . 136112) (BIN16 136114 . 136303)) (136408 141724 ( -\GENERIC.BINS 136418 . 136698) (\GENERIC.BOUTS 136700 . 136965) (\GENERIC.RENAMEFILE 136967 . 138798) -(\GENERIC.OPENP 138800 . 140115) (\GENERIC.READP 140117 . 141269) (\GENERIC.CHARSET 141271 . 141722)) -(141725 142064 (\MAP-OPEN-STREAMS 141735 . 142062)) (143848 145928 (\EOF.ACTION 143858 . 144109) ( -\EOSERROR 144111 . 144304) (\GETEOFPTR 144306 . 144488) (\INCFILEPTR 144490 . 144840) (\PEEKBIN 144842 - . 145033) (\SETCLOSEDFILELENGTH 145035 . 145369) (\SETEOFPTR 145371 . 145559) (\SETFILEPTR 145561 . -145926)) (145929 146471 (\FIXPOUT 145939 . 146239) (\FIXPIN 146241 . 146469)) (146472 147038 (\BOUTEOL - 146482 . 147036)) (149934 159798 (\BUFFERED.BIN 149944 . 150796) (\BUFFERED.PEEKBIN 150798 . 151580) -(\BUFFERED.BOUT 151582 . 152442) (\BUFFERED.BINS 152444 . 156129) (\BUFFERED.BOUTS 156131 . 157932) ( -\BUFFERED.COPYBYTES 157934 . 159796))))) + (FILEMAP (NIL (27848 31654 (STREAMPROP 27858 . 28292) (GETSTREAMPROP 28294 . 28889) (PUTSTREAMPROP +28891 . 31502) (STREAMP 31504 . 31652)) (31697 34216 (\DEFPRINT.BY.NAME 31707 . 32859) ( +\STREAM.DEFPRINT 32861 . 33909) (\FDEV.DEFPRINT 33911 . 34214)) (34474 39515 (\GETACCESS 34484 . 34938 +) (\SETACCESS 34940 . 39513)) (59741 65710 (\DEFINEDEVICE 59751 . 62067) (\GETDEVICEFROMNAME 62069 . +62542) (\GETDEVICEFROMHOSTNAME 62544 . 63588) (\REMOVEDEVICE 63590 . 64713) (\REMOVEDEVICE.NAMES 64715 + . 65708)) (65750 90641 (\CLOSEFILE 65760 . 66585) (\DELETEFILE 66587 . 66881) (\DEVICEEVENT 66883 . +68653) (\GENERATEFILES 68655 . 69602) (\GENERATENEXTFILE 69604 . 70255) (\GENERATEFILEINFO 70257 . +70718) (\GETFILENAME 70720 . 71109) (\GENERIC.OUTFILEP 71111 . 71581) (\OPENFILE 71583 . 74161) ( +\DO.PARAMS.AT.OPEN 74163 . 76478) (\RENAMEFILE 76480 . 76904) (\REVALIDATEFILE 76906 . 79508) ( +\PAGED.REVALIDATEFILELST 79510 . 81068) (\PAGED.REVALIDATEFILES 81070 . 82789) (\PAGED.REVALIDATEFILE +82791 . 85074) (\BUFFERED.REVALIDATEFILE 85076 . 87362) (\BUFFERED.REVALIDATEFILELST 87364 . 88548) ( +\PRINT-REVALIDATION-RESULT 88550 . 88965) (\TRUNCATEFILE 88967 . 89358) (\FILE-CONFLICT 89360 . 90639) +) (90677 95340 (\GENERATENOFILES 90687 . 92783) (\NULLFILEGENERATOR 92785 . 93029) (\NOFILESNEXTFILEFN + 93031 . 95022) (\NOFILESINFOFN 95024 . 95338)) (95459 97367 (\FILE.NOT.OPEN 95469 . 95982) ( +\FILE.WONT.OPEN 95984 . 96312) (\ILLEGAL.DEVICEOP 96314 . 96596) (\IS.NOT.RANDACCESSP 96598 . 97044) ( +\STREAM.NOT.OPEN 97046 . 97365)) (97502 99800 (\FDEVINSTANCE 97512 . 99798)) (101002 108376 (CNDIR +101012 . 102317) (DIRECTORYNAME 102319 . 106502) (DIRECTORYNAMEP 106504 . 107120) (HOSTNAMEP 107122 . +107929) (\ADD.CONNECTED.DIR 107931 . 108374)) (108421 136694 (\BACKFILEPTR 108431 . 108619) ( +\BACKPEEKBIN 108621 . 108982) (\BACKBIN 108984 . 109335) (BIN 109337 . 109554) (\BIN 109556 . 109833) +(\BINS 109835 . 110121) (BOUT 110123 . 110485) (\BOUT 110487 . 110802) (\BOUTS 110804 . 111115) ( +COPYBYTES 111117 . 114449) (COPYCHARS 114451 . 118117) (COPYFILE 118119 . 119183) (\COPYOPENFILE +119185 . 122384) (\INFER.FILE.TYPE 122386 . 123340) (EOFP 123342 . 123639) (FORCEOUTPUT 123641 . +123888) (\FLUSH.OPEN.STREAMS 123890 . 124246) (CHARSET 124248 . 125912) (ACCESS-CHARSET 125914 . +126131) (GETEOFPTR 126133 . 126383) (GETFILEINFO 126385 . 129578) (\TYPE.FROM.FILETYPE 129580 . 130050 +) (\FILETYPE.FROM.TYPE 130052 . 130231) (GETFILEPTR 130233 . 130485) (SETFILEINFO 130487 . 134593) ( +SETFILEPTR 134595 . 136314) (BOUT16 136316 . 136501) (BIN16 136503 . 136692)) (136797 142113 ( +\GENERIC.BINS 136807 . 137087) (\GENERIC.BOUTS 137089 . 137354) (\GENERIC.RENAMEFILE 137356 . 139187) +(\GENERIC.OPENP 139189 . 140504) (\GENERIC.READP 140506 . 141658) (\GENERIC.CHARSET 141660 . 142111)) +(142114 142453 (\MAP-OPEN-STREAMS 142124 . 142451)) (144245 146325 (\EOF.ACTION 144255 . 144506) ( +\EOSERROR 144508 . 144701) (\GETEOFPTR 144703 . 144885) (\INCFILEPTR 144887 . 145237) (\PEEKBIN 145239 + . 145430) (\SETCLOSEDFILELENGTH 145432 . 145766) (\SETEOFPTR 145768 . 145956) (\SETFILEPTR 145958 . +146323)) (146326 146868 (\FIXPOUT 146336 . 146636) (\FIXPIN 146638 . 146866)) (146869 147435 (\BOUTEOL + 146879 . 147433)) (150331 160195 (\BUFFERED.BIN 150341 . 151193) (\BUFFERED.PEEKBIN 151195 . 151977) +(\BUFFERED.BOUT 151979 . 152839) (\BUFFERED.BINS 152841 . 156526) (\BUFFERED.BOUTS 156528 . 158329) ( +\BUFFERED.COPYBYTES 158331 . 160193))))) STOP diff --git a/sources/FILEIO.LCOM b/sources/FILEIO.LCOM index f9e87bf23..38d6168c6 100644 Binary files a/sources/FILEIO.LCOM and b/sources/FILEIO.LCOM differ diff --git a/sources/FILEPKG b/sources/FILEPKG index bb4648f2f..8dd012995 100644 --- a/sources/FILEPKG +++ b/sources/FILEPKG @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "19-Jul-2022 22:34:15"  -{DSK}kaplan>local>medley3.5>working-medley>sources>FILEPKG.;37 280917 +(FILECREATED "24-Jul-2022 15:45:28"  +{DSK}kaplan>local>medley3.5>working-medley>sources>FILEPKG.;43 281515 - :CHANGES-TO (FNS EDITCALLERS) + :CHANGES-TO (FNS SEPRCASE EDITCALLERS) - :PREVIOUS-DATE " 9-Jul-2022 22:10:13" -{DSK}kaplan>local>medley3.5>working-medley>sources>FILEPKG.;36) + :PREVIOUS-DATE "24-Jul-2022 08:51:11" +{DSK}kaplan>local>medley3.5>working-medley>sources>FILEPKG.;42) (* ; " @@ -4408,6 +4408,10 @@ compiling " T) (EDITCALLERS [LAMBDA (ATOMS FILES COMS) + (* ;; "Edited 24-Jul-2022 15:45 by rmk") + + (* ;; "Edited 21-Jul-2022 21:51 by rmk") + (* ;; "Edited 19-Jul-2022 22:33 by rmk") (* ;; "Edited 9-Jul-2022 22:09 by rmk") @@ -4435,7 +4439,7 @@ compiling " T) (T (LIST FILES))) unless (DIRECTORYNAMEP FILE) do (RESETLST - [PROG (PATTERNS CA RDTBL MAP FILESTREAM PRINTFLG ENV TOP I) + [PROG (PATTERNS CA RDTBL MAP FILESTREAM PRINTFLG ENV TOP I CASEINSENSITIVE) (OR (SETQ FULL (FINDFILE FILE)) (RETURN (LISPXPRINT (CONS FILE '(not found)) T T))) @@ -4451,7 +4455,8 @@ compiling " T) (CL:WHEN ENV (SETQ RDTBL (fetch (READER-ENVIRONMENT REREADTABLE) of ENV)) (\EXTERNALFORMAT FILESTREAM ENV)) - (SETQ CA (SEPRCASE DWIMIFYCOMPFLG RDTBL)) + (SETQ CASEINSENSITIVE (READTABLEPROP RDTBL 'CASEINSENSITIVE)) + (SETQ SEPRCA (SEPRCASE DWIMIFYCOMPFLG RDTBL)) (* ;; "Escape matches .*, match need not be bracketed by seprs. We test brackets after each hit, if needed. This avoids the slow case of a CASEARRAY in FFILEPOS. Also more accurate, we don't match any string-internal sepr character to any other string internal sepr character.") @@ -4474,26 +4479,29 @@ compiling " T)  "Keep MKSTRING from putting a prefix on") (SETQ ATOM (MKSTRING ATOM T RDTBL)))) (LIST ATOM PREESCAPE POSTESCAPE]) - (for PATTERN CODE HIT (CABASE _ (FETCH (ARRAYP BASE) OF CA)) - (CASIZE _ (FETCH (ARRAYP LENGTH) OF CA)) - (CAFAT _ (EQ \ST.POS16 (FETCH (ARRAYP TYP) OF CA))) in PATTERNS + (for PATTERN CODE HIT (SEPRBASE _ (FETCH (ARRAYP BASE) OF SEPRCA)) + (SEPRSIZE _ (FETCH (ARRAYP LENGTH) OF SEPRCA)) + (SEPRFAT _ (EQ \ST.POS16 (FETCH (ARRAYP TYP) OF SEPRCA))) in PATTERNS do (SETFILEPTR FILESTREAM (SETQ I (OR TOP 0))) - (* ;; - "If the pattern character match, the pre and post characters must be seprs, unless escapes") + (* ;; "If the pattern characters match, the pre and post characters must be seprs, unless escapes as noted and stripped above") (while [SETQ I (CDR (SETQ HIT (FFILEPOS (CAR PATTERN) - FILESTREAM I NIL NIL 'BOTH] + FILESTREAM I NIL NIL 'BOTH (CL:WHEN + CASEINSENSITIVE + + UPPERCASEARRAY + ] when [AND [OR (CADR PATTERN) (PROGN (SETFILEPTR FILESTREAM (CAR HIT)) (PROG1 (OR (NOT (SETQ CODE (\BACKCCODE FILESTREAM))) - (ZEROP (\CATRANSLATE CABASE CASIZE CAFAT CODE - ))) + (ZEROP (\CATRANSLATE SEPRBASE SEPRSIZE + SEPRFAT CODE))) (\SETFILEPTR FILESTREAM I] (OR (CADDR PATTERN) (NOT (SETQ CODE (\PEEKCCODE FILESTREAM T))) - (ZEROP (\CATRANSLATE CABASE CASIZE CAFAT CODE] + (ZEROP (\CATRANSLATE SEPRBASE SEPRSIZE SEPRFAT CODE] do (* ;; "The next search begins after the last search, since I is the tail of a match, even if the fileptr is set to 0 to get the map") @@ -4664,29 +4672,34 @@ compiling " T) (DEFINEQ (SEPRCASE - [LAMBDA (CLFLG RDTBL) (* bvm%: "24-Oct-86 18:16") + [LAMBDA (CLFLG RDTBL) + + (* ;; "Edited 24-Jul-2022 15:39 by rmk") + + (* ;; "Edited 22-Jul-2022 20:54 by rmk: Ensured that quote and comma are seen as delimiters for every readtable and whether or not CLFLG. This increases recall, precision is not so important.") + + (* ;; "Edited 22-Jul-2022 20:51 by rmk") + (* bvm%: "24-Oct-86 18:16") - (* ;; "make a case array for FFILEPOS in which all of the seprs, breaks, and (possibly) clisp chars are all equivalent. Based on FILERDTBL, but others are close with respect to breaks and seprs") + (* ;; "make a case array for FFILEPOS in which all of the seprs, breaks, and (possibly) clisp chars are all equivalent. ") (OR RDTBL (SETQ RDTBL FILERDTBL)) (OR [ARRAYP (CDR (ASSOC RDTBL (COND (CLFLG CLISPCASEARRAYS) (T SEPRCASEARRAYS] (LET ((CA (CASEARRAY))) - [if (READTABLEPROP RDTBL 'CASEINSENSITIVE) - then (* ; "map upper into lower case") - (for I from (CHARCODE A) to (CHARCODE Z) - do (SETCASEARRAY CA I (+ I (- (CHARCODE a) - (CHARCODE A] - (for X in (NCONC (AND CLFLG (for Y in CLISPCHARS - collect (CHCON1 Y))) - (GETSEPR RDTBL) - (GETBRK RDTBL)) do (SETCASEARRAY CA X 0)) + (for X in (NCONC (AND CLFLG (for Y in CLISPCHARS collect (CHCON1 Y))) + (GETSEPR RDTBL) + (GETBRK RDTBL)) do (SETCASEARRAY CA X 0)) + (SETCASEARRAY CA (CHARCODE %') + 0) + (SETCASEARRAY CA (CHARCODE %,) + 0) (if *PACKAGE* - then (* ; - "symbols qualified with package prefix will otherwise be unfindable") - (SETCASEARRAY CA (READTABLEPROP RDTBL 'PACKAGECHAR) - 0)) + then (* ; + "symbols qualified with package prefix will otherwise be unfindable") + (SETCASEARRAY CA (READTABLEPROP RDTBL 'PACKAGECHAR) + 0)) (SETQ CA (CONS RDTBL CA)) (COND (CLFLG (push CLISPCASEARRAYS CA)) @@ -4948,46 +4961,46 @@ compiling " T) (PUTPROPS FILEPKG COPYRIGHT ("Venue & Xerox Corporation" T 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1995 2018 2020 2021 2022)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (19265 20970 (SEARCHPRETTYTYPELST 19275 . 20254) (PRETTYDEFMACROS 20256 . 20714) ( -FILEPKGCOMPROPS 20716 . 20968)) (21772 57019 (CLEANUP 21782 . 23170) (COMPILEFILES 23172 . 23448) ( -COMPILEFILES0 23450 . 24170) (CONTINUEDIT 24172 . 25592) (MAKEFILE 25594 . 37931) (FILECHANGES 37933 - . 40697) (FILEPKG.MERGECHANGES 40699 . 41522) (FILEPKG.CHANGEDFNS 41524 . 41836) (MAKEFILE1 41838 . -46065) (COMPILE-FILE? 46067 . 47624) (MAKEFILES 47626 . 49319) (ADDFILE 49321 . 51842) (ADDFILE0 51844 - . 55980) (LISTFILES 55982 . 57017)) (57691 92931 (FILEPKGCHANGES 57701 . 59051) (GETFILEPKGTYPE 59053 - . 62126) (MARKASCHANGED 62128 . 63765) (FILECOMS 63767 . 64151) (WHEREIS 64153 . 65573) ( -SMASHFILECOMS 65575 . 65810) (FILEFNSLST 65812 . 65974) (FILECOMSLST 65976 . 66460) (UPDATEFILES 66462 - . 71762) (INFILECOMS? 71764 . 73667) (INFILECOMTAIL 73669 . 74809) (INFILECOMS 74811 . 74972) ( -INFILECOM 74974 . 85183) (INFILECOMSVALS 85185 . 85512) (INFILECOMSVAL 85514 . 86516) (INFILECOMSPROP -86518 . 87347) (IFCPROPS 87349 . 88610) (IFCEXPRTYPE 88612 . 89123) (IFCPROPSCAN 89125 . 90178) ( -IFCDECLARE 90180 . 91491) (INFILEPAIRS 91493 . 91825) (INFILECOMSMACRO 91827 . 92929)) (92966 124386 ( -FILES? 92976 . 95169) (FILES?1 95171 . 95869) (FILES?PRINTLST 95871 . 96653) (ADDTOFILES? 96655 . -107701) (ADDTOFILE 107703 . 108619) (WHATIS 108621 . 110597) (ADDTOCOMS 110599 . 112243) (ADDTOCOM -112245 . 118792) (ADDTOCOM1 118794 . 119965) (ADDNEWCOM 119967 . 121017) (MAKENEWCOM 121019 . 122862) -(DEFAULTMAKENEWCOM 122864 . 124384)) (124456 127273 (MERGEINSERT 124466 . 126809) (MERGEINSERT1 126811 - . 127271)) (127427 128784 (ADDTOFILEKEYLST 127437 . 128782)) (128901 139813 (DELFROMFILES 128911 . -129761) (DELFROMCOMS 129763 . 131442) (DELFROMCOM 131444 . 137312) (DELFROMCOM1 137314 . 138111) ( -REMOVEITEM 138113 . 138987) (MOVETOFILE 138989 . 139811)) (140027 142396 (SAVEPUT 140037 . 142394)) ( -142521 150845 (UNMARKASCHANGED 142531 . 144239) (PREEDITFN 144241 . 146752) (POSTEDITPROPS 146754 . -149255) (POSTEDITALISTS 149257 . 150843)) (150990 171544 (ALISTS.GETDEF 151000 . 151379) ( -ALISTS.WHENCHANGED 151381 . 152025) (CLEARCLISPARRAY 152027 . 153201) (EXPRESSIONS.WHENCHANGED 153203 - . 153577) (MAKEALISTCOMS 153579 . 154652) (MAKEFILESCOMS 154654 . 156091) (MAKELISPXMACROSCOMS 156093 - . 158111) (MAKEPROPSCOMS 158113 . 158811) (MAKEUSERMACROSCOMS 158813 . 160613) (PROPS.WHENCHANGED -160615 . 161236) (FILEGETDEF.LISPXMACROS 161238 . 162680) (FILEGETDEF.ALISTS 162682 . 163301) ( -FILEGETDEF.RECORDS 163303 . 164234) (FILEGETDEF.PROPS 164236 . 165028) (FILEGETDEF.MACROS 165030 . -166090) (FILEGETDEF.VARS 166092 . 166508) (FILEGETDEF.FNS 166510 . 167874) (FILEPKGCOMS.PUTDEF 167876 - . 170316) (FILES.PUTDEF 170318 . 171275) (VARS.PUTDEF 171277 . 171420) (FILES.WHENCHANGED 171422 . -171542)) (173566 180999 (RENAME 173576 . 174977) (CHANGECALLERS 174979 . 180997)) (181000 229856 ( -SHOWDEF 181010 . 182203) (COPYDEF 182205 . 184679) (GETDEF 184681 . 186957) (GETDEFCOM 186959 . 187925 -) (GETDEFCOM0 187927 . 189273) (GETDEFCURRENT 189275 . 195695) (GETDEFERR 195697 . 196998) ( -GETDEFFROMFILE 197000 . 201280) (GETDEFSAVED 201282 . 202386) (PUTDEF 202388 . 203091) (EDITDEF 203093 - . 204070) (DEFAULT.EDITDEF 204072 . 206908) (EDITDEF.FILES 206910 . 207111) (LOADDEF 207113 . 207289) - (DWIMDEF 207291 . 208145) (DELDEF 208147 . 211161) (DELFROMLIST 211163 . 211667) (HASDEF 211669 . -217991) (GETFILEDEF 217993 . 218515) (SAVEDEF 218517 . 220176) (UNSAVEDEF 220178 . 221074) ( -COMPAREDEFS 221076 . 224886) (COMPARE 224888 . 225592) (TYPESOF 225594 . 229854)) (230006 238777 ( -FILEPKGCOM 230016 . 234949) (FILEPKGTYPE 234951 . 238775)) (250810 267307 (FINDCALLERS 250820 . 251335 -) (EDITCALLERS 251337 . 260812) (EDITFROMFILE 260814 . 266622) (FINDATS 266624 . 266896) (LOOKIN -266898 . 267305)) (267308 269035 (SEPRCASE 267318 . 269033)) (269552 275109 (IMPORTFILE 269562 . -270536) (IMPORTEVAL 270538 . 271418) (IMPORTFILESCAN 271420 . 271841) (CHECKIMPORTS 271843 . 273179) ( -GATHEREXPORTS 273181 . 274519) (\DUMPEXPORTS 274521 . 275107)) (275447 277655 (CLEARFILEPKG 275457 . -277653))))) + (FILEMAP (NIL (19274 20979 (SEARCHPRETTYTYPELST 19284 . 20263) (PRETTYDEFMACROS 20265 . 20723) ( +FILEPKGCOMPROPS 20725 . 20977)) (21781 57028 (CLEANUP 21791 . 23179) (COMPILEFILES 23181 . 23457) ( +COMPILEFILES0 23459 . 24179) (CONTINUEDIT 24181 . 25601) (MAKEFILE 25603 . 37940) (FILECHANGES 37942 + . 40706) (FILEPKG.MERGECHANGES 40708 . 41531) (FILEPKG.CHANGEDFNS 41533 . 41845) (MAKEFILE1 41847 . +46074) (COMPILE-FILE? 46076 . 47633) (MAKEFILES 47635 . 49328) (ADDFILE 49330 . 51851) (ADDFILE0 51853 + . 55989) (LISTFILES 55991 . 57026)) (57700 92940 (FILEPKGCHANGES 57710 . 59060) (GETFILEPKGTYPE 59062 + . 62135) (MARKASCHANGED 62137 . 63774) (FILECOMS 63776 . 64160) (WHEREIS 64162 . 65582) ( +SMASHFILECOMS 65584 . 65819) (FILEFNSLST 65821 . 65983) (FILECOMSLST 65985 . 66469) (UPDATEFILES 66471 + . 71771) (INFILECOMS? 71773 . 73676) (INFILECOMTAIL 73678 . 74818) (INFILECOMS 74820 . 74981) ( +INFILECOM 74983 . 85192) (INFILECOMSVALS 85194 . 85521) (INFILECOMSVAL 85523 . 86525) (INFILECOMSPROP +86527 . 87356) (IFCPROPS 87358 . 88619) (IFCEXPRTYPE 88621 . 89132) (IFCPROPSCAN 89134 . 90187) ( +IFCDECLARE 90189 . 91500) (INFILEPAIRS 91502 . 91834) (INFILECOMSMACRO 91836 . 92938)) (92975 124395 ( +FILES? 92985 . 95178) (FILES?1 95180 . 95878) (FILES?PRINTLST 95880 . 96662) (ADDTOFILES? 96664 . +107710) (ADDTOFILE 107712 . 108628) (WHATIS 108630 . 110606) (ADDTOCOMS 110608 . 112252) (ADDTOCOM +112254 . 118801) (ADDTOCOM1 118803 . 119974) (ADDNEWCOM 119976 . 121026) (MAKENEWCOM 121028 . 122871) +(DEFAULTMAKENEWCOM 122873 . 124393)) (124465 127282 (MERGEINSERT 124475 . 126818) (MERGEINSERT1 126820 + . 127280)) (127436 128793 (ADDTOFILEKEYLST 127446 . 128791)) (128910 139822 (DELFROMFILES 128920 . +129770) (DELFROMCOMS 129772 . 131451) (DELFROMCOM 131453 . 137321) (DELFROMCOM1 137323 . 138120) ( +REMOVEITEM 138122 . 138996) (MOVETOFILE 138998 . 139820)) (140036 142405 (SAVEPUT 140046 . 142403)) ( +142530 150854 (UNMARKASCHANGED 142540 . 144248) (PREEDITFN 144250 . 146761) (POSTEDITPROPS 146763 . +149264) (POSTEDITALISTS 149266 . 150852)) (150999 171553 (ALISTS.GETDEF 151009 . 151388) ( +ALISTS.WHENCHANGED 151390 . 152034) (CLEARCLISPARRAY 152036 . 153210) (EXPRESSIONS.WHENCHANGED 153212 + . 153586) (MAKEALISTCOMS 153588 . 154661) (MAKEFILESCOMS 154663 . 156100) (MAKELISPXMACROSCOMS 156102 + . 158120) (MAKEPROPSCOMS 158122 . 158820) (MAKEUSERMACROSCOMS 158822 . 160622) (PROPS.WHENCHANGED +160624 . 161245) (FILEGETDEF.LISPXMACROS 161247 . 162689) (FILEGETDEF.ALISTS 162691 . 163310) ( +FILEGETDEF.RECORDS 163312 . 164243) (FILEGETDEF.PROPS 164245 . 165037) (FILEGETDEF.MACROS 165039 . +166099) (FILEGETDEF.VARS 166101 . 166517) (FILEGETDEF.FNS 166519 . 167883) (FILEPKGCOMS.PUTDEF 167885 + . 170325) (FILES.PUTDEF 170327 . 171284) (VARS.PUTDEF 171286 . 171429) (FILES.WHENCHANGED 171431 . +171551)) (173575 181008 (RENAME 173585 . 174986) (CHANGECALLERS 174988 . 181006)) (181009 229865 ( +SHOWDEF 181019 . 182212) (COPYDEF 182214 . 184688) (GETDEF 184690 . 186966) (GETDEFCOM 186968 . 187934 +) (GETDEFCOM0 187936 . 189282) (GETDEFCURRENT 189284 . 195704) (GETDEFERR 195706 . 197007) ( +GETDEFFROMFILE 197009 . 201289) (GETDEFSAVED 201291 . 202395) (PUTDEF 202397 . 203100) (EDITDEF 203102 + . 204079) (DEFAULT.EDITDEF 204081 . 206917) (EDITDEF.FILES 206919 . 207120) (LOADDEF 207122 . 207298) + (DWIMDEF 207300 . 208154) (DELDEF 208156 . 211170) (DELFROMLIST 211172 . 211676) (HASDEF 211678 . +218000) (GETFILEDEF 218002 . 218524) (SAVEDEF 218526 . 220185) (UNSAVEDEF 220187 . 221083) ( +COMPAREDEFS 221085 . 224895) (COMPARE 224897 . 225601) (TYPESOF 225603 . 229863)) (230015 238786 ( +FILEPKGCOM 230025 . 234958) (FILEPKGTYPE 234960 . 238784)) (250819 267961 (FINDCALLERS 250829 . 251344 +) (EDITCALLERS 251346 . 261466) (EDITFROMFILE 261468 . 267276) (FINDATS 267278 . 267550) (LOOKIN +267552 . 267959)) (267962 269633 (SEPRCASE 267972 . 269631)) (270150 275707 (IMPORTFILE 270160 . +271134) (IMPORTEVAL 271136 . 272016) (IMPORTFILESCAN 272018 . 272439) (CHECKIMPORTS 272441 . 273777) ( +GATHEREXPORTS 273779 . 275117) (\DUMPEXPORTS 275119 . 275705)) (276045 278253 (CLEARFILEPKG 276055 . +278251))))) STOP diff --git a/sources/FILEPKG.LCOM b/sources/FILEPKG.LCOM index 0bb15fabe..88a51ee80 100644 Binary files a/sources/FILEPKG.LCOM and b/sources/FILEPKG.LCOM differ diff --git a/sources/IOCHAR b/sources/IOCHAR index 343be705e..ad49aae3b 100644 --- a/sources/IOCHAR +++ b/sources/IOCHAR @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "10-Jul-2022 16:52:14"  -{DSK}kaplan>local>medley3.5>working-medley>sources>IOCHAR.;39 99224 +(FILECREATED "24-Jul-2022 14:56:20"  +{DSK}kaplan>local>medley3.5>working-medley>sources>IOCHAR.;43 100109 - :CHANGES-TO (FNS FILEPOS \SLOWFILEPOS FFILEPOS) + :CHANGES-TO (FNS \SLOWFILEPOS) - :PREVIOUS-DATE " 1-Jul-2022 11:55:50" -{DSK}kaplan>local>medley3.5>working-medley>sources>IOCHAR.;36) + :PREVIOUS-DATE "10-Jul-2022 16:52:14" +{DSK}kaplan>local>medley3.5>working-medley>sources>IOCHAR.;39) (* ; " @@ -633,6 +633,8 @@ DONTCOPY (\SLOWFILEPOS [LAMBDA (PATTERN STREAM STARTBYTEPOS ENDBYTEPOS SKIP TAIL CASEARRAY) + (* ;; "Edited 24-Jul-2022 14:56 by rmk") + (* ;; "Edited 10-Jul-2022 16:50 by rmk") (* ;; "Edited 1-Jul-2022 10:51 by rmk") @@ -685,8 +687,11 @@ DONTCOPY (* ;;  "EOFGUARD saves a little testing, assumes no character in any encoding takes more than 10 bytes.") - (BIND STREAMCODE NBYTESHI NBYTESLO SECONDCHARSET (NBYTES _ (IDIFFERENCE ENDBYTEPOS - STARTBYTEPOS)) + (BIND STREAMCODE NBYTESHI NBYTESLO SECONDCHARSET *BYTECOUNTER* (NBYTES _ (IDIFFERENCE + ENDBYTEPOS + STARTBYTEPOS)) + (EOLC _ (FFETCH (STREAM EOLCONVENTION) OF STREAM)) + (INCCODEFN _ (FFETCH (STREAM INCCODEFN) OF STREAM)) DECLARE (SPECVARS *BYTECOUNTER*) FIRST (SETQ NBYTESHI (FOLDLO NBYTES FILEPOS.SEGMENT.SIZE)) (SETQ NBYTESLO (IMOD NBYTES FILEPOS.SEGMENT.SIZE)) DO (DO @@ -705,9 +710,19 @@ DONTCOPY (NULL (\PEEKCCODE STREAM T))) (GO FAILED)) (SETQ STARTCHARSET (ffetch (STREAM CHARSET) of STREAM)) - (SETQ STREAMCODE (\INCCODE.EOLC STREAM NIL 'NFIRSTCODEBYTES 0)) - (ADD NBYTESLO NFIRSTCODEBYTES) (* ; + (PROGN + (* ;; + "Open coding of \INCCODE.EOLC (with *BYTECOUNTER* and EOLC bindings above.") + + (SETQ STREAMCODE (\CHECKEOLC (CL:FUNCALL INCCODEFN STREAM T) + EOLC STREAM NIL T)) + + (* ;; "Make negative because that's the \INCCODE convention") + + (SETQ NFIRSTCODEBYTES (IMINUS *BYTECOUNTER*))) + (* ;  "Decrement the character's byte count") + (ADD NBYTESLO NFIRSTCODEBYTES) (CL:WHEN (EQ PATFIRSTCODE SKIPCODE) (* ; "Pattern starts with skip") (RETURN)) (CL:WHEN CABASE @@ -745,16 +760,16 @@ DONTCOPY FOUNDIT - (* ;; "The CHARSET should be accurate in the tail case. We have to adjust for the start case.") + (* ;; "The CHARSET should be accurate in the tail case. We have to adjust for the start case. NPBYTES is positive, given that we opencoded the \INCCODE.EOLC in the first-char loop.") (RETURN (SELECTQ TAIL (NIL (* ;  "Fileptr wants to be where the match started") (freplace (STREAM CHARSET) of STREAM with STARTCHARSET) - (\INCFILEPTR STREAM (IPLUS NPBYTES NFIRSTCODEBYTES)) + (\INCFILEPTR STREAM (IPLUS NFIRSTCODEBYTES NPBYTES)) (\GETFILEPTR STREAM)) (BOTH (CONS (IPLUS (\GETFILEPTR STREAM) - NPBYTES NFIRSTCODEBYTES) + NFIRSTCODEBYTES NPBYTES) (\GETFILEPTR STREAM))) (\GETFILEPTR STREAM))) FAILED @@ -1554,15 +1569,15 @@ DONTCOPY (PUTPROPS IOCHAR COPYRIGHT ("Venue & Xerox Corporation" 1981 1982 1983 1984 1985 1986 1987 1988 1990 1991 2018 2020)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (3524 7318 (CHCON 3534 . 4384) (UNPACK 4386 . 5280) (DCHCON 5282 . 6549) (DUNPACK 6551 - . 7316)) (7319 18834 (UALPHORDER 7329 . 7425) (ALPHORDER 7427 . 9230) (CONCAT 9232 . 9877) ( -CONCATCODES 9879 . 10065) (PACKC 10067 . 12670) (PACK 12672 . 13251) (PACK* 13253 . 14975) (\PACK.ITEM - 14977 . 15432) (STRPOS 15434 . 18832)) (18836 19125 (XCL:PACK 18836 . 19125)) (19127 19377 (XCL:PACK* - 19127 . 19377)) (20015 22406 (STRPOSL 20025 . 21651) (MAKEBITTABLE 21653 . 22404)) (22568 23045 ( -CASEARRAY 22578 . 22768) (UPPERCASEARRAY 22770 . 23043)) (23367 55842 (FILEPOS 23377 . 32618) ( -FFILEPOS 32620 . 44841) (\SETUP.FFILEPOS 44843 . 48626) (\SLOWFILEPOS 48628 . 55840)) (56630 97877 ( -DATE 56640 . 56726) (DATEFORMAT 56728 . 56820) (GDATE 56822 . 56933) (IDATE 56935 . 68606) ( -\IDATESCANTOKEN 68608 . 69887) (\IDATE-PARSE-MONTH 69889 . 73585) (\OUTDATE 73587 . 86335) ( -\OUTDATE-STRING 86337 . 86952) (\RPLRIGHT 86954 . 87192) (\UNPACKDATE 87194 . 92985) (\PACKDATE 92987 - . 96307) (\DTSCAN 96309 . 96451) (\ISDST? 96453 . 96960) (\CHECKDSTCHANGE 96962 . 97875))))) + (FILEMAP (NIL (3507 7301 (CHCON 3517 . 4367) (UNPACK 4369 . 5263) (DCHCON 5265 . 6532) (DUNPACK 6534 + . 7299)) (7302 18817 (UALPHORDER 7312 . 7408) (ALPHORDER 7410 . 9213) (CONCAT 9215 . 9860) ( +CONCATCODES 9862 . 10048) (PACKC 10050 . 12653) (PACK 12655 . 13234) (PACK* 13236 . 14958) (\PACK.ITEM + 14960 . 15415) (STRPOS 15417 . 18815)) (18819 19108 (XCL:PACK 18819 . 19108)) (19110 19360 (XCL:PACK* + 19110 . 19360)) (19998 22389 (STRPOSL 20008 . 21634) (MAKEBITTABLE 21636 . 22387)) (22551 23028 ( +CASEARRAY 22561 . 22751) (UPPERCASEARRAY 22753 . 23026)) (23350 56727 (FILEPOS 23360 . 32601) ( +FFILEPOS 32603 . 44824) (\SETUP.FFILEPOS 44826 . 48609) (\SLOWFILEPOS 48611 . 56725)) (57515 98762 ( +DATE 57525 . 57611) (DATEFORMAT 57613 . 57705) (GDATE 57707 . 57818) (IDATE 57820 . 69491) ( +\IDATESCANTOKEN 69493 . 70772) (\IDATE-PARSE-MONTH 70774 . 74470) (\OUTDATE 74472 . 87220) ( +\OUTDATE-STRING 87222 . 87837) (\RPLRIGHT 87839 . 88077) (\UNPACKDATE 88079 . 93870) (\PACKDATE 93872 + . 97192) (\DTSCAN 97194 . 97336) (\ISDST? 97338 . 97845) (\CHECKDSTCHANGE 97847 . 98760))))) STOP diff --git a/sources/IOCHAR.LCOM b/sources/IOCHAR.LCOM index ff544997c..3e6c8bee9 100644 Binary files a/sources/IOCHAR.LCOM and b/sources/IOCHAR.LCOM differ