From cde5c9018d0eabc36e674533167d826ddb97a40f Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Thu, 16 Dec 2021 20:11:56 -0800 Subject: [PATCH] FILEIO: allow EOLCONVENTION ANY for input files Any occurrence of CR, LF, CRLF maps to EOL, to facilitate processing of text files of unknown provenance --- sources/FILEIO | 917 ++++++++++++++++++++++---------------------- sources/FILEIO.LCOM | Bin 45394 -> 45528 bytes 2 files changed, 455 insertions(+), 462 deletions(-) diff --git a/sources/FILEIO b/sources/FILEIO index 0ff8a793..f2452134 100644 --- a/sources/FILEIO +++ b/sources/FILEIO @@ -1,12 +1,11 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "25-Sep-2021 21:02:29"  -{DSK}kaplan>Local>medley3.5>git-medley>sources>FILEIO.;99 162362 - changes to%: (VARS FILEIOCOMS) - (RECORDS FDEV) +(FILECREATED "14-Dec-2021 16:10:18" {DSK}kaplan>Local>medley3.5>my-medley>sources>FILEIO.;102 160392 - previous date%: "25-Sep-2021 17:25:04" -{DSK}kaplan>Local>medley3.5>git-medley>sources>FILEIO.;98) + :CHANGES-TO (FNS \DO.PARAMS.AT.OPEN) + + :PREVIOUS-DATE "13-Dec-2021 15:20:15" +{DSK}kaplan>Local>medley3.5>my-medley>sources>FILEIO.;101) (* ; " @@ -44,7 +43,7 @@ Copyright (c) 1981-1993, 1999, 2020-2021 by Venue & Xerox Corporation. (DECLARE%: DONTEVAL@LOAD DOCOPY (P (DEFPRINT 'STREAM (FUNCTION \STREAM.DEFPRINT)) (DEFPRINT 'FDEV (FUNCTION \FDEV.DEFPRINT] (COMS (* ; - "Needed because of STREAM initialization") + "Needed because of STREAM initialization") (INITVARS (FILELINELENGTH 102) (\STREAM.DEFAULT.MAXBUFFERS 3))) (FNS \GETACCESS \SETACCESS) @@ -211,58 +210,58 @@ Copyright (c) 1981-1993, 1999, 2020-2021 by Venue & Xerox Corporation. (ADDTOVAR SYSTEMRECLST (DATATYPE STREAM ((COFFSET WORD) - (CBUFSIZE WORD) - (PEEKEDCHARP FLAG) - (ACCESSBITS BITS 3) - (CBUFPTR POINTER) - (BYTESIZE BYTE) - (CHARSET BYTE) - (PEEKEDCHAR WORD) - (CHARPOSITION WORD) - (CBUFMAXSIZE WORD) - (NONDEFAULTDATEFLG FLAG) - (REVALIDATEFLG FLAG) - (MULTIBUFFERHINT FLAG) - (USERCLOSEABLE FLAG) - (FULLFILENAME POINTER) - (BINABLE FLAG) - (BOUTABLE FLAG) - (EXTENDABLE FLAG) - (CBUFDIRTY FLAG) - (DEVICE POINTER) - (USERVISIBLE FLAG) - (EOLCONVENTION BITS 2) - (NIL FLAG) - (VALIDATION POINTER) - (CPAGE POINTER) - (EPAGE POINTER) - (EOFFSET WORD) - (LINELENGTH WORD) - (F1 POINTER) - (F2 POINTER) - (F3 POINTER) - (F4 POINTER) - (F5 POINTER) - (FW6 WORD) - (FW7 WORD) - (FW8 WORD) - (FW9 WORD) - (F10 POINTER) - (STRMBINFN POINTER) - (STRMBOUTFN POINTER) - (OUTCHARFN POINTER) - (ENDOFSTREAMOP POINTER) - (OTHERPROPS POINTER) - (IMAGEOPS POINTER) - (IMAGEDATA POINTER) - (BUFFS POINTER) - (MAXBUFFERS WORD) - (LASTCCODE WORD) - (EXTRASTREAMOP POINTER) - (INCCODEFN POINTER) - (PEEKCCODEFN POINTER) - (BACKCCODEFN POINTER) - (EXTERNALFORMAT POINTER))) + (CBUFSIZE WORD) + (PEEKEDCHARP FLAG) + (ACCESSBITS BITS 3) + (CBUFPTR POINTER) + (BYTESIZE BYTE) + (CHARSET BYTE) + (PEEKEDCHAR WORD) + (CHARPOSITION WORD) + (CBUFMAXSIZE WORD) + (NONDEFAULTDATEFLG FLAG) + (REVALIDATEFLG FLAG) + (MULTIBUFFERHINT FLAG) + (USERCLOSEABLE FLAG) + (FULLFILENAME POINTER) + (BINABLE FLAG) + (BOUTABLE FLAG) + (EXTENDABLE FLAG) + (CBUFDIRTY FLAG) + (DEVICE POINTER) + (USERVISIBLE FLAG) + (EOLCONVENTION BITS 2) + (NIL FLAG) + (VALIDATION POINTER) + (CPAGE POINTER) + (EPAGE POINTER) + (EOFFSET WORD) + (LINELENGTH WORD) + (F1 POINTER) + (F2 POINTER) + (F3 POINTER) + (F4 POINTER) + (F5 POINTER) + (FW6 WORD) + (FW7 WORD) + (FW8 WORD) + (FW9 WORD) + (F10 POINTER) + (STRMBINFN POINTER) + (STRMBOUTFN POINTER) + (OUTCHARFN POINTER) + (ENDOFSTREAMOP POINTER) + (OTHERPROPS POINTER) + (IMAGEOPS POINTER) + (IMAGEDATA POINTER) + (BUFFS POINTER) + (MAXBUFFERS WORD) + (LASTCCODE WORD) + (EXTRASTREAMOP POINTER) + (INCCODEFN POINTER) + (PEEKCCODEFN POINTER) + (BACKCCODEFN POINTER) + (EXTERNALFORMAT POINTER))) ) (DECLARE%: DONTCOPY (* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: EVAL@COMPILE @@ -272,51 +271,51 @@ Copyright (c) 1981-1993, 1999, 2020-2021 by Venue & Xerox Corporation. (* ;; "First 8 words are fixed for BIN, BOUT opcodes. Used to require length of whole datatype be multiple of 4, but Dolphin dead now.") (COFFSET WORD) (* ; - "Offset in CPPTR of next bin or bout") + "Offset in CPPTR of next bin or bout") (CBUFSIZE WORD) (* ; - "Offset past last byte in that buffer") + "Offset past last byte in that buffer") (PEEKEDCHARP FLAG) (* ; - "if true, PEEKEDCHAR contains value of recent call to unread-char") + "if true, PEEKEDCHAR contains value of recent call to unread-char") (ACCESSBITS BITS 3) (* ; - "What kind of access file is open for (read, write, append)") + "What kind of access file is open for (read, write, append)") (CBUFPTR POINTER) (* ; "Pointer to current buffer") (BYTESIZE BYTE) (* ; - "Byte size of stream, always 8 for now") + "Byte size of stream, always 8 for now") (CHARSET BYTE) (* ; "the current character set for this stream. If 255, stream is not runcoded, so read-char consumes two bytes every time") (PEEKEDCHAR WORD) (* ; "value of unread-char call") (CHARPOSITION WORD) (* ; "Used by POSITION etc.") (CBUFMAXSIZE WORD) (* ; - "on output, the size of the physical buffer--can't extend beyond this") + "on output, the size of the physical buffer--can't extend beyond this") (* ;; "-------- Above fields (8 words) potentially known to microcode. --------") (NONDEFAULTDATEFLG FLAG) (REVALIDATEFLG FLAG) (MULTIBUFFERHINT FLAG) (* ; - "True if stream likes to read and write more than one buffer at a time") + "True if stream likes to read and write more than one buffer at a time") (USERCLOSEABLE FLAG) (* ; - "Can be closed by CLOSEF; NIL for terminal, dribble...") + "Can be closed by CLOSEF; NIL for terminal, dribble...") (FULLFILENAME POINTER) (* ; - "Name by which file is known to user") + "Name by which file is known to user") (BINABLE FLAG) (* ; "BIN punts unless this bit on") (BOUTABLE FLAG) (* ; "BOUT punts unless this bit on") (EXTENDABLE FLAG) (* ; - "BOUT punts when COFFSET ge CBUFFSIZE unless this bit set and COFFSET lt 512") + "BOUT punts when COFFSET ge CBUFFSIZE unless this bit set and COFFSET lt 512") (CBUFDIRTY FLAG) (* ; - "true if BOUT has sullied the current buffer") + "true if BOUT has sullied the current buffer") (DEVICE POINTER) (* ; "FDEV of this guy") (USERVISIBLE FLAG) (* ; - "Listed by OPENP; NIL for terminal, dribble ...") + "Listed by OPENP; NIL for terminal, dribble ...") (EOLCONVENTION BITS 2) (* ; "End-of-line convention") (NIL FLAG) (* ; "Was NOTXCCS.") (VALIDATION POINTER) (* ; - "A number somehow identifying file, used to determine if file has changed in our absence") + "A number somehow identifying file, used to determine if file has changed in our absence") (CPAGE POINTER) (* ; - "CPAGE,,COFFSET constitutes current file pointer for most randaccess streams") + "CPAGE,,COFFSET constitutes current file pointer for most randaccess streams") (EPAGE POINTER) (EOFFSET WORD) (* ; "Page, byte offset of eof") (LINELENGTH WORD) (* ; - "LINELENGTH of stream, or -1 for no line length") + "LINELENGTH of stream, or -1 for no line length") (* ;; "----Following are device-specific fields----") @@ -336,25 +335,22 @@ Copyright (c) 1981-1993, 1999, 2020-2021 by Venue & Xerox Corporation. (* ;; "----Following only filled in for open streams----") (STRMBINFN POINTER) (* ; - "Either the BIN fn from the FDEV, or a trap") + "Either the BIN fn from the FDEV, or a trap") (STRMBOUTFN POINTER) (* ; - "Either the BIN fn from the FDEV, or a trap") + "Either the BIN fn from the FDEV, or a trap") (OUTCHARFN POINTER) (* ; - "Called by \OUTCHAR, the normal character printer.") - (ENDOFSTREAMOP POINTER) (* ; - "Called if EOF and we try to read.") - (OTHERPROPS POINTER) (* ; - "PROP LIST for holding other info.") + "Called by \OUTCHAR, the normal character printer.") + (ENDOFSTREAMOP POINTER) (* ; "Called if EOF and we try to read.") + (OTHERPROPS POINTER) (* ; "PROP LIST for holding other info.") (IMAGEOPS POINTER) (* ; "Image operations vector") (IMAGEDATA POINTER) (* ; - "Image instance variables--format depends on IMAGEOPS value") - (BUFFS POINTER) (* ; - "Buffer chain for pmapped streams") + "Image instance variables--format depends on IMAGEOPS value") + (BUFFS POINTER) (* ; "Buffer chain for pmapped streams") (MAXBUFFERS WORD) (* ; - "Max # of buffers the system will allocate.") + "Max # of buffers the system will allocate.") (LASTCCODE WORD) (* ; "After READ, RATOM, etc, the charcode that will be returned (as a character) by LASTC. If there is none, this field is 65535.") (EXTRASTREAMOP POINTER) (* ; - "For use of applications programs, not devices") + "For use of applications programs, not devices") (INCCODEFN POINTER) (* ; "Set by \EXTERNALFORMAT") (PEEKCCODEFN POINTER) (BACKCCODEFN POINTER) @@ -365,22 +361,21 @@ Copyright (c) 1981-1993, 1999, 2020-2021 by Venue & Xerox Corporation. (* ;; "respecification of access bits:") (RANDOMWRITEABLE FLAG) (* ; - "File open for output (access = OUTPUT or BOTH)") + "File open for output (access = OUTPUT or BOTH)") (APPENDABLE FLAG) (* ; - "File open for append (OUTPUT or APPEND or BOTH)") - (READABLE FLAG) (* ; - "File open for read (READ or BOTH)") + "File open for append (OUTPUT or APPEND or BOTH)") + (READABLE FLAG) (* ; "File open for read (READ or BOTH)") (NIL POINTER))) (BLOCKRECORD STREAM ((NIL 4 WORD) (NIL BITS 14) (* ;; - "JIS character encoding format specific, overrides CHARSET field.") + "JIS character encoding format specific, overrides CHARSET field.") (IN.KANJIIN FLAG) (* ; - "True if input stream is in Kanji-in mode.") + "True if input stream is in Kanji-in mode.") (OUT.KANJIIN FLAG) (* ; - "True if output stream is in Kanji-in mode.") + "True if output stream is in Kanji-in mode.") )) [ACCESSFNS STREAM ((ACCESS \GETACCESS \SETACCESS) (FULLNAME (OR (fetch (STREAM FULLFILENAME) of DATUM) @@ -391,7 +386,7 @@ Copyright (c) 1981-1993, 1999, 2020-2021 by Venue & Xerox Corporation. USERCLOSEABLE _ T USERVISIBLE _ T ACCESSBITS _ NoBits CPAGE _ 0 EPAGE _ 0 BUFFS _ NIL BYTESIZE _ 8 CBUFPTR _ NIL MAXBUFFERS _ (LET NIL (DECLARE (GLOBALVARS \STREAM.DEFAULT.MAXBUFFERS - )) + )) \STREAM.DEFAULT.MAXBUFFERS) CHARPOSITION _ 0 LINELENGTH _ (LET NIL (DECLARE (GLOBALVARS FILELINELENGTH)) FILELINELENGTH) @@ -464,16 +459,15 @@ Copyright (c) 1981-1993, 1999, 2020-2021 by Venue & Xerox Corporation. '64) (DECLARE%: EVAL@COMPILE -(PUTPROPS STREAMOP MACRO [ARGS (CONS 'SPREADAPPLY* - (CONS (COND - ((EQ (CAR (LISTP (CAR ARGS))) - 'QUOTE) - (LIST 'fetch (CADAR ARGS) - 'of - (CADR ARGS))) - (T (HELP "STREAMOP - OPNAME not quoted:" ARGS)) - ) - (CDDR ARGS]) +(PUTPROPS STREAMOP MACRO [ARGS (CONS 'SPREADAPPLY* (CONS (COND + ((EQ (CAR (LISTP (CAR ARGS))) + 'QUOTE) + (LIST 'fetch (CADAR ARGS) + 'of + (CADR ARGS))) + (T (HELP "STREAMOP - OPNAME not quoted:" + ARGS))) + (CDDR ARGS]) ) (DECLARE%: EVAL@COMPILE @@ -496,47 +490,47 @@ Copyright (c) 1981-1993, 1999, 2020-2021 by Venue & Xerox Corporation. (DECLARE%: EVAL@COMPILE (PUTPROPS TestMasked MACRO ((BITS MASK) - (NEQ (LOGAND BITS MASK) - 0))) + (NEQ (LOGAND BITS MASK) + 0))) (PUTPROPS APPENDABLE MACRO ((STREAM) - (TestMasked (fetch ACCESSBITS of STREAM) - AppendBit))) + (TestMasked (fetch ACCESSBITS of STREAM) + AppendBit))) (PUTPROPS APPENDONLY MACRO ((STREAM) - (EQ (fetch ACCESSBITS of STREAM) - AppendBit))) + (EQ (fetch ACCESSBITS of STREAM) + AppendBit))) (PUTPROPS DIRTYABLE MACRO [(STREAM) - (TestMasked (fetch ACCESSBITS of STREAM) - (CONSTANT (LOGOR AppendBit WriteBit]) + (TestMasked (fetch ACCESSBITS of STREAM) + (CONSTANT (LOGOR AppendBit WriteBit]) (PUTPROPS OPENED MACRO ((STREAM) - (NEQ (fetch ACCESSBITS of STREAM) - NoBits))) + (NEQ (fetch ACCESSBITS of STREAM) + NoBits))) (PUTPROPS OVERWRITEABLE MACRO ((STREAM) - (TestMasked (fetch ACCESSBITS of STREAM) - WriteBit))) + (TestMasked (fetch ACCESSBITS of STREAM) + WriteBit))) (PUTPROPS READABLE MACRO ((STREAM) - (TestMasked (fetch ACCESSBITS of STREAM) - ReadBit))) + (TestMasked (fetch ACCESSBITS of STREAM) + ReadBit))) (PUTPROPS READONLY MACRO ((STREAM) - (EQ (fetch ACCESSBITS of STREAM) - ReadBit))) + (EQ (fetch ACCESSBITS of STREAM) + ReadBit))) (PUTPROPS WRITEABLE MACRO [(STREAM) - (OR (OVERWRITEABLE STREAM) - (AND (APPENDABLE STREAM) - (\EOFP STREAM]) + (OR (OVERWRITEABLE STREAM) + (AND (APPENDABLE STREAM) + (\EOFP STREAM]) ) (RPAQQ EOLCONVENTIONS ((CR.EOLC 0) - (LF.EOLC 1) - (CRLF.EOLC 2) - (ANY.EOLC 3))) + (LF.EOLC 1) + (CRLF.EOLC 2) + (ANY.EOLC 3))) (DECLARE%: EVAL@COMPILE (RPAQQ CR.EOLC 0) @@ -773,178 +767,173 @@ Copyright (c) 1981-1993, 1999, 2020-2021 by Venue & Xerox Corporation. (* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: EVAL@COMPILE (PUTPROPS FDEVOP DMACRO [ARGS (LET ((OPNAME (CAR ARGS)) - (METHOD-DEVICE (CADR ARGS)) - (TAIL (CDDR ARGS))) - (COND - [(AND (LISTP OPNAME) - (EQ (CAR OPNAME) - 'QUOTE)) - `(SPREADAPPLY* (fetch (FDEV ,(CADR OPNAME)) - of ,METHOD-DEVICE) - ,@TAIL] - (T (ERROR "OPNAME not quoted: " OPNAME]) + (METHOD-DEVICE (CADR ARGS)) + (TAIL (CDDR ARGS))) + (COND + [(AND (LISTP OPNAME) + (EQ (CAR OPNAME) + 'QUOTE)) + `(SPREADAPPLY* (fetch (FDEV ,(CADR OPNAME)) + of ,METHOD-DEVICE) + ,@TAIL] + (T (ERROR "OPNAME not quoted: " OPNAME]) (PUTPROPS \RECOGNIZE-HACK DMACRO [ARGS (LET ((NAME (CAR ARGS)) - (RECOG (CADR ARGS)) - (DEVICE (CADDR ARGS))) - `(if (type? STREAM ,NAME) - then ,NAME - else (FDEVOP 'GETFILENAME ,DEVICE - ,NAME - ,RECOG - ,DEVICE]) + (RECOG (CADR ARGS)) + (DEVICE (CADDR ARGS))) + `(if (type? STREAM ,NAME) + then ,NAME + else (FDEVOP 'GETFILENAME ,DEVICE ,NAME ,RECOG + ,DEVICE]) ) (DECLARE%: EVAL@COMPILE -(DATATYPE FDEV ((RESETABLE FLAG) (* ; "Obsolete") - (RANDOMACCESSP FLAG) - (NODIRECTORIES FLAG) - (PAGEMAPPED FLAG) (* ; - "True if i/o handled by pmap routines") - (FDBINABLE FLAG) (* ; - "Copied as a microcode flag for INPUT streams formed on this device") - (FDBOUTABLE FLAG) - (FDEXTENDABLE FLAG) - (BUFFERED FLAG) (* ; "True implies that the device supports the BIN & BOUT uCode conventions, and implements the GETNEXTBUFFER method") - (DEVICENAME POINTER) (* ; "Identifying name somehow") - (REMOTEP FLAG) (* ; - "true if device not local to machine") - (SUBDIRECTORIES FLAG) (* ; - "true if device has real subdirectories") - (INPUT-INDIRECTED FLAG) (* ; - "True for devices that indirect their input stream. Method INPUTSTREAM fetches it") - (OUTPUT-INDIRECTED FLAG) (* ; - "True for devices that indirect their output stream. Method OUTPUTSTREAM fetches it") - (DEVICEINFO POINTER) (* ; - "arbitrary device-specific info stored here") - (OPENFILELST POINTER) (* ; - "Default place to keep list of streams open on this device") +(DATATYPE FDEV ((RESETABLE FLAG) (* ; "Obsolete") + (RANDOMACCESSP FLAG) + (NODIRECTORIES FLAG) + (PAGEMAPPED FLAG) (* ; + "True if i/o handled by pmap routines") + (FDBINABLE FLAG) (* ; + "Copied as a microcode flag for INPUT streams formed on this device") + (FDBOUTABLE FLAG) + (FDEXTENDABLE FLAG) + (BUFFERED FLAG) (* ; "True implies that the device supports the BIN & BOUT uCode conventions, and implements the GETNEXTBUFFER method") + (DEVICENAME POINTER) (* ; "Identifying name somehow") + (REMOTEP FLAG) (* ; + "true if device not local to machine") + (SUBDIRECTORIES FLAG) (* ; + "true if device has real subdirectories") + (INPUT-INDIRECTED FLAG) (* ; + "True for devices that indirect their input stream. Method INPUTSTREAM fetches it") + (OUTPUT-INDIRECTED FLAG) (* ; + "True for devices that indirect their output stream. Method OUTPUTSTREAM fetches it") + (DEVICEINFO POINTER) (* ; + "arbitrary device-specific info stored here") + (OPENFILELST POINTER) (* ; + "Default place to keep list of streams open on this device") - (* ;; "-----Rest of record consists of device %"methods%"-----") + (* ;; "-----Rest of record consists of device %"methods%"-----") - (* ;; "-----Following fields required of all devices-----") + (* ;; "-----Following fields required of all devices-----") - (HOSTNAMEP POINTER) (* ; "(hostname {device}) => T if hostname is valid. If device is given, return a FDEV for this {new} host, or T to use existing device") - (EVENTFN POINTER) (* ; - "(device event), called before/after logout, sysout, makesys") + (HOSTNAMEP POINTER) (* ; "(hostname {device}) => T if hostname is valid. If device is given, return a FDEV for this {new} host, or T to use existing device") + (EVENTFN POINTER) (* ; + "(device event), called before/after logout, sysout, makesys") - (* ;; - "-----Following fields required of all named devices, e.g., ones that open files-----") + (* ;; + "-----Following fields required of all named devices, e.g., ones that open files-----") - (DIRECTORYNAMEP POINTER) (* ; - "(host/dir) => true if directory exists on host") - (OPENFILE POINTER) (* ; - "(name access recog otherinfo device) => new stream open on this device, or NIL if name not found") - (CLOSEFILE POINTER) (* ; - "(stream) => closes stream, returns it") - (REOPENFILE POINTER) (* ; "(name access recog otherinfo device stream) like openfile, but called after logout to revalidate file, so optionally uses info in old stream to keep this opening like the previous") - (GETFILENAME POINTER) (* ; - "(name recog device) => full file name") - (DELETEFILE POINTER) (* ; - "(name) => deletes file so named, returning name, or NIL on failure. RECOG=OLDEST") - (GENERATEFILES POINTER) (* ; "(device pattern) => generator object for files matching pattern. Car of object is generator function, cdr is arbitrary state. Generator fn returns next file, or NIL when finished") - (RENAMEFILE POINTER) (* ; "(olddevice oldfile newdevice newfile) to rename file on this (olddevice) to a potentially different device.") - (OPENP POINTER) (* ; - "(name access dev) => stream if name is open for access, or all open streams if name = NIL") - (REGISTERFILE POINTER) (* ; - "(stream dev) => registers stream on its device") - (UNREGISTERFILE POINTER) (* ; - "(stream dev) => unregisters a stream from its device") - (FREEPAGECOUNT POINTER) (* ; - "(host/dir dev) => # of free pages on host/dir") - (MAKEDIRECTORY POINTER) (* ; "(host/dir dev)") - (CHECKFILENAME POINTER) (* ; - "(name dev) => name if it is well-formed file name for dev") - (HOSTALIVEP POINTER) (* ; - "(host dev) => true if host is alive, i.e., responsive; only defined if REMOTEP is true") - (BREAKCONNECTION POINTER) (* ; - "(host fastp dev) => closes connections to host") + (DIRECTORYNAMEP POINTER) (* ; + "(host/dir) => true if directory exists on host") + (OPENFILE POINTER) (* ; + "(name access recog otherinfo device) => new stream open on this device, or NIL if name not found") + (CLOSEFILE POINTER) (* ; + "(stream) => closes stream, returns it") + (REOPENFILE POINTER) (* ; "(name access recog otherinfo device stream) like openfile, but called after logout to revalidate file, so optionally uses info in old stream to keep this opening like the previous") + (GETFILENAME POINTER) (* ; + "(name recog device) => full file name") + (DELETEFILE POINTER) (* ; + "(name) => deletes file so named, returning name, or NIL on failure. RECOG=OLDEST") + (GENERATEFILES POINTER) (* ; "(device pattern) => generator object for files matching pattern. Car of object is generator function, cdr is arbitrary state. Generator fn returns next file, or NIL when finished") + (RENAMEFILE POINTER) (* ; "(olddevice oldfile newdevice newfile) to rename file on this (olddevice) to a potentially different device.") + (OPENP POINTER) (* ; + "(name access dev) => stream if name is open for access, or all open streams if name = NIL") + (REGISTERFILE POINTER) (* ; + "(stream dev) => registers stream on its device") + (UNREGISTERFILE POINTER) (* ; + "(stream dev) => unregisters a stream from its device") + (FREEPAGECOUNT POINTER) (* ; + "(host/dir dev) => # of free pages on host/dir") + (MAKEDIRECTORY POINTER) (* ; "(host/dir dev)") + (CHECKFILENAME POINTER) (* ; + "(name dev) => name if it is well-formed file name for dev") + (HOSTALIVEP POINTER) (* ; + "(host dev) => true if host is alive, i.e., responsive; only defined if REMOTEP is true") + (BREAKCONNECTION POINTER) (* ; + "(host fastp dev) => closes connections to host") - (* ;; - "-----The following are required methods for operating on open streams-----") + (* ;; "-----The following are required methods for operating on open streams-----") - (BIN POINTER) (* ; "(stream) => next byte of input") - (BOUT POINTER) (* ; - "(stream byte) output byte to stream") - (PEEKBIN POINTER) (* ; - "(stream) => next byte without advancing position in stream") - (NIL POINTER) (* ; - "Was READCHAR, replaced by READCHARCODE") - (NIL POINTER) (* ; - "Was WRITECHAR (stream char) => writes char to stream") - (NIL POINTER) (* ; "Was PEEKCHAR") - (NIL POINTER) (* ; "Was UNREADCHAR") - (READP POINTER) (* ; - "(stream flag) => T if there is input available from stream right now") - (EOFP POINTER) (* ; - "(stream) => T if BIN would signal eof.") - (BLOCKIN POINTER) (* ; - "(stream buffer byteoffset nbytes)") - (BLOCKOUT POINTER) (* ; - "(stream buffer byteoffset nbytes)") - (FORCEOUTPUT POINTER) (* ; - "(stream waitForFinish) flushes out to device anything that is buffered awaiting transmission") - (GETFILEINFO POINTER) (* ; - "(stream/name attribute device) => value of attribute for open stream or name of closed file") - (SETFILEINFO POINTER) (* ; -"(stream/name attribute newvalue device) sets attribute of open stream or closed file of given name") - (CHARSETFN POINTER) (* ; "(stream charset) => access function for the charset slot, for benefit of indirect streams. See IMCHARSET for changing it on a file.") - (INPUTSTREAM POINTER) (* ; - "(stream) => indirected input stream") - (OUTPUTSTREAM POINTER) (* ; - "(stream) => indirected output stream") + (BIN POINTER) (* ; "(stream) => next byte of input") + (BOUT POINTER) (* ; + "(stream byte) output byte to stream") + (PEEKBIN POINTER) (* ; + "(stream) => next byte without advancing position in stream") + (NIL POINTER) (* ; + "Was READCHAR, replaced by READCHARCODE") + (NIL POINTER) (* ; + "Was WRITECHAR (stream char) => writes char to stream") + (NIL POINTER) (* ; "Was PEEKCHAR") + (NIL POINTER) (* ; "Was UNREADCHAR") + (READP POINTER) (* ; + "(stream flag) => T if there is input available from stream right now") + (EOFP POINTER) (* ; + "(stream) => T if BIN would signal eof.") + (BLOCKIN POINTER) (* ; "(stream buffer byteoffset nbytes)") + (BLOCKOUT POINTER) (* ; "(stream buffer byteoffset nbytes)") + (FORCEOUTPUT POINTER) (* ; + "(stream waitForFinish) flushes out to device anything that is buffered awaiting transmission") + (GETFILEINFO POINTER) (* ; + "(stream/name attribute device) => value of attribute for open stream or name of closed file") + (SETFILEINFO POINTER) (* ; + "(stream/name attribute newvalue device) sets attribute of open stream or closed file of given name") + (CHARSETFN POINTER) (* ; "(stream charset) => access function for the charset slot, for benefit of indirect streams. See IMCHARSET for changing it on a file.") + (INPUTSTREAM POINTER) (* ; + "(stream) => indirected input stream") + (OUTPUTSTREAM POINTER) (* ; + "(stream) => indirected output stream") - (* ;; "-----Following are required of random-access streams-----") + (* ;; "-----Following are required of random-access streams-----") - (GETFILEPTR POINTER) - (GETEOFPTR POINTER) - (SETFILEPTR POINTER) - (BACKFILEPTR POINTER) (* ; "(stream) backs up `fileptr' by one. Stream is only required to be able to do this once, i.e. one-character buffer suffices") - (SETEOFPTR POINTER) (* ; - "(stream length) => truncates or lengthens stream to indicated length") - (LASTC POINTER) (* ; - "Should be possible only if RANDOMACCESSP") + (GETFILEPTR POINTER) + (GETEOFPTR POINTER) + (SETFILEPTR POINTER) + (BACKFILEPTR POINTER) (* ; "(stream) backs up `fileptr' by one. Stream is only required to be able to do this once, i.e. one-character buffer suffices") + (SETEOFPTR POINTER) (* ; + "(stream length) => truncates or lengthens stream to indicated length") + (LASTC POINTER) (* ; + "Should be possible only if RANDOMACCESSP") - (* ;; "-----Following used for buffered streams-----") + (* ;; "-----Following used for buffered streams-----") - (GETNEXTBUFFER POINTER) (* ; "(stream whatfor noerrorflg) => Disposes of current buffer and optionally reads next. whatfor is READ or WRITE. Can cause EOF error unless noerrorflg") - (RELEASEBUFFER POINTER) (* ; - "(stream) => Does whatever appropriate when CBUFPTR is released") + (GETNEXTBUFFER POINTER) (* ; "(stream whatfor noerrorflg) => Disposes of current buffer and optionally reads next. whatfor is READ or WRITE. Can cause EOF error unless noerrorflg") + (RELEASEBUFFER POINTER) (* ; + "(stream) => Does whatever appropriate when CBUFPTR is released") - (* ;; "-----Following used for pagemapped streams-----") + (* ;; "-----Following used for pagemapped streams-----") - (READPAGES POINTER) (* ; "(stream firstpage# buflist) => # of bytes read, starting at firstpage#, reading into buflist, a list of buffers or a single buffer (the usual case)") - (WRITEPAGES POINTER) (* ; - "(stream firstpage# buflist) writes from buflist to stream starting at firstpage# of stream") - (TRUNCATEFILE POINTER) (* ; - "(stream page offset) make stream's eof be at page,offset, discarding anything after it") + (READPAGES POINTER) (* ; "(stream firstpage# buflist) => # of bytes read, starting at firstpage#, reading into buflist, a list of buffers or a single buffer (the usual case)") + (WRITEPAGES POINTER) (* ; + "(stream firstpage# buflist) writes from buflist to stream starting at firstpage# of stream") + (TRUNCATEFILE POINTER) (* ; + "(stream page offset) make stream's eof be at page,offset, discarding anything after it") - (* ;; "-----For window system, argh-----") + (* ;; "-----For window system, argh-----") - (WINDOWOPS POINTER) (* ; "window system operations") - (WINDOWDATA POINTER) (* ; "data for window systems") + (WINDOWOPS POINTER) (* ; "window system operations") + (WINDOWDATA POINTER) (* ; "data for window systems") - (* ;; "-----For any stream (here to not recompile everything)-----") + (* ;; "-----For any stream (here to not recompile everything)-----") - (DEFAULTEXTERNALFORMAT POINTER) (* ; - "Was READCHARCODE. Read a character code from the stream (cf BIN for bytes).") - ) - DIRECTORYNAMEP _ (FUNCTION NILL) - HOSTNAMEP _ (FUNCTION NILL) - READP _ (FUNCTION \GENERIC.READP) - SETFILEPTR _ (FUNCTION \IS.NO.RANDACCESSP) - GETFILEPTR _ (FUNCTION \ILLEGAL.DEVICEOP) - GETEOFPTR _ (FUNCTION \IS.NOT.RANDACCESSP) - EOFP _ (FUNCTION \ILLEGAL.DEVICEOP) - BLOCKIN _ (FUNCTION \GENERIC.BINS) - BLOCKOUT _ (FUNCTION \GENERIC.BOUTS) - RENAMEFILE _ (FUNCTION \GENERIC.RENAMEFILE) - FORCEOUTPUT _ (FUNCTION NILL) - REGISTERFILE _ (FUNCTION NILL) - OPENP _ (FUNCTION NILL) - UNREGISTERFILE _ (FUNCTION NILL) - CHARSETFN _ (FUNCTION \GENERIC.CHARSET) - BREAKCONNECTION _ (FUNCTION NILL)) + (DEFAULTEXTERNALFORMAT POINTER) (* ; + "Was READCHARCODE. Read a character code from the stream (cf BIN for bytes).") + ) + DIRECTORYNAMEP _ (FUNCTION NILL) + HOSTNAMEP _ (FUNCTION NILL) + READP _ (FUNCTION \GENERIC.READP) + SETFILEPTR _ (FUNCTION \IS.NO.RANDACCESSP) + GETFILEPTR _ (FUNCTION \ILLEGAL.DEVICEOP) + GETEOFPTR _ (FUNCTION \IS.NOT.RANDACCESSP) + EOFP _ (FUNCTION \ILLEGAL.DEVICEOP) + BLOCKIN _ (FUNCTION \GENERIC.BINS) + BLOCKOUT _ (FUNCTION \GENERIC.BOUTS) + RENAMEFILE _ (FUNCTION \GENERIC.RENAMEFILE) + FORCEOUTPUT _ (FUNCTION NILL) + REGISTERFILE _ (FUNCTION NILL) + OPENP _ (FUNCTION NILL) + UNREGISTERFILE _ (FUNCTION NILL) + CHARSETFN _ (FUNCTION \GENERIC.CHARSET) + BREAKCONNECTION _ (FUNCTION NILL)) (RECORD FILEGENOBJ (NEXTFILEFN FILEINFOFN . GENFILESTATE)) ) @@ -1101,69 +1090,69 @@ Copyright (c) 1981-1993, 1999, 2020-2021 by Venue & Xerox Corporation. (ADDTOVAR SYSTEMRECLST (DATATYPE FDEV ((RESETABLE FLAG) - (RANDOMACCESSP FLAG) - (NODIRECTORIES FLAG) - (PAGEMAPPED FLAG) - (FDBINABLE FLAG) - (FDBOUTABLE FLAG) - (FDEXTENDABLE FLAG) - (BUFFERED FLAG) - (DEVICENAME POINTER) - (REMOTEP FLAG) - (SUBDIRECTORIES FLAG) - (INPUT-INDIRECTED FLAG) - (OUTPUT-INDIRECTED FLAG) - (DEVICEINFO POINTER) - (OPENFILELST POINTER) - (HOSTNAMEP POINTER) - (EVENTFN POINTER) - (DIRECTORYNAMEP POINTER) - (OPENFILE POINTER) - (CLOSEFILE POINTER) - (REOPENFILE POINTER) - (GETFILENAME POINTER) - (DELETEFILE POINTER) - (GENERATEFILES POINTER) - (RENAMEFILE POINTER) - (OPENP POINTER) - (REGISTERFILE POINTER) - (UNREGISTERFILE POINTER) - (FREEPAGECOUNT POINTER) - (MAKEDIRECTORY POINTER) - (CHECKFILENAME POINTER) - (HOSTALIVEP POINTER) - (BREAKCONNECTION POINTER) - (BIN POINTER) - (BOUT POINTER) - (PEEKBIN POINTER) - (NIL POINTER) - (NIL POINTER) - (NIL POINTER) - (NIL POINTER) - (READP POINTER) - (EOFP POINTER) - (BLOCKIN POINTER) - (BLOCKOUT POINTER) - (FORCEOUTPUT POINTER) - (GETFILEINFO POINTER) - (SETFILEINFO POINTER) - (CHARSETFN POINTER) - (INPUTSTREAM POINTER) - (OUTPUTSTREAM POINTER) - (GETFILEPTR POINTER) - (GETEOFPTR POINTER) - (SETFILEPTR POINTER) - (BACKFILEPTR POINTER) - (SETEOFPTR POINTER) - (LASTC POINTER) - (GETNEXTBUFFER POINTER) - (RELEASEBUFFER POINTER) - (READPAGES POINTER) - (WRITEPAGES POINTER) - (TRUNCATEFILE POINTER) - (WINDOWOPS POINTER) - (WINDOWDATA POINTER) - (DEFAULTEXTERNALFORMAT POINTER))) + (RANDOMACCESSP FLAG) + (NODIRECTORIES FLAG) + (PAGEMAPPED FLAG) + (FDBINABLE FLAG) + (FDBOUTABLE FLAG) + (FDEXTENDABLE FLAG) + (BUFFERED FLAG) + (DEVICENAME POINTER) + (REMOTEP FLAG) + (SUBDIRECTORIES FLAG) + (INPUT-INDIRECTED FLAG) + (OUTPUT-INDIRECTED FLAG) + (DEVICEINFO POINTER) + (OPENFILELST POINTER) + (HOSTNAMEP POINTER) + (EVENTFN POINTER) + (DIRECTORYNAMEP POINTER) + (OPENFILE POINTER) + (CLOSEFILE POINTER) + (REOPENFILE POINTER) + (GETFILENAME POINTER) + (DELETEFILE POINTER) + (GENERATEFILES POINTER) + (RENAMEFILE POINTER) + (OPENP POINTER) + (REGISTERFILE POINTER) + (UNREGISTERFILE POINTER) + (FREEPAGECOUNT POINTER) + (MAKEDIRECTORY POINTER) + (CHECKFILENAME POINTER) + (HOSTALIVEP POINTER) + (BREAKCONNECTION POINTER) + (BIN POINTER) + (BOUT POINTER) + (PEEKBIN POINTER) + (NIL POINTER) + (NIL POINTER) + (NIL POINTER) + (NIL POINTER) + (READP POINTER) + (EOFP POINTER) + (BLOCKIN POINTER) + (BLOCKOUT POINTER) + (FORCEOUTPUT POINTER) + (GETFILEINFO POINTER) + (SETFILEINFO POINTER) + (CHARSETFN POINTER) + (INPUTSTREAM POINTER) + (OUTPUTSTREAM POINTER) + (GETFILEPTR POINTER) + (GETEOFPTR POINTER) + (SETFILEPTR POINTER) + (BACKFILEPTR POINTER) + (SETEOFPTR POINTER) + (LASTC POINTER) + (GETNEXTBUFFER POINTER) + (RELEASEBUFFER POINTER) + (READPAGES POINTER) + (WRITEPAGES POINTER) + (TRUNCATEFILE POINTER) + (WINDOWOPS POINTER) + (WINDOWDATA POINTER) + (DEFAULTEXTERNALFORMAT POINTER))) ) @@ -1423,40 +1412,47 @@ Copyright (c) 1981-1993, 1999, 2020-2021 by Venue & Xerox Corporation. (GO RETRY]) (\DO.PARAMS.AT.OPEN - [LAMBDA (STREAM ACCESS PARAMETERS) (* ; "Edited 29-Jun-2021 17:07 by rmk:") - (* ; "Edited 5-Oct-92 13:45 by jds") + [LAMBDA (STREAM ACCESS PARAMETERS) (* ; "Edited 14-Dec-2021 16:10 by rmk") + (* ; "Edited 13-Dec-2021 15:20 by rmk") + (* ; "Edited 29-Jun-2021 17:07 by rmk:") + (* ; "Edited 5-Oct-92 13:45 by jds") - (* ;; "Does generic parameters when a file/stream is open. Called by \OPENFILE and OPENSTREAM") + (* ;; "Does generic parameters when a file/stream is open. Called by \OPENFILE and OPENSTREAM") - (* ;; "RMK July 2020: Make sure that \EXTERNALFORMAT is always called, so that it can implement per-device defaults.") + (* ;; "RMK July 2020: Make sure that \EXTERNALFORMAT is always called, so that it can implement per-device defaults.") - (* ;; - "RMK August 2020: Added hook for user STREAM-AFTER-OPEN-FNS, not global so can be rebound.") + (* ;; + "RMK August 2020: Added hook for user STREAM-AFTER-OPEN-FNS, not global so can be rebound.") (DECLARE (USEDFREE STREAM-AFTER-OPEN-FNS)) - (\EXTERNALFORMAT STREAM :DEFAULT) - (for X ATTR VAL in PARAMETERS do (COND - [(LISTP X) - (SETQ ATTR (CAR X)) - (SETQ VAL (CAR (LISTP (CDR X] - (T (SETQ ATTR X) - (SETQ VAL T))) - (SELECTQ ATTR - (BUFFERS (SETFILEINFO STREAM 'BUFFERS VAL)) - (ENDOFSTREAMOP (SETFILEINFO STREAM - 'ENDOFSTREAMOP VAL)) - (CHARSET (CHARSET STREAM VAL)) - ((FORMAT EXTERNALFORMAT) - (\EXTERNALFORMAT STREAM VAL)) - (CONVHANKAKU (CONVHANKAKU STREAM VAL)) - ((EOL EOLCONVENTION EOLC) - (replace EOLCONVENTION of STREAM - with (SELECTQ VAL - (CR CR.EOLC) - (LF LF.EOLC) - (CRLF CRLF.EOLC) - (\ILLEGAL.ARG VAL)))) - NIL)) + (\EXTERNALFORMAT STREAM :DEFAULT) + (for X ATTR VAL in PARAMETERS + do (COND + [(LISTP X) + (SETQ ATTR (CAR X)) + (SETQ VAL (CAR (LISTP (CDR X] + (T (SETQ ATTR X) + (SETQ VAL T))) + (SELECTQ ATTR + (BUFFERS (SETFILEINFO STREAM 'BUFFERS VAL)) + (ENDOFSTREAMOP (SETFILEINFO STREAM 'ENDOFSTREAMOP VAL)) + (CHARSET (CHARSET STREAM VAL)) + ((FORMAT EXTERNALFORMAT) + (\EXTERNALFORMAT STREAM VAL)) + (CONVHANKAKU (CONVHANKAKU STREAM VAL)) + ((EOL EOLCONVENTION EOLC) + (replace EOLCONVENTION of STREAM with (SELECTQ VAL + (CR CR.EOLC) + (LF LF.EOLC) + (CRLF CRLF.EOLC) + (ANY (CL:WHEN (\GETSTREAM STREAM + 'OUTPUT T) + (ERROR + "EOL convention ANY not allowed for output streams" + STREAM)) + ANY.EOLC) + (\ILLEGAL.ARG VAL)))) + NIL)) (FOR FN IN STREAM-AFTER-OPEN-FNS DO (APPLY* FN STREAM ACCESS PARAMETERS]) (\RENAMEFILE @@ -1865,21 +1861,18 @@ update the map") (DECLARE%: EVAL@COMPILE (PUTPROPS \INHERITFDEVOP.D MACRO [X (SUBPAIR '(NEWARGS OPNAME . ARGS) - (CONS (SUBST '(fetch DEVICEINFO of FDEV) - 'FDEV - (CDR X)) - X) - '(FUNCTION (LAMBDA ARGS - (FDEVOP 'OPNAME (fetch DEVICEINFO - of FDEV) - . NEWARGS]) + (CONS (SUBST '(fetch DEVICEINFO of FDEV) + 'FDEV + (CDR X)) + X) + '(FUNCTION (LAMBDA ARGS + (FDEVOP 'OPNAME (fetch DEVICEINFO + of FDEV) . NEWARGS]) (PUTPROPS \INHERITFDEVOP.S MACRO [(OPNAME . ARGS) - (FUNCTION (LAMBDA ARGS - (FDEVOP 'OPNAME (fetch DEVICEINFO - of (fetch DEVICE - of STREAM)) - . ARGS]) + (FUNCTION (LAMBDA ARGS + (FDEVOP 'OPNAME (fetch DEVICEINFO + of (fetch DEVICE of STREAM)) . ARGS]) ) (RPAQ? LOGINHOST/DIR '{DSK}) @@ -2633,13 +2626,13 @@ update the map") ) (RPAQQ FILING.TYPES ((BINARY 0) - (DIRECTORY 1) - (TEXT 2) - (SERIALIZED 3) - (INTERPRESS 4361) - (TEDIT 6056) - (FASL 6057) - (LAFITE 6058))) + (DIRECTORY 1) + (TEXT 2) + (SERIALIZED 3) + (INTERPRESS 4361) + (TEDIT 6056) + (FASL 6057) + (LAFITE 6058))) (DECLARE%: DOEVAL@COMPILE DONTCOPY (GLOBALVARS FILING.TYPES) @@ -2648,24 +2641,24 @@ update the map") (* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: EVAL@COMPILE (PUTPROPS \DEVICE-OPEN-STREAMS MACRO [ARGS (LET ((DEVICE (CAR ARGS))) - `(FDEVOP 'OPENP ,DEVICE NIL NIL ,DEVICE]) + `(FDEVOP 'OPENP ,DEVICE NIL NIL ,DEVICE]) (PUTPROPS \CONVERT-PATHNAME DMACRO (OPENLAMBDA (PATHNAME?) - (* ;; - "Coerce pathnames to Interlisp strings, for the benefit of antediluvian Interlisp-D file fns") + (* ;; + "Coerce pathnames to Interlisp strings, for the benefit of antediluvian Interlisp-D file fns") - (CL:TYPECASE PATHNAME? - (PATHNAME (INTERLISP-NAMESTRING PATHNAME?)) - (T PATHNAME?)))) + (CL:TYPECASE PATHNAME? + (PATHNAME (INTERLISP-NAMESTRING PATHNAME?)) + (T PATHNAME?)))) ) (DEFOPTIMIZER ACCESS-CHARSET (STREAM &OPTIONAL NEWVALUE) - `((OPENLAMBDA (STRM) - (FDEVOP 'CHARSETFN (fetch (STREAM DEVICE) of STRM) - STRM - ,NEWVALUE)) - ,STREAM)) + `((OPENLAMBDA (STRM) + (FDEVOP 'CHARSETFN (fetch (STREAM DEVICE) of STRM) + STRM + ,NEWVALUE)) + ,STREAM)) (* "END EXPORTED DEFINITIONS") @@ -2779,51 +2772,51 @@ update the map") (* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: EVAL@COMPILE (PUTPROPS \DECFILEPTR MACRO ((STREAM X) - (\INCFILEPTR STREAM (IMINUS X)))) + (\INCFILEPTR STREAM (IMINUS X)))) (PUTPROPS \GETFILEPTR MACRO (OPENLAMBDA (STRM) - (FDEVOP 'GETFILEPTR (fetch DEVICE of STRM) - STRM))) + (FDEVOP 'GETFILEPTR (fetch DEVICE of STRM) + STRM))) (PUTPROPS \SIGNEDWIN MACRO ((STREAM) - (SIGNED (\WIN STREAM) - BITSPERWORD))) + (SIGNED (\WIN STREAM) + BITSPERWORD))) (PUTPROPS \SIGNEDWOUT MACRO ((STREAM N) - (\WOUT STREAM (UNSIGNED N BITSPERWORD)))) + (\WOUT STREAM (UNSIGNED N BITSPERWORD)))) (PUTPROPS \WIN MACRO (OPENLAMBDA (STREAM) - (create WORD - HIBYTE _ (\BIN STREAM) - LOBYTE _ (\BIN STREAM)))) + (create WORD + HIBYTE _ (\BIN STREAM) + LOBYTE _ (\BIN STREAM)))) (PUTPROPS \WOUT MACRO (OPENLAMBDA (STREAM W) - (\BOUT STREAM (fetch HIBYTE of W)) - (\BOUT STREAM (fetch LOBYTE of W)))) + (\BOUT STREAM (fetch HIBYTE of W)) + (\BOUT STREAM (fetch LOBYTE of W)))) (PUTPROPS \BINS BYTEMACRO (OPENLAMBDA (STRM BASE OFF NBYTES) - (FDEVOP 'BLOCKIN (fetch (STREAM DEVICE) of STRM) - STRM BASE OFF NBYTES))) + (FDEVOP 'BLOCKIN (fetch (STREAM DEVICE) of STRM) + STRM BASE OFF NBYTES))) (PUTPROPS \BOUTS BYTEMACRO (OPENLAMBDA (STRM BASE OFF NBYTES) - (FDEVOP 'BLOCKOUT (fetch (STREAM DEVICE) of STRM) - STRM BASE OFF NBYTES))) + (FDEVOP 'BLOCKOUT (fetch (STREAM DEVICE) of STRM) + STRM BASE OFF NBYTES))) (PUTPROPS \EOFP BYTEMACRO (OPENLAMBDA (STRM) - (FDEVOP 'EOFP (fetch (STREAM DEVICE) of STRM) - STRM))) + (FDEVOP 'EOFP (fetch (STREAM DEVICE) of STRM) + STRM))) (PUTPROPS SIZE.FROM.LENGTH MACRO [LAMBDA (LEN) - (DECLARE (LOCALVARS LEN)) - (AND LEN (FOLDHI LEN BYTESPERPAGE]) + (DECLARE (LOCALVARS LEN)) + (AND LEN (FOLDHI LEN BYTESPERPAGE]) ) (DECLARE%: EVAL@COMPILE (RPAQQ BitsPerByte 8) (RPAQ ByteOffsetSize (SELECTQ (SYSTEMTYPE) - (VAX 10) - 9)) + (VAX 10) + 9)) (RPAQQ WordsPerPage 256) @@ -2843,12 +2836,12 @@ update the map") (DECLARE%: EVAL@COMPILE (ACCESSFNS BYTEPTR ((PAGE (FOLDLO DATUM BYTESPERPAGE)) - (OFFSET (MOD DATUM BYTESPERPAGE))) - (TYPE? (AND (FIXP DATUM) - (IGEQ DATUM 0) - (ILEQ DATUM \MAXFILEPTR))) - (CREATE (IPLUS (UNFOLD PAGE BYTESPERPAGE) - OFFSET))) + (OFFSET (MOD DATUM BYTESPERPAGE))) + (TYPE? (AND (FIXP DATUM) + (IGEQ DATUM 0) + (ILEQ DATUM \MAXFILEPTR))) + (CREATE (IPLUS (UNFOLD PAGE BYTESPERPAGE) + OFFSET))) ) (* "END EXPORTED DEFINITIONS") @@ -3100,40 +3093,40 @@ update the map") (PUTPROPS FILEIO COPYRIGHT ("Venue & Xerox Corporation" 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1999 2020 2021)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (27462 30940 (STREAMPROP 27472 . 27906) (GETSTREAMPROP 27908 . 28377) (PUTSTREAMPROP -28379 . 30788) (STREAMP 30790 . 30938)) (30983 33502 (\DEFPRINT.BY.NAME 30993 . 32145) ( -\STREAM.DEFPRINT 32147 . 33195) (\FDEV.DEFPRINT 33197 . 33500)) (33760 38801 (\GETACCESS 33770 . 34224 -) (\SETACCESS 34226 . 38799)) (59682 65651 (\DEFINEDEVICE 59692 . 62008) (\GETDEVICEFROMNAME 62010 . -62483) (\GETDEVICEFROMHOSTNAME 62485 . 63529) (\REMOVEDEVICE 63531 . 64654) (\REMOVEDEVICE.NAMES 64656 - . 65649)) (65691 90351 (\CLOSEFILE 65701 . 66526) (\DELETEFILE 66528 . 66822) (\DEVICEEVENT 66824 . -68594) (\GENERATEFILES 68596 . 69074) (\GENERATENEXTFILE 69076 . 69727) (\GENERATEFILEINFO 69729 . -70190) (\GETFILENAME 70192 . 70581) (\GENERIC.OUTFILEP 70583 . 71053) (\OPENFILE 71055 . 73633) ( -\DO.PARAMS.AT.OPEN 73635 . 76188) (\RENAMEFILE 76190 . 76614) (\REVALIDATEFILE 76616 . 79218) ( -\PAGED.REVALIDATEFILELST 79220 . 80778) (\PAGED.REVALIDATEFILES 80780 . 82499) (\PAGED.REVALIDATEFILE -82501 . 84784) (\BUFFERED.REVALIDATEFILE 84786 . 87072) (\BUFFERED.REVALIDATEFILELST 87074 . 88258) ( -\PRINT-REVALIDATION-RESULT 88260 . 88675) (\TRUNCATEFILE 88677 . 89068) (\FILE-CONFLICT 89070 . 90349) -) (90387 95050 (\GENERATENOFILES 90397 . 92493) (\NULLFILEGENERATOR 92495 . 92739) (\NOFILESNEXTFILEFN - 92741 . 94732) (\NOFILESINFOFN 94734 . 95048)) (95169 97077 (\FILE.NOT.OPEN 95179 . 95692) ( -\FILE.WONT.OPEN 95694 . 96022) (\ILLEGAL.DEVICEOP 96024 . 96306) (\IS.NOT.RANDACCESSP 96308 . 96754) ( -\STREAM.NOT.OPEN 96756 . 97075)) (97212 99510 (\FDEVINSTANCE 97222 . 99508)) (101060 108434 (CNDIR -101070 . 102375) (DIRECTORYNAME 102377 . 106560) (DIRECTORYNAMEP 106562 . 107178) (HOSTNAMEP 107180 . -107987) (\ADD.CONNECTED.DIR 107989 . 108432)) (108479 135866 (\BACKFILEPTR 108489 . 108677) ( -\BACKPEEKBIN 108679 . 109040) (\BACKBIN 109042 . 109393) (BIN 109395 . 109612) (\BIN 109614 . 109891) -(\BINS 109893 . 110179) (BOUT 110181 . 110543) (\BOUT 110545 . 110860) (\BOUTS 110862 . 111173) ( -COPYBYTES 111175 . 114507) (COPYCHARS 114509 . 118175) (COPYFILE 118177 . 118974) (\COPYOPENFILE -118976 . 122049) (\INFER.FILE.TYPE 122051 . 123005) (EOFP 123007 . 123304) (FORCEOUTPUT 123306 . -123553) (\FLUSH.OPEN.STREAMS 123555 . 123911) (CHARSET 123913 . 125577) (ACCESS-CHARSET 125579 . -125796) (GETEOFPTR 125798 . 126048) (GETFILEINFO 126050 . 129243) (\TYPE.FROM.FILETYPE 129245 . 129715 -) (\FILETYPE.FROM.TYPE 129717 . 129896) (GETFILEPTR 129898 . 130150) (SETFILEINFO 130152 . 133765) ( -SETFILEPTR 133767 . 135486) (BOUT16 135488 . 135673) (BIN16 135675 . 135864)) (135969 141174 ( -\GENERIC.BINS 135979 . 136259) (\GENERIC.BOUTS 136261 . 136526) (\GENERIC.RENAMEFILE 136528 . 138359) -(\GENERIC.OPENP 138361 . 139676) (\GENERIC.READP 139678 . 140719) (\GENERIC.CHARSET 140721 . 141172)) -(141175 141514 (\MAP-OPEN-STREAMS 141185 . 141512)) (143384 145464 (\EOF.ACTION 143394 . 143645) ( -\EOSERROR 143647 . 143840) (\GETEOFPTR 143842 . 144024) (\INCFILEPTR 144026 . 144376) (\PEEKBIN 144378 - . 144569) (\SETCLOSEDFILELENGTH 144571 . 144905) (\SETEOFPTR 144907 . 145095) (\SETFILEPTR 145097 . -145462)) (145465 146007 (\FIXPOUT 145475 . 145775) (\FIXPIN 145777 . 146005)) (146008 146574 (\BOUTEOL - 146018 . 146572)) (149666 159530 (\BUFFERED.BIN 149676 . 150528) (\BUFFERED.PEEKBIN 150530 . 151312) -(\BUFFERED.BOUT 151314 . 152174) (\BUFFERED.BINS 152176 . 155861) (\BUFFERED.BOUTS 155863 . 157664) ( -\BUFFERED.COPYBYTES 157666 . 159528)) (159559 161911 (\NULLDEVICE 159569 . 161587) (\NULL.OPENFILE -161589 . 161909))))) + (FILEMAP (NIL (26864 30342 (STREAMPROP 26874 . 27308) (GETSTREAMPROP 27310 . 27779) (PUTSTREAMPROP +27781 . 30190) (STREAMP 30192 . 30340)) (30385 32904 (\DEFPRINT.BY.NAME 30395 . 31547) ( +\STREAM.DEFPRINT 31549 . 32597) (\FDEV.DEFPRINT 32599 . 32902)) (33162 38203 (\GETACCESS 33172 . 33626 +) (\SETACCESS 33628 . 38201)) (58356 64325 (\DEFINEDEVICE 58366 . 60682) (\GETDEVICEFROMNAME 60684 . +61157) (\GETDEVICEFROMHOSTNAME 61159 . 62203) (\REMOVEDEVICE 62205 . 63328) (\REMOVEDEVICE.NAMES 63330 + . 64323)) (64365 89011 (\CLOSEFILE 64375 . 65200) (\DELETEFILE 65202 . 65496) (\DEVICEEVENT 65498 . +67268) (\GENERATEFILES 67270 . 67748) (\GENERATENEXTFILE 67750 . 68401) (\GENERATEFILEINFO 68403 . +68864) (\GETFILENAME 68866 . 69255) (\GENERIC.OUTFILEP 69257 . 69727) (\OPENFILE 69729 . 72307) ( +\DO.PARAMS.AT.OPEN 72309 . 74848) (\RENAMEFILE 74850 . 75274) (\REVALIDATEFILE 75276 . 77878) ( +\PAGED.REVALIDATEFILELST 77880 . 79438) (\PAGED.REVALIDATEFILES 79440 . 81159) (\PAGED.REVALIDATEFILE +81161 . 83444) (\BUFFERED.REVALIDATEFILE 83446 . 85732) (\BUFFERED.REVALIDATEFILELST 85734 . 86918) ( +\PRINT-REVALIDATION-RESULT 86920 . 87335) (\TRUNCATEFILE 87337 . 87728) (\FILE-CONFLICT 87730 . 89009) +) (89047 93710 (\GENERATENOFILES 89057 . 91153) (\NULLFILEGENERATOR 91155 . 91399) (\NOFILESNEXTFILEFN + 91401 . 93392) (\NOFILESINFOFN 93394 . 93708)) (93829 95737 (\FILE.NOT.OPEN 93839 . 94352) ( +\FILE.WONT.OPEN 94354 . 94682) (\ILLEGAL.DEVICEOP 94684 . 94966) (\IS.NOT.RANDACCESSP 94968 . 95414) ( +\STREAM.NOT.OPEN 95416 . 95735)) (95872 98170 (\FDEVINSTANCE 95882 . 98168)) (99372 106746 (CNDIR +99382 . 100687) (DIRECTORYNAME 100689 . 104872) (DIRECTORYNAMEP 104874 . 105490) (HOSTNAMEP 105492 . +106299) (\ADD.CONNECTED.DIR 106301 . 106744)) (106791 134178 (\BACKFILEPTR 106801 . 106989) ( +\BACKPEEKBIN 106991 . 107352) (\BACKBIN 107354 . 107705) (BIN 107707 . 107924) (\BIN 107926 . 108203) +(\BINS 108205 . 108491) (BOUT 108493 . 108855) (\BOUT 108857 . 109172) (\BOUTS 109174 . 109485) ( +COPYBYTES 109487 . 112819) (COPYCHARS 112821 . 116487) (COPYFILE 116489 . 117286) (\COPYOPENFILE +117288 . 120361) (\INFER.FILE.TYPE 120363 . 121317) (EOFP 121319 . 121616) (FORCEOUTPUT 121618 . +121865) (\FLUSH.OPEN.STREAMS 121867 . 122223) (CHARSET 122225 . 123889) (ACCESS-CHARSET 123891 . +124108) (GETEOFPTR 124110 . 124360) (GETFILEINFO 124362 . 127555) (\TYPE.FROM.FILETYPE 127557 . 128027 +) (\FILETYPE.FROM.TYPE 128029 . 128208) (GETFILEPTR 128210 . 128462) (SETFILEINFO 128464 . 132077) ( +SETFILEPTR 132079 . 133798) (BOUT16 133800 . 133985) (BIN16 133987 . 134176)) (134281 139486 ( +\GENERIC.BINS 134291 . 134571) (\GENERIC.BOUTS 134573 . 134838) (\GENERIC.RENAMEFILE 134840 . 136671) +(\GENERIC.OPENP 136673 . 137988) (\GENERIC.READP 137990 . 139031) (\GENERIC.CHARSET 139033 . 139484)) +(139487 139826 (\MAP-OPEN-STREAMS 139497 . 139824)) (141610 143690 (\EOF.ACTION 141620 . 141871) ( +\EOSERROR 141873 . 142066) (\GETEOFPTR 142068 . 142250) (\INCFILEPTR 142252 . 142602) (\PEEKBIN 142604 + . 142795) (\SETCLOSEDFILELENGTH 142797 . 143131) (\SETEOFPTR 143133 . 143321) (\SETFILEPTR 143323 . +143688)) (143691 144233 (\FIXPOUT 143701 . 144001) (\FIXPIN 144003 . 144231)) (144234 144800 (\BOUTEOL + 144244 . 144798)) (147696 157560 (\BUFFERED.BIN 147706 . 148558) (\BUFFERED.PEEKBIN 148560 . 149342) +(\BUFFERED.BOUT 149344 . 150204) (\BUFFERED.BINS 150206 . 153891) (\BUFFERED.BOUTS 153893 . 155694) ( +\BUFFERED.COPYBYTES 155696 . 157558)) (157589 159941 (\NULLDEVICE 157599 . 159617) (\NULL.OPENFILE +159619 . 159939))))) STOP diff --git a/sources/FILEIO.LCOM b/sources/FILEIO.LCOM index 053ba1b6f8d42535b6b824cc11590e34d72dc6c2..826ac790df55895c71c0c2dca03f3e3bc72ba04c 100644 GIT binary patch delta 819 zcmaiy&yUhj5XYfJqiEEP7j+XeTUdldn!d;Ho~Y0QwzO<1WR1iG0hJXfLf2o(hSOd= ziS=MKF?;pKx_ajB#puba?!oK+2l`6cghUdXChyJn&3xyR$$bAs{Wzpv=6&9vSdfK` zCh)qD1sX-e*;XTrS&RV1ImB`(Io^s>-DlR0`_c%pI7E^n3rR5!WAf8*chG7W-F~~% zYJ#`*v_BZGb5P5wOo`X{VwvG}MlA^nw0l5{6pIh-ZK_?LssA~t>=nEQJW zi>&e9>cIx}dyR7YEY5$0a-XuQ{%h4Q_g&;WdY_)1(iuD2cYV6qbo95=wB&WPJxBSl z-TUpbsN!Cex^>D%+%de*$YI5DtKVEe(+B1xIhFzYX zwV!r8yV7Yp{(5$0nx{7R|D0&LSKO{Nf1~5cpFekz@_aseaKRPCu@uw_vMfY%yv*=g z4sbLDf~Kh&;79^$IYBS$WQmG^qH)NmN|g*;;-v~8oU-n$Z;T=c)QVoJ=zuW>UbzJr zv5?VZ5l|`#_K{4Gm>et|dnFJEs+=LK7@1v&ub}7!RRI)>+6q}BQnc6(5w1;L&=g)4 zRjtVDfJh(FS`Ac_ggOGWUDhyqk6S&nZS-a+J;Q{0r(--J`*+V6fU#}%w@nzDgI2ve Lqz@hie!ln%enQkd delta 732 zcmZuvzi-n(6!s4UA|N0t0}ND8rVYuE$ajey+f!V}u0tFfId0S;s#GObY8slT4X8*+ zVPHZGfEQR85DQzPs&oDVgv7+ij~OW&0|T7n23p{TyZ65LeeZpzyN_R)4_}z4CYLrU zmae(F>gi?Ru#m0${Ve7&0*sVAuN2U;ZISH+gYY4JWhl#;zev0yNJ;^7usz#2jP^yK6kny%aA}K&WjjYTbnx_e-8#d;wIft-8w{YC%02}n$4 zpug+i3wn3=W{!y9ge6o|u%PgT@Ee_)k78u$fM*zPk@|6prr1)4A}bMXD@nwf?BSUO zZ%lm(Z!O*MUeAitS23x2E@F+TCpX(M{&G^P&XlA57aGGR6hL$AhN;?BwYmlfOVHHUJ>9ic%Lv~r8$(_K&9w|bvIx;32_y$p zl%VdB4^{&t%Ah-zMglYoNI%{7Dvk|Ez!3r{PejMZAPIg?aon2f0peva;!wt*ndCin Q4~k;=Af+9APkny;3s(QXD*ylh