From b1294ea5e9472cefd6b49544e2dce144c13c2268 Mon Sep 17 00:00:00 2001 From: rmkaplan <69548581+rmkaplan@users.noreply.github.com> Date: Sat, 9 Dec 2023 22:50:39 -0800 Subject: [PATCH] Rmk94 fix checkeolc macro (#1435) * EXTERNALFORMAT: \CHECKECOLC macro confusedf ANY vs CR EOL convention * Recompile callers of \CHECKEOLC macro * If ANY and no CR after LF, return EOL instead of CR --- sources/EXTERNALFORMAT | 62 ++++++++++++++++++++---------------- sources/EXTERNALFORMAT.LCOM | Bin 11055 -> 10951 bytes sources/FASLOAD.LCOM | Bin 33778 -> 33847 bytes sources/IOCHAR.LCOM | Bin 23374 -> 24082 bytes sources/LLREAD.LCOM | Bin 22496 -> 22558 bytes 5 files changed, 35 insertions(+), 27 deletions(-) diff --git a/sources/EXTERNALFORMAT b/sources/EXTERNALFORMAT index 6a9fea11..4815f6cc 100644 --- a/sources/EXTERNALFORMAT +++ b/sources/EXTERNALFORMAT @@ -1,12 +1,13 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "10-Oct-2022 18:10:56"  -{DSK}c>Users>Larry>home>MEDLEY>SOURCES>EXTERNALFORMAT.;76 37395 +(FILECREATED " 6-Dec-2023 23:57:52" {WMEDLEY}EXTERNALFORMAT.;82 37884 - :CHANGES-TO (FNS SYSTEM-EXTERNALFORMAT) + :EDIT-BY rmk - :PREVIOUS-DATE "24-Jul-2022 14:56:07" -{DSK}c>Users>Larry>home>MEDLEY>SOURCES>EXTERNALFORMAT.;75) + :CHANGES-TO (MACROS \CHECKEOLC) + (FNS \CHECKEOLC.CRLF) + + :PREVIOUS-DATE "23-Oct-2023 17:07:12" {WMEDLEY}EXTERNALFORMAT.;79) (PRETTYCOMPRINT EXTERNALFORMATCOMS) @@ -519,9 +520,11 @@ FSTRING]) (\CHECKEOLC.CRLF - [LAMBDA (STREAM PEEKBINFLG COUNTP) (* ; "Edited 6-Aug-2021 23:30 by rmk:") + [LAMBDA (STREAM PEEKBINFLG COUNTP EOLC) (* ; "Edited 6-Dec-2023 23:39 by rmk") + (* ; "Edited 17-Oct-2023 11:56 by rmk") + (* ; "Edited 6-Aug-2021 23:30 by rmk:") - (* ;; "This is called only when a CR has been read and EOLC is either any or CRLF. This returns EOL if the next code is an LF") + (* ;; "This is called only when a CR has been read and EOLC is either ANY or CRLF. This returns EOL if the next code is an LF") (* ;; "If COUNTP, that sets *BYTECOUNTER* freely with the number of LF bytes.") @@ -530,8 +533,7 @@ [SETQ CH (COND [PEEKBINFLG - (* ;; - "T from PEEKC. In this case, must leave the fileptr where it was.") + (* ;; "T from PEEKC. In this case, must leave the fileptr where it was.") (* ;; "The CR itself hasn't been read, just peeked. So here we have to read it, then peek at the next character to see if it is an LF, and then back out the CR") @@ -545,17 +547,20 @@ (PROG1 (\PEEKCCODE STREAM T 'NOEOLC) (* ;; - "This has to be a call to \PEEKCODE that doesn't itself to the checkeolc") + "This has to be a call to \PEEKCODE that doesn't itself to the checkeolc") (* ;; - "LF must be the next char after the CR. We back up over the CR that \INCCODE just read.") + "LF must be the next char after the CR. We back up over the CR that \INCCODE just read.") (\BACKCCODE STREAM)))] (* ;; "Got the CRLF, it's an EOL") (CHARCODE EOL)) - (T (CHARCODE CR] + (T (SELECTC EOLC + ((LIST ANY.EOLC 'ANY) + (CHARCODE EOL)) + (CHARCODE CR] ((EQ (CHARCODE LF) (\PEEKCCODE STREAM T 'NOEOLC)) @@ -563,12 +568,15 @@ (IF COUNTP THEN (LET (NUMLFBYTES) - (DECLARE (SPECVARS NUMLFBYTES)) - (\INCCODE STREAM 'NUMLFBYTES 0) - (ADD *BYTECOUNTER* NUMLFBYTES)) + (DECLARE (SPECVARS NUMLFBYTES)) + (\INCCODE STREAM 'NUMLFBYTES 0) + (ADD *BYTECOUNTER* NUMLFBYTES)) ELSE (\INCCODE STREAM)) (CHARCODE EOL)) - (T (CHARCODE CR] + (T (SELECTC EOLC + ((LIST ANY.EOLC 'ANY) + (CHARCODE EOL)) + (CHARCODE CR] CH]) ) (DECLARE%: DOEVAL@COMPILE DONTCOPY @@ -581,10 +589,10 @@ (CHARCODE EOL)) (CHARCODE LF))) (CR (SELECTC (OR EOLC (FFETCH (STREAM EOLCONVENTION) OF STRM)) - ((LIST CR.EOLC 'ANY) + ((LIST CR.EOLC 'CR) (CHARCODE EOL)) ((LIST ANY.EOLC CRLF.EOLC 'CRLF 'ANY) - (\CHECKEOLC.CRLF STRM PEEKBINFLG COUNTP)) + (\CHECKEOLC.CRLF STRM PEEKBINFLG COUNTP EOLC)) (CHARCODE CR))) CH))) ) @@ -712,13 +720,13 @@ (\CREATE.THROUGH.EXTERNALFORMAT) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (6559 13194 (\EXTERNALFORMAT 6569 . 10347) (MAKE-EXTERNALFORMAT 10349 . 12721) ( -\EXTERNALFORMAT.DEFPRINT 12723 . 13192)) (13195 16236 (\INSTALL.EXTERNALFORMAT 13205 . 14654) ( -\REMOVE.EXTERNALFORMAT 14656 . 15487) (FIND-FORMAT 15489 . 16234)) (16237 16649 (SYSTEM-EXTERNALFORMAT - 16247 . 16647)) (16998 31818 (\OUTCHAR 17008 . 18225) (\INCCODE 18227 . 19380) (\BACKCCODE 19382 . -20951) (\BACKCCODE.EOLC 20953 . 23143) (\PEEKCCODE 23145 . 23470) (\PEEKCCODE.EOLC 23472 . 23851) ( -\INCCODE.EOLC 23853 . 25652) (\FORMATBYTESTREAM 25654 . 27789) (\FORMATBYTESTRING 27791 . 29250) ( -\CHECKEOLC.CRLF 29252 . 31816)) (33096 35332 (\NULLDEVICE 33106 . 35008) (\NULL.OPENFILE 35010 . 35330 -)) (35472 37299 (\CREATE.THROUGH.EXTERNALFORMAT 35482 . 36268) (\THROUGHIN 36270 . 36690) ( -\THROUGHBACKCCODE 36692 . 36959) (\THROUGHOUTCHARFN 36961 . 37297))))) + (FILEMAP (NIL (6547 13182 (\EXTERNALFORMAT 6557 . 10335) (MAKE-EXTERNALFORMAT 10337 . 12709) ( +\EXTERNALFORMAT.DEFPRINT 12711 . 13180)) (13183 16224 (\INSTALL.EXTERNALFORMAT 13193 . 14642) ( +\REMOVE.EXTERNALFORMAT 14644 . 15475) (FIND-FORMAT 15477 . 16222)) (16225 16637 (SYSTEM-EXTERNALFORMAT + 16235 . 16635)) (16986 32303 (\OUTCHAR 16996 . 18213) (\INCCODE 18215 . 19368) (\BACKCCODE 19370 . +20939) (\BACKCCODE.EOLC 20941 . 23131) (\PEEKCCODE 23133 . 23458) (\PEEKCCODE.EOLC 23460 . 23839) ( +\INCCODE.EOLC 23841 . 25640) (\FORMATBYTESTREAM 25642 . 27777) (\FORMATBYTESTRING 27779 . 29238) ( +\CHECKEOLC.CRLF 29240 . 32301)) (33585 35821 (\NULLDEVICE 33595 . 35497) (\NULL.OPENFILE 35499 . 35819 +)) (35961 37788 (\CREATE.THROUGH.EXTERNALFORMAT 35971 . 36757) (\THROUGHIN 36759 . 37179) ( +\THROUGHBACKCCODE 37181 . 37448) (\THROUGHOUTCHARFN 37450 . 37786))))) STOP diff --git a/sources/EXTERNALFORMAT.LCOM b/sources/EXTERNALFORMAT.LCOM index 6c05875e311431ea9ccecf6c21eb7665cf575c47..8d78d3c8dea8f7953ea916e0a3e15de9c9f6c250 100644 GIT binary patch delta 989 zcma)(&rj1}7{|K}FcwDI5hFhgd7PST37hTPpQ}XLb?;=*tz_%KnO$&OWKaYF6OA!k zJb5t2dh+0b7(94zLOkk@20i-Y;?29s{sh|%Wg(i_OW!_jx`4q4;=V8^l1 zvzisZB%>&hVGz2eF$ym$j5}?k_Gen{&bnQ%)VJ)r7ZfPZVdvfXvF*D1i*(U2p!<3} z9uJdHUEFdR{xX+E;V2nNXAG?8v1Z|v+jLAtQUvrr=-V;^PLgFF6r9Rfv1AE0R#$*j z^l2@31s7tL36ZR(=gk6?^=YinV$;y05J~5{3voSfq@$qB=ApRgKz1d1<{yzti6~iip7#&$-|~MA26$d@GF14~13y6o)B}a~5vpeUrw2o{ z&*wa(INy}>o)S~Z0m6N#3`Im(By|yY0Lci;@}T8Pz%n9u%peQy8-z}k7r{t7Dm@{mtag8)AoM{OW;B`vPj+_RkK6t~o#HiF0Pt zCL1$$u(g-c-u8L@)#cX9>J5*q^|WaR8!=}xGmLphVvbu)!Q mP8^*@(Rnl?j>{b6idiF_ELpe!A`3awBLac(Q1`!&SoANLssEAy delta 1141 zcmb`E&rj1}7{|L#N!%Q^cn}WCV+{#Jw)B0wwp%f?rF$oXvXQkziNpl93L}M?4NM3z zI~Y%1H1*=aiw8Y;03lwy>}W6^_3odr#G@DA{eTGJroFse9xFTOZNDUa%c98$DSGDs-N^u1DXyuvvx7mgl)OsBhP+TbuBAgIFvkKzV7CdI+8F zEXOq|A&iAa8=0&{%mOhSk_O=n7|Q=K50WY+WzftiBX@_`Q6~?hnVb!c(3vjBK$|O& z`E0&uN7HmR5O6#?z2)`x6xU=$6X~A*c`tnvsyr52^yk8Z2RGOsksy+g|ND|K{G4T& zpnj98rhnkG(VgvJXWDnqFjYyzB*A2Up4-+uH5vNAcH9eYFzyfAQm?UfGw^oIgAuvEK}Tg_9bqxZMATE7Z)ywjE|NfvFeh>^WL7rob{Sp7o;Pt|uq*ppTI$pd`YhRe$ zAL2Py@2G1XxoJ;-FZEr1reA2U*^AIcCz7z3&6#FCO@NMj{4ZmFcu2XTBq3LvwK9_n O4zVGw9?el7a`-FGh_QxZ#3Q);jpX=tRRInh>QvoB+}KjY5H zHv=^5bN+vr=po>llEd|3llFdxQ#^tx*&jBGr{pkySf7&400bYFL+L5|b9guS?9bua z;GV<#VUr_RaTcnyE=VItI}?WXS^FI_Qc`$8Mz#P=YVeG@l*4E6VGCOhyVpezE|BhwaZ@lfu!OJ`%q?K@<^~`ZP;&F4zyKovt&fJL delta 258 zcmdnq!Stz}X@dV`5k@gS4W;D#+=9%U)D(sMJcY>`jP6pJ3Q9&sx_@h6+YT zR)&^VMn*~sToX6Q86r#R>FFscc=}k?q$HN4rqp27XTFJXt3PAw+H|r+Mwl`lEeF9lk$GBT-JxpVj#ICDLG6ZX6|>$ zNa1Dxf~NgByiu2O_&#i5%VGDr=)naN-0z?exnVJbhM|$ELYS*_h<}i7KxnXsu4_by XtDlR4p@9j=nUg04DsFxr7+?edmMT+R diff --git a/sources/IOCHAR.LCOM b/sources/IOCHAR.LCOM index b3de0a9c186e3e141267bb2aceb1d668dfb4c829..15b9981d722ebcd64b35c4cd0372c45dbb56c247 100644 GIT binary patch delta 4008 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 AL;wH) delta 3302 zcma(TU2K!r)jw$=A-J~VgkXZXNkcFsalb$RDnLFvHg@9pxV90bVsqO$TH=@=4f?PO zWz2}~D?)kgtoa?_ge)h5P%@azyvB%;b_|DnW=jKbZ1#P10TLX| z&Yl|;I6)x16!Q8)lK8VqPwd2O3F&9ag|j5~N~tvaJ#zm0=g+=!fwVGsJe~nkcAy zVvO!37=%NN5g{@`5`F%-oFqa(B#agr{ejvW zJ-zMirmuz!hVAIZ+6ViN8asDC_4KO#_B2-e{q-;@-S#E*rbmM;B1?0c=AAt*v!)5(? zr7;Yah*k@LrO9r;nFJSdzlH#P<^-t#9P^p51Rju>&k(NKwdx1x!~qnxZZq$N0QkPX zUNO8D+0f%=0s>S}86isQhj0OoFiGP}Fa}{J2_bsls?|bZZP6g4YY;-d{V-X87~_jC z!30b)K7^>j?YU(K1kjj(3Lyj`4A`sl_S=<)EqVi7@%2S;O%FV<8r+h|k!U6Z86sk6 zHbqgCyvk<-U+fb306CS*$f;~v&O}qWgB@-n2~w?nFl{tOlo$5@rM(oMu2=s)w_H%X zL;MjTG7i?CPo+?yD^sb}PkuL9YSgP;iM7k`OyY+{Wo29ON@8+VtNtOCd|;37qVZBu zA0epxW@ypKE8GEM3UCU4V4w1n1E=@?;wgMp;XhKcsxw?HHFhwL@Y?07Bdqkhk2;T) z8bzDQn23K}8w)22>`FX-rw~@Ix`*XY!zi7Xg5(sYV@%FvXHpTEh!UO;63pGWoQ)Iz z6Q|xFiNqt2;)$qeZfCdXBNyAuk+_`6$>C%)H;Ca*T?cD~$HkrK=W}&VA zjE&ghYaPnJhTk+6l#3&OJ2@S{*LJPc&_0TfpKdU!FaOkbO^q@xtxAx3EtT(6;|tJd zNj}iGF1mGDoK}5H=$2Tl@nZ4;6G5-|>!`2Hdv)6q$!I#4Azlt&Wmt|(MVOsZ(7R!Z zL?fL@MPf}#G3Y0$T%20PNJSrVwwwz=+*7YL=>>ecTc0=Q7a!qh9Uwd+Hl-8q#Wcz$ z;RF){S**XDl9n7Nu~=ktnKZ@l5=l`tvV?NCT%H5S$% z2UADpOP9BzBCRN!*$!mQ00a0RR7QB${voxPcjWEra%N6X@#Rl97VmE?eq1}pw;PQK zs~}}w}jot`8S<=rOj#L70Uc30tp4Qsv=SWsM_(gC$auypDML z%#v47h?Uu~D~w$bQQKJoK|)qR+R6NMY?G`D1|0k(fzZNwg186Gbb#Bpr)#x~`dfXgT; zp1>eZ26>0dS{e=o*loud-^+#tTV^*574Dg=MeSD%w|Li__o!QN$j+(YIo()?p=P68 z&yQ@Ox`G|EG@<1Mq=b=r?HFJmR0B758MnIpaaZNxH_G1Ng|ZWdzWhS}F%8d@8(&eixMIDw2RudXdc`;j+?mUU z`%P`{=RJ$`pxO;wsiXd(T$pDs@|SAGXr@lfJ5_nUWP(GMd|#o|p;e#5dsm*8?{(S= z3tDYgp=8#6ThME%Vh!yaOsl1i<*Cw6tvd0Du&BM)B)OrMb}o-9a>!YJTb1YLnL)23 zauNE_T}6-{;eY`mO^;R`Vl^Faj2g=EH|fUjbjgT}@3> ztM0TjtL8LYmuq7txB?-Z4(B_{G%eom>XH-K4d$%Lo0Iy4fM7L0hPpAEz}`veXe7r_ zm$Cmtmocr@ErVSzY%&Na9s~5UJ{nXSm%6&5EB!K*op>PQpkZHUq%vzmE>)&|$ErKD zI;dj_#S#lx*O6LB4N%koHYj~NNVkI)Y_|db<_Z$PQr}vE{C>Sc9i?r@6NO|1>pr5= z(P*=4`Djy%#G{cZdg_T}k})FrvCKRs5xqf09_x8gdZHMJ_#ij6AQ7c)Di1<1NT#Q- zb0kv7h!A9r2$wjB;$zRGlaE>=AN12vH^9>op>@>daYEQ6k{2H%nzJvC7)smW{;@z% x)N7C57bK}Ptrc0~<0K-dW{4N7H8aoa$2v(7qF;wXkR)TuO9!2`e;gLb{{V=z=CuF- diff --git a/sources/LLREAD.LCOM b/sources/LLREAD.LCOM index d2947fa369c44cd43efcb9af7940d5d008d39de5..3277e7371e8c46e75f4bf31643fdcd9d73a0c938 100644 GIT binary patch delta 600 zcmY*Vzi-n}5ROx+5~f8UMWRcRt0koJqmlh=H)+IR^K92vUSniCR474Jm1jX30~P83 zQv?$uU?v8JE(n%3wOCj@(~bXtKfx0t@LadhKAm*;-F@G8r}uN8`*^^;*{DEs*$9Wr zNJKJ-Vw;7mz8%XGQ2+Ol*j8F?u_?f_aQO7`&L|2ggwJ=P(QvdIy|~tff#(OF(_KR_ zdIEygBLvPGG#U*7=+-Wi@xs|b;VdEHI=^H&#KfMd2c`i+vcTP_a-A60Lhf7qxps51 z7+KlgwDe_TVYbBHQTg(A_HN2u)Gp+(Pa~ee(w{sZ-b(GSv)a+z6*|t6EgH>aNuNH< zd0FC}7ET)R2WvE%&kpr}{Ov4}P6|^h6p+#EI6MWn45u+P`tT4MfI__ZX8YZAs1OsfFxMR8mH?T*n z_!snviX^ZM^B$;@0&J0~uY;^IpN?}EWKk{(#7@<__W?B#t6cwvlDZ~VaIt95px+rAkDJZ#x`uHdy>($fKQ&LDtECFiZQbLx17;0j+nTOF@ zmQioAhg>S-+{x?YwCh=N+&(PY$j}=u!NvdtrBG$Z4jC!jAj4XKS{l43m&(T~ZuA$*{IE&Q(<}St1@E&A`?EHPdjpNxBA6L3v_D5- zcjx5K@}Z2@lRXur85Jg{Dwx!p8Y(#Z`#C#?_;?0~D3}^s0t3d^G1wzGB*@dx9VlR^ z;OOJy?+oRe0Qo2iOn?E6tiagPLLu10Kh(#?FGRuE5NMo}qqDcOv%ib0f{__ev$Kb* zv$w0ikF%b0kdNDB3B_mw6H6lnHy7711rrNX1)xQ)j=l=UMnH4CJp&Ys%uOH+LkklH NKYx(U&HEMO%>eJToEZQB