-- Copyright (C) 1986 by Xerox Corporation. All rights reserved. -- CEnvUtil.mesa -- NFS 29-May-86 11:53:11 -- Absorbs environment dependencies of CEnv. -- A different implementation is needed for each environment -- in which CEnvironment runs. DIRECTORY CString USING [CString], Stream USING [Handle, Object], TTY USING [Handle]; CEnvUtil:DEFINITIONS = { FileHandle:TYPE[2]; LoadHandle:TYPE[2]; Data:TYPE; -- data for each window or exec instance DataHandle:TYPE = LONG POINTER TO Data; ArgSeq:TYPE = LONG POINTER TO StringSeq; ToolType:TYPE = {ctool, cexec, temp}; StringSeq:TYPE = RECORD[ length:CARDINAL, argVSeq:SEQUENCE maxlength:CARDINAL OF CString.CString]; StandardStream:TYPE = {stdin,stdout,stderr}; StdinHandle:TYPE = LONG POINTER TO StdinObject; StdinObject:TYPE = RECORD[ object:Stream.Object, mode:INTEGER]; Outcome:TYPE = INTEGER; normal:Outcome = 0; error:Outcome = -1; AppendCmdProc:TYPE = PROCEDURE[ buffer:LONG POINTER TO LONG STRING] RETURNS[lineDeleted:BOOLEAN]; FileError:ERROR[message:LONG STRING]; StdStreamError:ERROR[whichStream:StandardStream]; SystemCall:SIGNAL[string:LONG STRING] RETURNS[INTEGER]; zone:UNCOUNTED ZONE; ReadAndRun:PROCEDURE[ data:DataHandle,tH:TTY.Handle,appendCmd:AppendCmdProc] RETURNS[outcome: Outcome]; ParseLine:PROCEDURE[buffer:LONG STRING] RETURNS[name:LONG STRING ← NIL,argC:CARDINAL ← 0,argV:ArgSeq ← NIL]; Print:PROCEDURE[msg:LONG STRING,data:DataHandle]; Blink:PROCEDURE; AcquireFile:PROCEDURE[name:LONG STRING] RETURNS[fh:FileHandle]; ReleaseFile:PROCEDURE[fh:FileHandle]; UniqueFilePrefix:PROCEDURE[fileName:LONG STRING] RETURNS[matches: CARDINAL]; GetFileInputStream:PROCEDURE[buffer:LONG STRING] RETURNS[sH:Stream.Handle]; AppendLine:PROCEDURE[ line:LONG POINTER TO LONG STRING,getChar:PROC RETURNS[c:CHAR]]; GetStdStreams:PROCEDURE[ data:DataHandle,defaultStdin,defaultStdout,defaultStderr:Stream.Handle] RETURNS[stdin,stdout,stderr:Stream.Handle]; ChangeStandardStreams:PROCEDURE[buffer:LONG STRING,data:DataHandle]; ChangeSwitches:PROCEDURE[buffer:LONG STRING,data:DataHandle]; PrintStatus:PROCEDURE[data:DataHandle,tty:TTY.Handle]; Debugging:PROCEDURE[data:DataHandle] RETURNS[BOOLEAN]; StopOnError:PROCEDURE[data:DataHandle] RETURNS[BOOLEAN]; EndingToolInstance:PROCEDURE[data:DataHandle] RETURNS[BOOLEAN]; RegisterItems:PROCEDURE; -- for registering commands or menu items IsItDefaultStdin:PROCEDURE[sH:Stream.Handle] RETURNS[BOOLEAN]; MakeDataForSystemCall:PROCEDURE RETURNS[newData:DataHandle]; StopIfCExec:PROCEDURE[data:DataHandle]; GetFirstWord:PROCEDURE[buffer:LONG STRING] RETURNS[firstWord:LONG STRING]; Unload:PROCEDURE[cmdLine:LONG STRING,tty:TTY.Handle] RETURNS[outcome:Outcome]; ShowHandles:PROCEDURE[cmdLine:LONG STRING,tty:TTY.Handle] RETURNS[outcome:Outcome]; GetPrompt:PROCEDURE RETURNS[prompt:LONG STRING ← NIL]; UpdateLogReadLength:PROCEDURE[data:DataHandle]; FreeData:PROCEDURE[h: DataHandle]; SetOutputMode: PROCEDURE [h: DataHandle, iomode: INTEGER]; }.