|
1 | 1 | (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) |
2 | 2 |
|
3 | | -(FILECREATED "24-Aug-2025 13:38:35" {WMEDLEY}<lispusers>COMPAREDIRECTORIES.;268 133743 |
| 3 | +(FILECREATED "25-Oct-2025 23:59:24" {MEDLEY}<lispusers>COMPAREDIRECTORIES.;2 135376 |
4 | 4 |
|
5 | 5 | :EDIT-BY rmk |
6 | 6 |
|
7 | | - :CHANGES-TO (FNS CDENTRIES.SELECT CDPRINT.LINE) |
| 7 | + :CHANGES-TO (FNS CDBROWSER-COPY) |
8 | 8 |
|
9 | | - :PREVIOUS-DATE "26-Mar-2025 09:41:31" {WMEDLEY}<lispusers>COMPAREDIRECTORIES.;267) |
| 9 | + :PREVIOUS-DATE "22-Oct-2025 08:32:01" {WMEDLEY}<lispusers>COMPAREDIRECTORIES.;272) |
10 | 10 |
|
11 | 11 |
|
12 | 12 | (PRETTYCOMPRINT COMPAREDIRECTORIESCOMS) |
|
160 | 160 | (COMPAREDIRECTORIES.INFOS |
161 | 161 | [LAMBDA (DIR INCLUDEDFILES EXCLUDEDFILES ALLVERSIONS DEPTH USEDIRECTORYDATE INCLUDEAUTHOR) |
162 | 162 |
|
| 163 | + (* ;; "Edited 21-Oct-2025 14:26 by rmk") |
| 164 | + |
163 | 165 | (* ;; "Edited 29-Sep-2023 17:25 by rmk") |
164 | 166 |
|
165 | 167 | (* ;; "Edited 22-May-2022 14:17 by rmk") |
|
168 | 170 |
|
169 | 171 | (* ;; "Each entry is a list of the form (matchname . CDINFOS). CDINFOS is guaranteed to be a singleton, unless ALLVERSIONS. ") |
170 | 172 |
|
171 | | - (FOR FULLNAME TYPE LDATE STREAM (STARTPOS _ (ADD1 (NCHARS DIR))) |
172 | | - IN (CDFILES DIR INCLUDEDFILES EXCLUDEDFILES ALLVERSIONS DEPTH) |
173 | | - COLLECT |
| 173 | + (CL:WHEN (DIRECTORYNAMEP DIR) |
| 174 | + [FOR FULLNAME TYPE LDATE STREAM (STARTPOS _ (ADD1 (NCHARS DIR))) |
| 175 | + IN (CDFILES DIR INCLUDEDFILES EXCLUDEDFILES ALLVERSIONS DEPTH) |
| 176 | + COLLECT |
174 | 177 |
|
175 | | - (* ;; "GDATE/IDATE in case Y2K") |
| 178 | + (* ;; "GDATE/IDATE in case Y2K") |
176 | 179 |
|
177 | | - (SETQ STREAM (OPENSTREAM FULLNAME 'INPUT)) (* ; |
| 180 | + (SETQ STREAM (OPENSTREAM FULLNAME 'INPUT)) (* ; |
178 | 181 | "So all the GETFILEINFO's, FILEDATES, etc. don't have to do the directory searching.") |
179 | 182 | (* ; |
180 | 183 | "Is it a Lisp file? Get it's internal filecreated date. ") |
181 | | - (CL:MULTIPLE-VALUE-SETQ (TYPE LDATE) |
182 | | - (COMPAREDIRECTORIES.INFOS.TYPE STREAM)) |
183 | | - (PROG1 (LIST (MATCHNAME FULLNAME STARTPOS) |
184 | | - (CREATE CDINFO |
185 | | - FULLNAME _ (FULLNAME STREAM) |
186 | | - DATE _ (GDATE (IDATE (IF (OR USEDIRECTORYDATE (NULL LDATE)) |
187 | | - THEN (GETFILEINFO STREAM 'CREATIONDATE) |
188 | | - ELSE (SETFILEINFO STREAM 'CREATIONDATE LDATE) |
189 | | - LDATE))) |
190 | | - LENGTH _ (GETFILEINFO STREAM 'LENGTH) |
191 | | - AUTHOR _ (AND INCLUDEAUTHOR (GETFILEINFO STREAM 'AUTHOR)) |
192 | | - TYPE _ TYPE |
193 | | - EOL _ (EOLTYPE STREAM))) |
194 | | - (CLOSEF? STREAM)) |
195 | | - FINALLY |
196 | | - |
197 | | - (* ;; "Sort to get all entries with the same matchname adjacent. Presumably we would only need to collect multiples if ALLVERSIONS, but in a case-sensitive file system we might see files with names that differ in case. We have deliberately given them a case-insensitive matchname, so we can expose this issue in the display.") |
198 | | - |
199 | | - (* ;; "If we see (MN X)(MN Y), smash the Y in after the X") |
200 | | - |
201 | | - (RETURN (FOR ITAIL I VAL MN ON (SORT $$VAL T) |
202 | | - DO (SETQ I (CAR ITAIL)) |
203 | | - (SETQ MN (CAR I)) |
204 | | - [WHILE (EQ MN (CAADR ITAIL)) DO (POP ITAIL) |
205 | | - (PUSH (CDR I) |
206 | | - (CADR (CAR ITAIL] |
207 | | - (PUSH VAL I) FINALLY (RETURN (DREVERSE VAL]) |
| 184 | + (CL:MULTIPLE-VALUE-SETQ (TYPE LDATE) |
| 185 | + (COMPAREDIRECTORIES.INFOS.TYPE STREAM)) |
| 186 | + (PROG1 (LIST (MATCHNAME FULLNAME STARTPOS) |
| 187 | + (CREATE CDINFO |
| 188 | + FULLNAME _ (FULLNAME STREAM) |
| 189 | + DATE _ (GDATE (IDATE (IF (OR USEDIRECTORYDATE (NULL LDATE)) |
| 190 | + THEN (GETFILEINFO STREAM 'CREATIONDATE) |
| 191 | + ELSE (SETFILEINFO STREAM 'CREATIONDATE |
| 192 | + LDATE) |
| 193 | + LDATE))) |
| 194 | + LENGTH _ (GETFILEINFO STREAM 'LENGTH) |
| 195 | + AUTHOR _ (AND INCLUDEAUTHOR (GETFILEINFO STREAM 'AUTHOR)) |
| 196 | + TYPE _ TYPE |
| 197 | + EOL _ (EOLTYPE STREAM))) |
| 198 | + (CLOSEF? STREAM)) |
| 199 | + FINALLY |
| 200 | + |
| 201 | + (* ;; "Sort to get all entries with the same matchname adjacent. Presumably we would only need to collect multiples if ALLVERSIONS, but in a case-sensitive file system we might see files with names that differ in case. We have deliberately given them a case-insensitive matchname, so we can expose this issue in the display.") |
| 202 | + |
| 203 | + (* ;; "If we see (MN X)(MN Y), smash the Y in after the X") |
| 204 | + |
| 205 | + (RETURN (FOR ITAIL I VAL MN ON (SORT $$VAL T) |
| 206 | + DO (SETQ I (CAR ITAIL)) |
| 207 | + (SETQ MN (CAR I)) |
| 208 | + [WHILE (EQ MN (CAADR ITAIL)) DO (POP ITAIL) |
| 209 | + (PUSH (CDR I) |
| 210 | + (CADR (CAR ITAIL] |
| 211 | + (PUSH VAL I) FINALLY (RETURN (DREVERSE VAL])]) |
208 | 212 |
|
209 | 213 | (COMPAREDIRECTORIES.CANDIDATES |
210 | 214 | [LAMBDA (INFOS1 INFOS2) |
|
335 | 339 | CDE]) |
336 | 340 |
|
337 | 341 | (COMPAREDIRECTORIES.INFOS.TYPE |
338 | | - [LAMBDA (FILE) (* ; "Edited 28-Sep-2023 23:09 by rmk") |
| 342 | + [LAMBDA (FILE) (* ; "Edited 22-Oct-2025 08:29 by rmk") |
| 343 | + (* ; "Edited 20-Sep-2025 12:59 by rmk") |
| 344 | + (* ; "Edited 28-Sep-2023 23:09 by rmk") |
339 | 345 | (* ; "Edited 22-May-2022 14:27 by rmk") |
340 | 346 | (* ; "Edited 25-Apr-2022 09:02 by rmk") |
341 | 347 | (* ; "Edited 4-Jan-2022 13:10 by rmk") |
|
404 | 410 | (DEFINEQ |
405 | 411 |
|
406 | 412 | (CDFILES |
407 | | - [LAMBDA (DIR INCLUDEDFILES EXCLUDEDFILES ALLVERSIONS DEPTH)(* ; "Edited 17-Jun-2023 23:04 by rmk") |
| 413 | + [LAMBDA (DIR INCLUDEDFILES EXCLUDEDFILES ALLVERSIONS DEPTH)(* ; "Edited 20-Oct-2025 23:25 by rmk") |
| 414 | + (* ; "Edited 17-Jun-2023 23:04 by rmk") |
408 | 415 | (* ; "Edited 3-Oct-2022 12:03 by rmk") |
409 | 416 | (* ; "Edited 25-Apr-2022 08:42 by rmk") |
410 | 417 | (* ; "Edited 5-Mar-2022 15:05 by rmk") |
|
426 | 433 |
|
427 | 434 | (* ;; "EXCLUDEDFILES is a filepattern with * meaning everything, COM means *.LCOM and *.DFASL") |
428 | 435 |
|
429 | | - [SETQ EXCLUDEDFILES `(*>.DS_Store |
430 | | - ,@(MKLIST EXCLUDEDFILES] |
| 436 | + [SETQ EXCLUDEDFILES `(*>.DS�Store ,@(MKLIST EXCLUDEDFILES] |
431 | 437 | (CL:UNLESS (EQMEMB '.* INCLUDEDFILES) (* ; |
432 | 438 | "Excluded dot files unless specifically asked for") |
433 | 439 | [SETQ EXCLUDEDFILES `(.* ,@(MKLIST EXCLUDEDFILES]) |
|
2117 | 2123 | NIL]) |
2118 | 2124 |
|
2119 | 2125 | (CDBROWSER-COPY |
2120 | | - [LAMBDA (CDBROWSER TBITEM SOURCE) (* ; "Edited 24-May-2022 15:49 by rmk") |
| 2126 | + [LAMBDA (CDBROWSER TBITEM SOURCE UNIXDEST) (* ; "Edited 25-Oct-2025 23:58 by rmk") |
| 2127 | + (* ; "Edited 24-May-2022 15:49 by rmk") |
2121 | 2128 | (* ; "Edited 25-Apr-2022 09:24 by rmk") |
2122 | 2129 | (* ; "Edited 5-Feb-2022 17:27 by rmk") |
2123 | 2130 | (* ; "Edited 2-Feb-2022 22:18 by rmk") |
2124 | 2131 |
|
2125 | 2132 | (* ;; "Copies the file identified as SOURCE (LEFT or RIGHT) in CDENTRY to the other file of the end. If the destination file is missing, it is assumed to be a new/unversioned file of the same name as the source but with the directory prefix switched. CDVALUE needed to know what directory prefixes are involved.") |
2126 | 2133 |
|
| 2134 | + (* ;; |
| 2135 | + "if UNIXDEST, coerces the true destination file to host UNIX--suppresses Medley version numbers") |
| 2136 | + |
2127 | 2137 | (* ;; "Returns NIL if the copy fails.") |
2128 | 2138 |
|
2129 | 2139 | (CL:UNLESS (TB.ITEM.DELETED? CDBROWSER TBITEM) |
|
2167 | 2177 | (CLEARW T) |
2168 | 2178 | (CL:UNLESS DESTFILE |
2169 | 2179 | (SETQ DESTFILE (CD-SWAPDIRS SOURCEFILE SOURCEDIR DESTDIR))) |
2170 | | - (SETQ RESULT (COPYFILE SOURCEFILE (PACKFILENAME.STRING 'VERSION NIL 'BODY DESTFILE))) |
| 2180 | + [SETQ RESULT (if UNIXDEST |
| 2181 | + then [PSEUDOFILENAME (PACKFILENAME 'HOST 'DSK 'BODY |
| 2182 | + (COPYFILE SOURCEFILE (PACKFILENAME |
| 2183 | + 'HOST |
| 2184 | + 'UNIX |
| 2185 | + 'VERSION NIL |
| 2186 | + 'BODY |
| 2187 | + (TRUEFILENAME |
| 2188 | + DESTFILE] |
| 2189 | + else (COPYFILE SOURCEFILE (PACKFILENAME.STRING 'VERSION NIL |
| 2190 | + 'BODY DESTFILE] |
2171 | 2191 | (PRIN3 (IF RESULT |
2172 | 2192 | THEN (TB.DELETE.ITEM CDBROWSER TBITEM) |
2173 | 2193 | (CONCAT "Copied to " RESULT) |
|
2251 | 2271 |
|
2252 | 2272 | (MOVD? 'NILL 'TEDIT.FILEDATE) |
2253 | 2273 | (DECLARE%: DONTCOPY |
2254 | | - (FILEMAP (NIL (2673 23163 (COMPAREDIRECTORIES 2683 . 8018) (COMPAREDIRECTORIES.INFOS 8020 . 10978) ( |
2255 | | -COMPAREDIRECTORIES.CANDIDATES 10980 . 14365) (CDENTRIES.SELECT 14367 . 19269) ( |
2256 | | -COMPAREDIRECTORIES.INFOS.TYPE 19271 . 20397) (MATCHNAME 20399 . 21079) (CD.INSURECDVALUE 21081 . 22695 |
2257 | | -) (CD.UPDATEWIDTHS 22697 . 23161)) (23164 33786 (CDFILES 23174 . 29188) (CDFILES.MATCH 29190 . 30815) |
2258 | | -(CDFILES.PATS 30817 . 33784)) (33787 51805 (CDPRINT 33797 . 36314) (CDPRINT.HEADER 36316 . 37213) ( |
2259 | | -CDPRINT.LINE 37215 . 40644) (CDPRINT.MAXWIDTHS 40646 . 44761) (CDPRINT.COLHEADERS 44763 . 46048) ( |
2260 | | -CDPRINT.COLUMNS 46050 . 51170) (CDTEDIT 51172 . 51803)) (51806 60927 (CDMAP 51816 . 53248) (CDENTRY |
2261 | | -53250 . 53559) (CDSUBSET 53561 . 55000) (CDMERGE 55002 . 58986) (CDMERGE.COMMON 58988 . 60303) ( |
2262 | | -CD.SORT 60305 . 60925)) (60928 68466 (BINCOMP 60938 . 65227) (EOLTYPE 65229 . 67791) (EOLTYPE.SHOW |
2263 | | -67793 . 68464)) (68994 81521 (FIND-UNCOMPILED-FILES 69004 . 72647) (FIND-UNSOURCED-FILES 72649 . 75033 |
2264 | | -) (FIND-SOURCE-FILES 75035 . 76773) (FIND-COMPILED-FILES 76775 . 78652) (FIND-UNLOADED-FILES 78654 . |
2265 | | -79507) (FIND-LOADED-FILES 79509 . 79937) (FIND-MULTICOMPILED-FILES 79939 . 81519)) (81522 89953 ( |
2266 | | -CREATED-AS 81532 . 86329) (SOURCE-FOR-COMPILED-P 86331 . 89258) (COMPILE-SOURCE-DATE-DIFF 89260 . |
2267 | | -89951)) (89954 100717 (FIX-DIRECTORY-DATES 89964 . 93414) (FIX-EQUIV-DATES 93416 . 94941) ( |
2268 | | -COPY-COMPARED-FILES 94943 . 96764) (COPY-MISSING-FILES 96766 . 98923) (COMPILED-ON-SAME-SOURCE 98925 |
2269 | | - . 100715)) (100911 108749 (CDBROWSER 100921 . 104848) (CDBROWSER.STRINGS 104850 . 108747)) (108911 |
2270 | | -110647 (CD.TABLEITEM 108921 . 109141) (CD.TABLEITEM.PRINTFN 109143 . 109342) (CD.TABLEITEM.COPYFN |
2271 | | -109344 . 110402) (CDTABLEBROWSER.HEADING.REPAINTFN 110404 . 110645)) (110648 133218 ( |
2272 | | -CDTABLEBROWSER.WHENSELECTEDFN 110658 . 111126) (CD.COMMANDSELECTEDFN 111128 . 116229) (CD-MENUFN |
2273 | | -116231 . 122457) (CD-COMPARE-FILES 122459 . 125811) (CDBROWSER-COPY 125813 . 129482) ( |
2274 | | -CDBROWSER-DELETE-FILE 129484 . 132697) (CD-SWAPDIRS 132699 . 133216))))) |
| 2274 | + (FILEMAP (NIL (2655 23634 (COMPAREDIRECTORIES 2665 . 8000) (COMPAREDIRECTORIES.INFOS 8002 . 11231) ( |
| 2275 | +COMPAREDIRECTORIES.CANDIDATES 11233 . 14618) (CDENTRIES.SELECT 14620 . 19522) ( |
| 2276 | +COMPAREDIRECTORIES.INFOS.TYPE 19524 . 20868) (MATCHNAME 20870 . 21550) (CD.INSURECDVALUE 21552 . 23166 |
| 2277 | +) (CD.UPDATEWIDTHS 23168 . 23632)) (23635 34340 (CDFILES 23645 . 29742) (CDFILES.MATCH 29744 . 31369) |
| 2278 | +(CDFILES.PATS 31371 . 34338)) (34341 52359 (CDPRINT 34351 . 36868) (CDPRINT.HEADER 36870 . 37767) ( |
| 2279 | +CDPRINT.LINE 37769 . 41198) (CDPRINT.MAXWIDTHS 41200 . 45315) (CDPRINT.COLHEADERS 45317 . 46602) ( |
| 2280 | +CDPRINT.COLUMNS 46604 . 51724) (CDTEDIT 51726 . 52357)) (52360 61481 (CDMAP 52370 . 53802) (CDENTRY |
| 2281 | +53804 . 54113) (CDSUBSET 54115 . 55554) (CDMERGE 55556 . 59540) (CDMERGE.COMMON 59542 . 60857) ( |
| 2282 | +CD.SORT 60859 . 61479)) (61482 69020 (BINCOMP 61492 . 65781) (EOLTYPE 65783 . 68345) (EOLTYPE.SHOW |
| 2283 | +68347 . 69018)) (69548 82075 (FIND-UNCOMPILED-FILES 69558 . 73201) (FIND-UNSOURCED-FILES 73203 . 75587 |
| 2284 | +) (FIND-SOURCE-FILES 75589 . 77327) (FIND-COMPILED-FILES 77329 . 79206) (FIND-UNLOADED-FILES 79208 . |
| 2285 | +80061) (FIND-LOADED-FILES 80063 . 80491) (FIND-MULTICOMPILED-FILES 80493 . 82073)) (82076 90507 ( |
| 2286 | +CREATED-AS 82086 . 86883) (SOURCE-FOR-COMPILED-P 86885 . 89812) (COMPILE-SOURCE-DATE-DIFF 89814 . |
| 2287 | +90505)) (90508 101271 (FIX-DIRECTORY-DATES 90518 . 93968) (FIX-EQUIV-DATES 93970 . 95495) ( |
| 2288 | +COPY-COMPARED-FILES 95497 . 97318) (COPY-MISSING-FILES 97320 . 99477) (COMPILED-ON-SAME-SOURCE 99479 |
| 2289 | + . 101269)) (101465 109303 (CDBROWSER 101475 . 105402) (CDBROWSER.STRINGS 105404 . 109301)) (109465 |
| 2290 | +111201 (CD.TABLEITEM 109475 . 109695) (CD.TABLEITEM.PRINTFN 109697 . 109896) (CD.TABLEITEM.COPYFN |
| 2291 | +109898 . 110956) (CDTABLEBROWSER.HEADING.REPAINTFN 110958 . 111199)) (111202 134851 ( |
| 2292 | +CDTABLEBROWSER.WHENSELECTEDFN 111212 . 111680) (CD.COMMANDSELECTEDFN 111682 . 116783) (CD-MENUFN |
| 2293 | +116785 . 123011) (CD-COMPARE-FILES 123013 . 126365) (CDBROWSER-COPY 126367 . 131115) ( |
| 2294 | +CDBROWSER-DELETE-FILE 131117 . 134330) (CD-SWAPDIRS 134332 . 134849))))) |
2275 | 2295 | STOP |
0 commit comments