From eb098615edbc32961558ec3ba42fdf0d712cafa4 Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Tue, 17 Dec 2024 21:06:35 -0800 Subject: [PATCH] EXTERNALFORMAT macro and function implement EOL detection --- sources/EXTERNALFORMAT | 53 ++++++++++++++++++++++++------------ sources/EXTERNALFORMAT.LCOM | Bin 11106 -> 11173 bytes 2 files changed, 36 insertions(+), 17 deletions(-) diff --git a/sources/EXTERNALFORMAT b/sources/EXTERNALFORMAT index 24c24aa0..e5066f65 100644 --- a/sources/EXTERNALFORMAT +++ b/sources/EXTERNALFORMAT @@ -1,13 +1,13 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "17-Dec-2024 15:29:21" {WMEDLEY}EXTERNALFORMAT.;90 39713 +(FILECREATED "17-Dec-2024 17:44:48" {WMEDLEY}EXTERNALFORMAT.;92 41401 :EDIT-BY rmk - :CHANGES-TO (FNS \CHECKEOLC.CRLF) - (MACROS \CHECKEOLC) + :CHANGES-TO (MACROS \CHECKEOLC) + (FNS \INCCODE.EOLC) - :PREVIOUS-DATE "19-Mar-2024 18:24:39" {WMEDLEY}EXTERNALFORMAT.;88) + :PREVIOUS-DATE "17-Dec-2024 17:00:58" {WMEDLEY}EXTERNALFORMAT.;91) (PRETTYCOMPRINT EXTERNALFORMATCOMS) @@ -538,7 +538,7 @@ FSTRING]) (\CHECKEOLC.CRLF - [LAMBDA (STREAM PEEKBINFLG COUNTP EOLC) (* ; "Edited 17-Dec-2024 15:28 by rmk") + [LAMBDA (STREAM PEEKBINFLG COUNTP EOLC) (* ; "Edited 17-Dec-2024 17:00 by rmk") (* ; "Edited 6-Dec-2023 23:39 by rmk") (* ; "Edited 17-Oct-2023 11:56 by rmk") (* ; "Edited 6-Aug-2021 23:30 by rmk:") @@ -566,7 +566,7 @@ (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 do the checkeolc") (* ;;  "LF must be the next char after the CR. We back up over the CR that \INCCODE just read.") @@ -575,9 +575,13 @@ (* ;; "Got the CRLF, it's an EOL") + (CL:WHEN (EQ ANY.EOLC (FFETCH (STREAM DETECTEDEOLCONVENTION) + OF STREAM)) + (FREPLACE (STREAM DETECTEDEOLCONVENTION) OF STREAM WITH CRLF.EOLC + )) (CHARCODE EOL)) (T (SELECTC EOLC - ((LIST ANY.EOLC) + ((LIST ANY.EOLC 'ANY) (CL:WHEN (EQ ANY.EOLC (FFETCH (STREAM DETECTEDEOLCONVENTION ) OF STREAM)) @@ -601,6 +605,9 @@ (CHARCODE EOL)) (T (SELECTC EOLC ((LIST ANY.EOLC 'ANY) + (CL:WHEN (EQ ANY.EOLC (FFETCH (STREAM DETECTEDEOLCONVENTION) + OF STREAM)) + (FREPLACE (STREAM DETECTEDEOLCONVENTION) OF STREAM WITH CR.EOLC)) (CHARCODE EOL)) (CHARCODE CR] CH]) @@ -611,11 +618,23 @@ (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) + ((LIST ANY.EOLC 'ANY) + (CL:WHEN (EQ ANY.EOLC (FFETCH (STREAM + DETECTEDEOLCONVENTION + ) OF STREAM)) + (FREPLACE (STREAM DETECTEDEOLCONVENTION) + OF STREAM WITH LF.EOLC)) + (CHARCODE EOL)) + ((LIST LF.EOLC 'LF) (CHARCODE EOL)) (CHARCODE LF))) (CR (SELECTC (OR EOLC (FFETCH (STREAM EOLCONVENTION) OF STRM)) ((LIST CR.EOLC 'CR) + (CL:WHEN (EQ ANY.EOLC (FFETCH (STREAM + DETECTEDEOLCONVENTION + ) OF STREAM)) + (FREPLACE (STREAM DETECTEDEOLCONVENTION) + OF STREAM WITH CR.EOLC)) (CHARCODE EOL)) ((LIST ANY.EOLC CRLF.EOLC 'CRLF 'ANY) (\CHECKEOLC.CRLF STRM PEEKBINFLG COUNTP EOLC)) @@ -746,13 +765,13 @@ (\CREATE.THROUGH.EXTERNALFORMAT) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (6744 13577 (\EXTERNALFORMAT 6754 . 10532) (MAKE-EXTERNALFORMAT 10534 . 13104) ( -\EXTERNALFORMAT.DEFPRINT 13106 . 13575)) (13578 16619 (\INSTALL.EXTERNALFORMAT 13588 . 15037) ( -\REMOVE.EXTERNALFORMAT 15039 . 15870) (FIND-FORMAT 15872 . 16617)) (16620 17032 (SYSTEM-EXTERNALFORMAT - 16630 . 17030)) (17381 34132 (\OUTCHAR 17391 . 18608) (\INCCODE 18610 . 19763) (\BACKCCODE 19765 . -21444) (\BACKCCODE.EOLC 21446 . 23636) (\PEEKCCODE 23638 . 23963) (\PEEKCCODE.EOLC 23965 . 24344) ( -\INCCODE.EOLC 24346 . 26145) (\FORMATBYTESTREAM 26147 . 28591) (\FORMATBYTESTRING 28593 . 30293) ( -\CHECKEOLC.CRLF 30295 . 34130)) (35414 37650 (\NULLDEVICE 35424 . 37326) (\NULL.OPENFILE 37328 . 37648 -)) (37790 39617 (\CREATE.THROUGH.EXTERNALFORMAT 37800 . 38586) (\THROUGHIN 38588 . 39008) ( -\THROUGHBACKCCODE 39010 . 39277) (\THROUGHOUTCHARFN 39279 . 39615))))) + (FILEMAP (NIL (6742 13575 (\EXTERNALFORMAT 6752 . 10530) (MAKE-EXTERNALFORMAT 10532 . 13102) ( +\EXTERNALFORMAT.DEFPRINT 13104 . 13573)) (13576 16617 (\INSTALL.EXTERNALFORMAT 13586 . 15035) ( +\REMOVE.EXTERNALFORMAT 15037 . 15868) (FIND-FORMAT 15870 . 16615)) (16618 17030 (SYSTEM-EXTERNALFORMAT + 16628 . 17028)) (17379 34752 (\OUTCHAR 17389 . 18606) (\INCCODE 18608 . 19761) (\BACKCCODE 19763 . +21442) (\BACKCCODE.EOLC 21444 . 23634) (\PEEKCCODE 23636 . 23961) (\PEEKCCODE.EOLC 23963 . 24342) ( +\INCCODE.EOLC 24344 . 26143) (\FORMATBYTESTREAM 26145 . 28589) (\FORMATBYTESTRING 28591 . 30291) ( +\CHECKEOLC.CRLF 30293 . 34750)) (37102 39338 (\NULLDEVICE 37112 . 39014) (\NULL.OPENFILE 39016 . 39336 +)) (39478 41305 (\CREATE.THROUGH.EXTERNALFORMAT 39488 . 40274) (\THROUGHIN 40276 . 40696) ( +\THROUGHBACKCCODE 40698 . 40965) (\THROUGHOUTCHARFN 40967 . 41303))))) STOP diff --git a/sources/EXTERNALFORMAT.LCOM b/sources/EXTERNALFORMAT.LCOM index ab27f4303d52f0ee81bd5712e2768228b117370f..ee4a7d519ab1512631e871eaab717cc6b2406c8f 100644 GIT binary patch delta 1247 zcmbW0&2JM&7{+(kG>IH1*dag@K|7&}nn;bcGyCa1AaB-VFj?=qyBjyDtR9+0P$U3w6`B8#oEQ^@k z;LohoP0MqA)Uqy8YlXVDwTKp~4m4_xWw{kv?DdR>N1HWw)nBTZ0Y&Gqwp6*iu|z~7 zBdi&sXec^+%g+lX+!+&SR=_3Z=2mh9qXxpr6fqIm<6Ml00u4EB$WTdXB|$~fim=-g zZ%+|@xTFo2RCd1LcMc{;d4ZJJU&jMM5?L{Sj(^BL&(Cfc@$$2g@~d1Sj56I{!Yds7 zy6qEj`PF$II`_*v2T)Ap!<}wN=`VLai?aD>qT6-{d$-@ab-TBf{hB}Hy^G6Ro6EW6 z_cg%d8DEeB6mmfUkek+JV`47FoXUbcVurfLIWf*0&e?8If4~`h>FLc|7jz|F9n_2_NgTem;d9Zi*C;##15aeBe zycwE3$d>@Jq{>GjBO=Pkrvbtx4Yg>~w3`@VT|7DmlqDtQjU-v>nIVZvVg}K)#0@g= zO4WOwsk4b!iD?jDnA6iSMM+jWjT5(cUh2G_{yQ`NLx$&$74n?f*4UpP&ds-je%jiX z%aH)g;{8^6D~;lK5}3p;%+AhyQcW}2o`b3V84FlGv3i01aTwP=4hWbC`ueXCm85@b zO=REA=%?TbLD1li&T8GRF0TjFN2=2Kedc*){-wZiBlKD3=2PxPH2!h8b1){x;pX&M z99E{YF+3HxB>U;?qumllEud*y7WIAL2%mHC@D}bmzVkdKg{WhDH*1O$OU#~S_Ik9kW4n%^Ub>JL(jf~?M>`CcG+$_ z^;IY~ExYagyRZsotBt!2uj7|$R)Ap{8Kvg+d!t*BZc2(N8|08(;dDLzoy9ySE2NO! z%*raX0D&bUxk5h4CZLEkp$roSjpSjZ(?}Xd8tKeEUr^*pNs%Tcg_Lta{O$ZS%P9)^ z;dH=h3i<2wGW(ER6!P|4$=dN$^=UR2-WtSYDKyY4^n}VNtEfOZ z^2JrY*KkQ;ele@17>2WI6>>Qj>|K71VNO|3(g)w*lC?*N%%hyhRe#fSY^K_exXt-9 z?}rgTI4URBf6VoD63rcWNyHy)q_fo~`rUsfA1X>Ilavfc$&gED)+w@y^#356Xip&9 zqsVqbYlLirB9jdLRbJkW3#1#6iL>;kInpdtBaVtbPdlI3BY#m_QJWwHblJA; z)i4;;GLx8^^ms{s-55T~K;U+oPJQiKfPGMnIFtW5bKw_`VW#kL=D{KJQ#4x$Z#|n4 zlW^zUOcK`4@#Og%kN0#1dK8~!+t~LhO!|x83vk=DoVwR;S^;$%QVlR`xNdcvl(Pu+ z8t#H2L%rc(r{Q7;yX(P~)T%u{Xk)8ccD)31gAZzhb;fw6w?YmBu