Rmk161 loadup works with utf 8 source files (#2512)
* New starter.sysout contains the UTF-8 external format * Init.sysout is created with the UTF-8 external format * Files with non-ascii characters and some other files converted to UTF-8, for basic testing * Environment arg of WITH-READER-ENVIRONMENT can be a stream * Compiler functions now respect the external format as copied from the source file * Colon is the package delimiter in DEFINE-FILE-INFO expressions * UNICODE file is deprecated in favor of UNICODE-FORMATS and UNICODE-TABLES
This commit is contained in:
@@ -1,13 +1,12 @@
|
||||
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
|
||||
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10 FORMAT UTF-8)
|
||||
|
||||
(FILECREATED " 9-Feb-2026 15:54:22" {WMEDLEY}<sources>EXTERNALFORMAT.;120 47422
|
||||
(FILECREATED "22-Feb-2026 12:29:38" {WMEDLEY}<sources>EXTERNALFORMAT.;124 45411
|
||||
|
||||
:EDIT-BY rmk
|
||||
|
||||
:CHANGES-TO (VARS EXTERNALFORMATCOMS)
|
||||
(FNS \CREATE.THROUGH16.EXTERNALFORMAT \CREATE.THROUGH.EXTERNALFORMAT)
|
||||
|
||||
:PREVIOUS-DATE " 6-Feb-2026 23:21:32" {WMEDLEY}<sources>EXTERNALFORMAT.;116)
|
||||
:PREVIOUS-DATE "20-Feb-2026 09:18:35" {WMEDLEY}<sources>EXTERNALFORMAT.;123)
|
||||
|
||||
|
||||
(PRETTYCOMPRINT EXTERNALFORMATCOMS)
|
||||
@@ -23,9 +22,6 @@
|
||||
(EXPORT (GLOBALVARS *EXTERNALFORMATS* *DEFAULT-EXTERNALFORMAT*))
|
||||
(INITVARS (*EXTERNALFORMATS* NIL)
|
||||
(*DEFAULT-EXTERNALFORMAT* :MCCS))
|
||||
(COMS (FNS SYSTEM-EXTERNALFORMAT MTOSYSSTRING SYSTOMSTRING)
|
||||
(EXPORT (GLOBALVARS *SYSTEM-EXTERNALFORMAT*))
|
||||
(INITVARS (*SYSTEM-EXTERNALFORMAT* :UTF-8)))
|
||||
(DECLARE%: DONTEVAL@LOAD DOCOPY (P (DEFPRINT 'EXTERNALFORMAT (FUNCTION
|
||||
\EXTERNALFORMAT.DEFPRINT
|
||||
]
|
||||
@@ -243,18 +239,18 @@
|
||||
(NIL)
|
||||
(SHOULDNT)))
|
||||
(\INSTALL.EXTERNALFORMAT (CREATE EXTERNALFORMAT
|
||||
NAME _ NAME
|
||||
INCCODEFN _ INCCODEFN
|
||||
PEEKCCODEFN _ PEEKCCODEFN
|
||||
BACKCCODEFN _ BACKCCODEFN
|
||||
OUTCHARFN _ OUTCHARFN
|
||||
FORMATBYTESTREAMFN _ FORMATBYTESTREAMFN
|
||||
EOLVALID _ EOL
|
||||
EOL _ (OR EOL LF.EOLC)
|
||||
UNSTABLE _ UNSTABLE
|
||||
MCCSTOFORMATBYTESFN _ MCCSTOFORMATBYTESFN
|
||||
FORMATBYTESTOMCCSFN _ FORMATBYTESTOMCCSFN
|
||||
FORMATCHARSETFN _ (OR FORMATCHARSETFN (FUNCTION NILL])
|
||||
NAME ← NAME
|
||||
INCCODEFN ← INCCODEFN
|
||||
PEEKCCODEFN ← PEEKCCODEFN
|
||||
BACKCCODEFN ← BACKCCODEFN
|
||||
OUTCHARFN ← OUTCHARFN
|
||||
FORMATBYTESTREAMFN ← FORMATBYTESTREAMFN
|
||||
EOLVALID ← EOL
|
||||
EOL ← (OR EOL LF.EOLC)
|
||||
UNSTABLE ← UNSTABLE
|
||||
MCCSTOFORMATBYTESFN ← MCCSTOFORMATBYTESFN
|
||||
FORMATBYTESTOMCCSFN ← FORMATBYTESTOMCCSFN
|
||||
FORMATCHARSETFN ← (OR FORMATCHARSETFN (FUNCTION NILL])
|
||||
|
||||
(\EXTERNALFORMAT.DEFPRINT
|
||||
[LAMBDA (EXTERNALFORMAT STREAM) (* ; "Edited 2-Jul-2022 11:40 by rmk")
|
||||
@@ -268,7 +264,7 @@
|
||||
(DEFINEQ
|
||||
|
||||
(\INSTALL.EXTERNALFORMAT
|
||||
[LAMBDA (EXTFORMAT/NAME EXTERNALFORMAT) (* ; "Edited 5-Aug-2021 14:22 by rmk:")
|
||||
[LAMBDA (EXTFORMAT/NAME EXTERNALFORMAT) (* ; "Edited 5-Aug-2021 14:22 by rmk:")
|
||||
|
||||
(* ;;; "Register an instance of the datatype EXTERNALFORMAT.")
|
||||
|
||||
@@ -277,25 +273,23 @@
|
||||
(LET (NAME)
|
||||
(IF EXTERNALFORMAT
|
||||
THEN
|
||||
(* ;; "Backwards compatibility")
|
||||
|
||||
(* ;; "Backwards compatibility")
|
||||
|
||||
(SETQ NAME (MKATOM EXTFORMAT/NAME))
|
||||
(IF (EQ NAME (FETCH (EXTERNALFORMAT NAME) OF EXTERNALFORMAT))
|
||||
ELSEIF (FETCH (EXTERNALFORMAT NAME) OF EXTERNALFORMAT)
|
||||
THEN (ERROR "Mismatch of specified name and name of the external format")
|
||||
ELSE (REPLACE (EXTERNALFORMAT NAME) OF EXTERNALFORMAT WITH
|
||||
NAME))
|
||||
(SETQ NAME (MKATOM EXTFORMAT/NAME))
|
||||
(IF (EQ NAME (FETCH (EXTERNALFORMAT NAME) OF EXTERNALFORMAT))
|
||||
ELSEIF (FETCH (EXTERNALFORMAT NAME) OF EXTERNALFORMAT)
|
||||
THEN (ERROR "Mismatch of specified name and name of the external format")
|
||||
ELSE (REPLACE (EXTERNALFORMAT NAME) OF EXTERNALFORMAT WITH NAME))
|
||||
ELSE (SETQ EXTERNALFORMAT EXTFORMAT/NAME)
|
||||
(SETQ NAME (FETCH (EXTERNALFORMAT NAME) OF EXTERNALFORMAT)))
|
||||
(SETQ NAME (FETCH (EXTERNALFORMAT NAME) OF EXTERNALFORMAT)))
|
||||
(IF (type? EXTERNALFORMAT EXTERNALFORMAT)
|
||||
THEN (\REMOVE.EXTERNALFORMAT NAME)
|
||||
(push *EXTERNALFORMATS* EXTERNALFORMAT)
|
||||
(push *EXTERNALFORMATS* EXTERNALFORMAT)
|
||||
ELSE (ERROR "INVALID EXTERNALFORMAT " EXTERNALFORMAT))
|
||||
EXTERNALFORMAT])
|
||||
|
||||
(\REMOVE.EXTERNALFORMAT
|
||||
[LAMBDA (NAME/EXTFORMAT) (* ; "Edited 5-May-2021 15:42 by rmk:")
|
||||
[LAMBDA (NAME/EXTFORMAT) (* ; "Edited 5-May-2021 15:42 by rmk:")
|
||||
|
||||
(* ;;; "Deregisters external format EXTERNALFORMAT .")
|
||||
|
||||
@@ -303,9 +297,8 @@
|
||||
THEN (FETCH (EXTERNALFORMAT NAME) OF NAME/EXTFORMAT)
|
||||
ELSE (MKATOM NAME/EXTFORMAT)))
|
||||
(SETQ *EXTERNALFORMATS* (DREMOVE (FIND EF IN *EXTERNALFORMATS*
|
||||
SUCHTHAT (EQ NAME/EXTFORMAT (FETCH (EXTERNALFORMAT
|
||||
NAME)
|
||||
OF EF)))
|
||||
SUCHTHAT (EQ NAME/EXTFORMAT (FETCH (EXTERNALFORMAT NAME)
|
||||
OF EF)))
|
||||
*EXTERNALFORMATS*])
|
||||
|
||||
(FIND-FORMAT
|
||||
@@ -330,41 +323,6 @@
|
||||
(RPAQ? *EXTERNALFORMATS* NIL)
|
||||
|
||||
(RPAQ? *DEFAULT-EXTERNALFORMAT* :MCCS)
|
||||
(DEFINEQ
|
||||
|
||||
(SYSTEM-EXTERNALFORMAT
|
||||
[LAMBDA NIL (* ; "Edited 6-Feb-2026 11:29 by rmk")
|
||||
(* ; "Edited 31-Jan-2026 18:51 by rmk")
|
||||
(* ; "Edited 10-Oct-2022 11:55 by lmm")
|
||||
(* ; "Edited 7-Jul-2022 10:41 by rmk")
|
||||
|
||||
(* ;; "Returns the name, sets the global. For now, UTF-8 or through, could be something else.")
|
||||
|
||||
(fetch (EXTERNALFORMAT NAME) of (SETQ *SYSTEM-EXTERNALFORMAT*
|
||||
(FIND-FORMAT (FOR X IN '("LC¬CTYPE" "LC¬ALL" "LANG")
|
||||
WHEN (STRPOS ".UTF-8" (UNIX-GETENV X))
|
||||
DO (RETURN :UTF-8) FINALLY (RETURN :THROUGH])
|
||||
|
||||
(MTOSYSSTRING
|
||||
[LAMBDA (MSTRING) (* ; "Edited 6-Feb-2026 00:20 by rmk")
|
||||
(MCCSTOFORMATBYTES *SYSTEM-EXTERNALFORMAT* (MKSTRING MSTRING])
|
||||
|
||||
(SYSTOMSTRING
|
||||
[LAMBDA (SYSTRING) (* ; "Edited 5-Feb-2026 23:36 by rmk")
|
||||
|
||||
(* ;; "SYSSTRING is presumably shared with Unix, guarantee a copy on the way out")
|
||||
|
||||
(CONCAT (FORMATBYTESTOMCCS *SYSTEM-EXTERNALFORMAT* SYSTRING])
|
||||
)
|
||||
(* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: DOEVAL@COMPILE DONTCOPY
|
||||
|
||||
(GLOBALVARS *SYSTEM-EXTERNALFORMAT*)
|
||||
)
|
||||
|
||||
(* "END EXPORTED DEFINITIONS")
|
||||
|
||||
|
||||
(RPAQ? *SYSTEM-EXTERNALFORMAT* :UTF-8)
|
||||
(DECLARE%: DONTEVAL@LOAD DOCOPY
|
||||
|
||||
(DEFPRINT 'EXTERNALFORMAT (FUNCTION \EXTERNALFORMAT.DEFPRINT))
|
||||
@@ -730,41 +688,41 @@
|
||||
(* ;; "Defines the NULL device, an infinite source or sink")
|
||||
|
||||
(\DEFINEDEVICE 'NULL (create FDEV
|
||||
DEVICENAME _ 'NULL
|
||||
RANDOMACCESSP _ T
|
||||
NODIRECTORIES _ T
|
||||
CLOSEFILE _ (FUNCTION NILL)
|
||||
DELETEFILE _ (FUNCTION NILL)
|
||||
OPENFILE _ (FUNCTION \NULL.OPENFILE)
|
||||
REOPENFILE _ (FUNCTION \NULL.OPENFILE)
|
||||
BIN _ (FUNCTION \EOF.ACTION)
|
||||
BOUT _ (FUNCTION NILL)
|
||||
PEEKBIN _ [FUNCTION (LAMBDA (STREAM NOERRORFLG)
|
||||
DEVICENAME ← 'NULL
|
||||
RANDOMACCESSP ← T
|
||||
NODIRECTORIES ← T
|
||||
CLOSEFILE ← (FUNCTION NILL)
|
||||
DELETEFILE ← (FUNCTION NILL)
|
||||
OPENFILE ← (FUNCTION \NULL.OPENFILE)
|
||||
REOPENFILE ← (FUNCTION \NULL.OPENFILE)
|
||||
BIN ← (FUNCTION \EOF.ACTION)
|
||||
BOUT ← (FUNCTION NILL)
|
||||
PEEKBIN ← [FUNCTION (LAMBDA (STREAM NOERRORFLG)
|
||||
(AND (NULL NOERRORFLG)
|
||||
(BIN STREAM]
|
||||
READP _ (FUNCTION NILL)
|
||||
BACKFILEPTR _ (FUNCTION NILL)
|
||||
EOFP _ (FUNCTION TRUE)
|
||||
RENAMEFILE _ (FUNCTION NILL)
|
||||
GETFILENAME _ (FUNCTION NILL)
|
||||
EVENTFN _ (FUNCTION NILL)
|
||||
BLOCKIN _ (FUNCTION \EOF.ACTION)
|
||||
BLOCKOUT _ (FUNCTION NILL)
|
||||
GENERATEFILES _ (FUNCTION \NULLFILEGENERATOR)
|
||||
GETFILEPTR _ (FUNCTION ZERO)
|
||||
GETEOFPTR _ (FUNCTION ZERO)
|
||||
SETFILEPTR _ (FUNCTION NILL)
|
||||
GETFILEINFO _ (FUNCTION NILL)
|
||||
SETFILEINFO _ (FUNCTION NILL)
|
||||
SETEOFPTR _ (FUNCTION NILL])
|
||||
READP ← (FUNCTION NILL)
|
||||
BACKFILEPTR ← (FUNCTION NILL)
|
||||
EOFP ← (FUNCTION TRUE)
|
||||
RENAMEFILE ← (FUNCTION NILL)
|
||||
GETFILENAME ← (FUNCTION NILL)
|
||||
EVENTFN ← (FUNCTION NILL)
|
||||
BLOCKIN ← (FUNCTION \EOF.ACTION)
|
||||
BLOCKOUT ← (FUNCTION NILL)
|
||||
GENERATEFILES ← (FUNCTION \NULLFILEGENERATOR)
|
||||
GETFILEPTR ← (FUNCTION ZERO)
|
||||
GETEOFPTR ← (FUNCTION ZERO)
|
||||
SETFILEPTR ← (FUNCTION NILL)
|
||||
GETFILEINFO ← (FUNCTION NILL)
|
||||
SETFILEINFO ← (FUNCTION NILL)
|
||||
SETEOFPTR ← (FUNCTION NILL])
|
||||
|
||||
(\NULL.OPENFILE
|
||||
[LAMBDA (NAME ACCESS RECOG PARAMETERS DEVICE OLDSTREAM) (* bvm%: "30-Jan-85 22:05")
|
||||
(OR OLDSTREAM (create STREAM
|
||||
USERCLOSEABLE _ T
|
||||
ACCESS _ ACCESS
|
||||
FULLFILENAME _ NIL
|
||||
DEVICE _ DEVICE])
|
||||
USERCLOSEABLE ← T
|
||||
ACCESS ← ACCESS
|
||||
FULLFILENAME ← NIL
|
||||
DEVICE ← DEVICE])
|
||||
)
|
||||
(DECLARE%: DONTEVAL@LOAD DOCOPY
|
||||
|
||||
@@ -883,15 +841,14 @@
|
||||
(\CREATE.THROUGH16.EXTERNALFORMAT)
|
||||
)
|
||||
(DECLARE%: DONTCOPY
|
||||
(FILEMAP (NIL (7446 15343 (\EXTERNALFORMAT 7456 . 12055) (MAKE-EXTERNALFORMAT 12057 . 14870) (
|
||||
\EXTERNALFORMAT.DEFPRINT 14872 . 15341)) (15344 18385 (\INSTALL.EXTERNALFORMAT 15354 . 16803) (
|
||||
\REMOVE.EXTERNALFORMAT 16805 . 17636) (FIND-FORMAT 17638 . 18383)) (18628 20078 (SYSTEM-EXTERNALFORMAT
|
||||
18638 . 19586) (MTOSYSSTRING 19588 . 19785) (SYSTOMSTRING 19787 . 20076)) (20442 34717 (\OUTCHAR
|
||||
20452 . 21669) (\INCCODE 21671 . 22824) (\BACKCCODE 22826 . 24505) (\BACKCCODE.EOLC 24507 . 26697) (
|
||||
\PEEKCCODE 26699 . 27024) (\PEEKCCODE.EOLC 27026 . 27405) (\INCCODE.EOLC 27407 . 29206) (
|
||||
\FORMATBYTESTREAM 29208 . 31652) (\CHECKEOLC.CRLF 31654 . 34715)) (34718 38634 (MCCSTOFORMATBYTES
|
||||
34728 . 37127) (FORMATBYTESTOMCCS 37129 . 38632)) (40045 42281 (\NULLDEVICE 40055 . 41957) (
|
||||
\NULL.OPENFILE 41959 . 42279)) (42371 47286 (\CREATE.THROUGH.EXTERNALFORMAT 42381 . 44050) (
|
||||
\CREATE.THROUGH16.EXTERNALFORMAT 44052 . 46243) (\THROUGHIN 46245 . 46669) (\THROUGHBACKCCODE 46671 .
|
||||
46942) (\THROUGHOUTCHARFN 46944 . 47284)))))
|
||||
(FILEMAP (NIL (7168 15089 (\EXTERNALFORMAT 7178 . 11777) (MAKE-EXTERNALFORMAT 11779 . 14616) (
|
||||
\EXTERNALFORMAT.DEFPRINT 14618 . 15087)) (15090 17955 (\INSTALL.EXTERNALFORMAT 15100 . 16457) (
|
||||
\REMOVE.EXTERNALFORMAT 16459 . 17206) (FIND-FORMAT 17208 . 17953)) (18373 32648 (\OUTCHAR 18383 .
|
||||
19600) (\INCCODE 19602 . 20755) (\BACKCCODE 20757 . 22436) (\BACKCCODE.EOLC 22438 . 24628) (\PEEKCCODE
|
||||
24630 . 24955) (\PEEKCCODE.EOLC 24957 . 25336) (\INCCODE.EOLC 25338 . 27137) (\FORMATBYTESTREAM 27139
|
||||
. 29583) (\CHECKEOLC.CRLF 29585 . 32646)) (32649 36565 (MCCSTOFORMATBYTES 32659 . 35058) (
|
||||
FORMATBYTESTOMCCS 35060 . 36563)) (37976 40270 (\NULLDEVICE 37986 . 39938) (\NULL.OPENFILE 39940 .
|
||||
40268)) (40360 45275 (\CREATE.THROUGH.EXTERNALFORMAT 40370 . 42039) (\CREATE.THROUGH16.EXTERNALFORMAT
|
||||
42041 . 44232) (\THROUGHIN 44234 . 44658) (\THROUGHBACKCCODE 44660 . 44931) (\THROUGHOUTCHARFN 44933
|
||||
. 45273)))))
|
||||
STOP
|
||||
|
||||
Reference in New Issue
Block a user