From c66583e7b0bd7b52fa9593d141a5a2a4e29b2b41 Mon Sep 17 00:00:00 2001 From: rmkaplan <69548581+rmkaplan@users.noreply.github.com> Date: Sat, 16 Mar 2024 19:47:53 -0700 Subject: [PATCH] Rmk110 fix unpackfilename.string (#1573) * ADIR: prevent segmentation fault on Intel macs * Move the coercion of STRUCTURE and GENERATION down into UNPACKFILENAME.STRING It was just in FILENAMEFIELD and FILENAMEFIELD.STRING, I think the coercion should be uniform --- sources/ADIR | 74 ++++++++++++++++++++++++---------------------- sources/ADIR.LCOM | Bin 19572 -> 19564 bytes 2 files changed, 38 insertions(+), 36 deletions(-) diff --git a/sources/ADIR b/sources/ADIR index a754f300..2000ef9a 100644 --- a/sources/ADIR +++ b/sources/ADIR @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "13-Nov-2023 20:28:57" {WMEDLEY}ADIR.;31 67473 +(FILECREATED " 9-Mar-2024 10:24:39" {WMEDLEY}ADIR.;38 67777 :EDIT-BY rmk - :CHANGES-TO (FNS UNPACKFILENAME.STRING) + :CHANGES-TO (FNS UNPACKFILENAME.STRING FILENAMEFIELD FILENAMEFIELD.STRING \UPF.DIRECTORY) - :PREVIOUS-DATE "14-Sep-2023 23:20:17" {WMEDLEY}ADIR.;30) + :PREVIOUS-DATE "13-Nov-2023 20:28:57" {WMEDLEY}ADIR.;31) (PRETTYCOMPRINT ADIRCOMS) @@ -317,7 +317,8 @@ (DEFINEQ (UNPACKFILENAME.STRING - [LAMBDA (FILE ONEFIELDFLG DIRFLG OSTYPE PACKFLG CLFLG) (* ; "Edited 13-Nov-2023 20:28 by rmk") + [LAMBDA (FILE ONEFIELDFLG DIRFLG OSTYPE PACKFLG CLFLG) (* ; "Edited 9-Mar-2024 10:23 by rmk") + (* ; "Edited 13-Nov-2023 20:28 by rmk") (* ; "Edited 28-Apr-2022 11:40 by rmk") (* ; "Edited 24-Apr-2022 14:11 by rmk") @@ -367,6 +368,12 @@ (* ;; "") + (* ;; "These coercions were formerly in FILENAMEFIELD and FILENAMEFIELD.STRING. But they presumably should work everywhere.") + + (SELECTQ ONEFIELDFLG + (STRUCTURE (SETQ ONEFIELDFLG 'DEVICE)) + (GENERATION (SETQ ONEFIELDFLG 'VERSION)) + NIL) (PROG NIL (COND ((NULL FILE) @@ -386,6 +393,9 @@ FILE) (LIST 'NAME FILE))] (T (\ILLEGAL.ARG FILE))) + (CL:WHEN (EQ (NCHARS FILE) + 0) + (RETURN NIL)) (* ;;  "Parse the string to find marker positions. The format (parens mean optional, [ ] group, | disjoins") @@ -583,11 +593,12 @@ (* ;; "") - (* ;; " DIRFLG is RETURN on calls (\UPFDirectoryNameP CL:USER-HOMEDIR-PATHNAME) where FILE is known to have no more than a directory, but the directory might not end with / or > (e.g. %"{DSK}/Users/kaplan%". If we don't do something, %"kaplan%" would be seen as the NAME. ") + (* ;; " DIRFLG is RETURN on calls (\UFSDirectoryNameP CL:USER-HOMEDIR-PATHNAME) where FILE is known to have no more than a directory, but the directory might not end with / or > (e.g. %"{DSK}/Users/kaplan%". If we don't do something, %"kaplan%" would be seen as the NAME. ") (CL:WHEN [AND (EQ DIRFLG 'RETURN) - (NOT (FMEMB (\GETBASECHAR $$FATP $$BASE $$END) - (CHARCODE (> / <] + (OR (ILESSP $$END $$OFFSET) + (NOT (FMEMB (\GETBASECHAR $$FATP $$BASE $$END) + (CHARCODE (> / <] (SETQ DIRSTART STARTPOS) (SETQ DIREND (ADD1 $$END)) (SETQ DIRDIRTY T) @@ -651,7 +662,8 @@ (PUSH $$VAL F FVAL]) (\UPF.DIRECTORY - [LAMBDA (DIRSTART DIREND DIRDIRTY $$BASE $$FATP $$READONLY)(* ; "Edited 28-Apr-2022 09:15 by rmk") + [LAMBDA (DIRSTART DIREND DIRDIRTY $$BASE $$FATP $$READONLY)(* ; "Edited 8-Mar-2024 23:03 by rmk") + (* ; "Edited 28-Apr-2022 09:15 by rmk") (* ; "Edited 27-Apr-2022 08:50 by rmk") (* ; "Edited 23-Apr-2022 17:09 by rmk") @@ -666,9 +678,9 @@ NIL))) (IF (EQ DIREND DIRSTART) THEN - (* ;; "If EQ, the directory is just the bracket, the rest is must be the name.") + (* ;; "If EQ, the directory is is empty.") - BRACKET + (MKSTRING "") ELSE (CL:WHEN BRACKET (* ; "Skip the < or /") (ADD DIRSTART 1)) @@ -753,25 +765,15 @@ (RETURN RESULT]) (FILENAMEFIELD - [LAMBDA (FILE FIELDNAME) (* ; "Edited 6-Mar-90 19:38 by nm") - (UNPACKFILENAME.STRING FILE (SELECTQ FIELDNAME - ((VERSION GENERATION) - 'VERSION) - ((DEVICE STRUCTURE) - 'DEVICE) - FIELDNAME) - 'FIELD NIL T]) + [LAMBDA (FILE FIELDNAME) (* ; "Edited 9-Mar-2024 10:24 by rmk") + (* ; "Edited 6-Mar-90 19:38 by nm") + (UNPACKFILENAME.STRING FILE FIELDNAME 'FIELD NIL T]) (FILENAMEFIELD.STRING - [LAMBDA (FILE FIELDNAME) (* ; "Edited 26-Mar-2022 09:38 by rmk") + [LAMBDA (FILE FIELDNAME) (* ; "Edited 9-Mar-2024 10:24 by rmk") + (* ; "Edited 26-Mar-2022 09:38 by rmk") (* ; "Edited 6-Mar-90 19:38 by nm") - (UNPACKFILENAME.STRING FILE (SELECTQ FIELDNAME - ((VERSION GENERATION) - 'VERSION) - ((DEVICE STRUCTURE) - 'DEVICE) - FIELDNAME) - 'FIELD]) + (UNPACKFILENAME.STRING FILE FIELDNAME 'FIELD]) (PACKFILENAME [LAMBDA N (* bvm%: " 5-Jul-85 15:40") @@ -1252,14 +1254,14 @@ (ADDTOVAR LAMA PACKFILENAME.STRING PACKFILENAME) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (3119 15776 (DELFILE 3129 . 3290) (FULLNAME 3292 . 3659) (INFILE 3661 . 3920) (INFILEP -3922 . 4057) (IOFILE 4059 . 4310) (OPENFILE 4312 . 4615) (OPENSTREAM 4617 . 8957) (OUTFILE 8959 . 9221 -) (OUTFILEP 9223 . 9359) (RENAMEFILE 9361 . 9667) (SIMPLE.FINDFILE 9669 . 10079) (VMEMSIZE 10081 . -10248) (\COPYSYS 10250 . 14495) (\FLUSHVM 14497 . 15569) (\LOGOUT0 15571 . 15774)) (16234 38302 ( -UNPACKFILENAME.STRING 16244 . 35681) (\UPF.DIRECTORY 35683 . 38300)) (39830 42502 (UNPACKFILENAME -39840 . 40026) (LASTCHPOS 40028 . 40722) (FILENAMEFIELD 40724 . 41209) (FILENAMEFIELD.STRING 41211 . -41790) (PACKFILENAME 41792 . 42135) (PACKFILENAME.STRING 42137 . 42500)) (56972 57885 ( -FILEDIRCASEARRAY 56982 . 57883)) (58052 65232 (LOGOUT 58062 . 58979) (MAKESYS 58981 . 60610) (SYSOUT -60612 . 62164) (SAVEVM 62166 . 62966) (HERALD 62968 . 63128) (INTERPRET.REM.CM 63130 . 64855) ( -\USEREVENT 64857 . 65230)) (65414 67141 (USERNAME 65424 . 66380) (SETUSERNAME 66382 . 67139))))) + (FILEMAP (NIL (3169 15826 (DELFILE 3179 . 3340) (FULLNAME 3342 . 3709) (INFILE 3711 . 3970) (INFILEP +3972 . 4107) (IOFILE 4109 . 4360) (OPENFILE 4362 . 4665) (OPENSTREAM 4667 . 9007) (OUTFILE 9009 . 9271 +) (OUTFILEP 9273 . 9409) (RENAMEFILE 9411 . 9717) (SIMPLE.FINDFILE 9719 . 10129) (VMEMSIZE 10131 . +10298) (\COPYSYS 10300 . 14545) (\FLUSHVM 14547 . 15619) (\LOGOUT0 15621 . 15824)) (16284 38972 ( +UNPACKFILENAME.STRING 16294 . 36274) (\UPF.DIRECTORY 36276 . 38970)) (40500 42806 (UNPACKFILENAME +40510 . 40696) (LASTCHPOS 40698 . 41392) (FILENAMEFIELD 41394 . 41688) (FILENAMEFIELD.STRING 41690 . +42094) (PACKFILENAME 42096 . 42439) (PACKFILENAME.STRING 42441 . 42804)) (57276 58189 ( +FILEDIRCASEARRAY 57286 . 58187)) (58356 65536 (LOGOUT 58366 . 59283) (MAKESYS 59285 . 60914) (SYSOUT +60916 . 62468) (SAVEVM 62470 . 63270) (HERALD 63272 . 63432) (INTERPRET.REM.CM 63434 . 65159) ( +\USEREVENT 65161 . 65534)) (65718 67445 (USERNAME 65728 . 66684) (SETUSERNAME 66686 . 67443))))) STOP diff --git a/sources/ADIR.LCOM b/sources/ADIR.LCOM index b183630851a9fc39a1cbd9ab5284f689e252d6b5..46046aa7e220748ec3734547ee3710d7faef7e14 100644 GIT binary patch delta 1450 zcmZux&5zqu5RbP&MXHvxTFS?+&=9)Prd5L9hre=)H+fF1b!^KYZMQ{8yJSU|0$VK= zs^}r=r57$mmSDvVj+~GT=iE8LpMk_-E73E|b2b|%sxQxP{F~p*{AR}g9xMMGE6;AN zg4G=E9yO^-IS{o?d7D|^-M`T?8&C(c^o_Qe(dKHs3VTQUpB#Si;NbK95$r#DaP-wi zJA2~1mHpQL;O@bfP^~+u=Rw)I)oRsYwEGYpUPh|b8`Vw6^+Y!kb|QKRdRbPF*Up=u z8~9{9ik9X5YuT|=tF^;O+;oF9ZuZa_s##qj`Jc)!m->%BtW;jJN1s;kIr)B4oZn7w zKNQE_%B1uAEB9)zOGLig8I4%yB)>E1j9BfsFz!`;-Ohfh8EbK8irT9@Ej~;-#qrrm z{w)8y_E1ss{NpS4SI#?w;QI4?Gyh}tzjI^4DGaymBp3oEjDp`C*ij5rHC6a1Op`4; z7LI#6M2l`MT8M=WS-=pBuqBJ3(`AcB=9aOfCOSu=G;~@$Hxk_>h<1Qz6djjr%+Tkq zg(uUsMT=#q&=<)dh!fX$0^sISd~TG&yJHN`R4GB6M6TZlN-fyfu%pP{X(l_NX!_}J zOGGFR@*we<9>g-vfPv%0A^~EUXC{fm!YE96u}IEl;u3~sxSl8a_SkFLQ6C63=P8(` zbQ1P31Z+a;hjw>6w3C5v4@K)VO`Xi~T%85M8O5|H+!Rsl20joI`yp;8!k=DsO$W&$ z6Jy}G!h5@i?*s|bt&;Y-%Co=Tee<$Kpk&p!Dy<#14Cg3?BttH4T4fh*@+E3+m`JiZ z=GeFrHz#`eN_7KzxH4T#m1-Kub^;;HfJh{1V+Q<<*H8i_4&F`#@f;ZGF-WZwUHGr8st8dmyck?*;E#jg)?G%UeG-q z2aTVNL!;`u9%jugnIkHe|NP#%^3G+f*(6dk7!#6VEe5}QXVm{-s9jHzQ={s@VLRJEO`i3)8& zRX0T%A+bh87HZb)SRfU7!3HVfhwu-O=%Rai?fK};C@X|F_r2qL&pYqDd;dPso}Fkv ze*Pw5t>E6n7S$;Os&}Z>F~sqmD=pH5#{56RJ38$!-l)UPZw_wV`|AGDmj^?*b$H|M z?Stb#FRG)v&~P)~hxw{@yWN1{jR%-{7Ms;**0){HS5B;Cs(O$=)5t2Af(w>E(u|Lq z(1~KT>xEg;>R|@5@K$ngf1;OlP%;t6kKSF?oAsXZbNR~Kg5F1W+eFA)6#na+&rI%@Gk;heWgc6T^T@mt-8v{Z{C@iAu30%o$YX0iimKdGJy?>i2wK z^`+mIaUbxGvr`PS%u{kF0&YPTMAEqy$#f9N9n~%wMkob^&I-tk7+Z_jl*6uy6E6&a z2=rX-r79S2P2GZ$23-{fxSsNRxHKsw+0{9F4U`ZoU#8x!nuj@qayy#7f=$m#b=QL`R+eto<6_5;v9 z`xNJWr7LfjbN}=gIUFw@pH}h7J4^UaW4uBSkJer;tJZ7V*y~x4lh-e#&9!ZVPTq{8 z^J8n7U3O;XprZ=#ohC3^Icqor2P{xAwhp$RImMB#xt5=5oB2QRe*Y6Z?Z0V#Z6eeV R6QLo#(Elm4a6W8ac@92;ib((f