-- OthelloDefs.mesa    modified September 12, 1982 1:02 pm by Taft

DIRECTORY
  Device USING [Type],
  File USING [Capability],
  FTPDefs USING [FtpError],
  PhysicalVolume USING [Handle, ID],
  Volume USING [Type];

OthelloDefs: DEFINITIONS =
  BEGIN
  
  CommandTableRecord: TYPE = RECORD [name: STRING, proc: PROC, detail: STRING];
  CommandTable: TYPE = ARRAY OF CommandTableRecord;
  ConfirmType: TYPE = {once, twice, thrice};
  EchoNoEcho:  TYPE = {echo, noEcho};
  
  Question: SIGNAL;
  TryAgain: SIGNAL;
  
  AbortCommandFileIfAny: PROC;
  CommandFileActive: PROC RETURNS [BOOLEAN];
  Confirm: PROC [how: ConfirmType ← once];
  DebugAsk: PROC;
  GetCommandString: PROC RETURNS [s: STRING, i: CARDINAL];
  GetName: PROC [
    prompt, dest: STRING, how: EchoNoEcho ← echo,
    signalQuestion: BOOLEAN ← FALSE, escString: STRING ← NIL];
  NewLine: PROC;
  PrintBcdTime: PROC;
  ReadChar: PROC RETURNS [CHARACTER];
  ReadNumber: PROC [
    prompt: STRING, min, max: LONG CARDINAL,
    default: LONG CARDINAL ← LAST[LONG CARDINAL]]
    RETURNS [ans: LONG CARDINAL];
  ReadShortNumber: PROC [
    prompt: STRING, min, max, default: LONG CARDINAL]
    RETURNS [CARDINAL];
  ReportError: PROC [message: STRING];
  RunCommand: PROC [DESCRIPTOR FOR ARRAY OF CommandTableRecord];
  SetCommandString: PROC [s: STRING, i: CARDINAL ← 0];
  WriteChar: PROC [CHARACTER];
  WriteFixedWidthNumber: PROC [
    x: LONG CARDINAL, count: CARDINAL, base: CARDINAL ← 10];
  WriteLine, WriteString: PROC [STRING];
  WriteLongNumber: PROC [num: LONG CARDINAL];
  WriteOctal: PROC [CARDINAL];
  Yes: PROC [STRING] RETURNS [BOOLEAN];
  
  -- Exported by VolumeInitImplA to OthelloDeviceImplD*
  file: PUBLIC STRING;
  ftpOpen: BOOLEAN;
  GetLvTypeFromUser: PROC [prompt: STRING] RETURNS [t: Volume.Type];
  GetDriveFromUser: PROC RETURNS [h: PhysicalVolume.Handle];
  GetDriveNumber: PROC [h: PhysicalVolume.Handle] RETURNS [CARDINAL];
  GetDriveType: PROC [h: PhysicalVolume.Handle] RETURNS [Device.Type];
  InstallUserCredentials: PROC;
  PromptForCredentials: PROC [ftpError: FTPDefs.FtpError, message: STRING];
  p: PUBLIC PhysicalVolume.ID;
  
  -- Exported by OthelloPup
  EchoUser, PrintLocalPupRoutingTable: PROC;
  
  -- Exported by OthelloFTP
  FTPDestination: TYPE = RECORD [
    SELECT type: * FROM
      pilotFileSystemWrite => [localFile: File.Capability],
      rawWrite =>
        [linkProc: PROC [getPage: PROC RETURNS [LONG POINTER]]],
      string => [stringProc: PROC [STRING]],
      ENDCASE];
  
  userName, userPassword, connectName, connectPassword, directory: STRING;
    
  Open:  PROC [server, remoteMsg: STRING] RETURNS [BOOLEAN];
  Close: PROC [msg: STRING] RETURNS [BOOLEAN];
  Retrieve: PROC [remoteFile, msg: STRING, destination: FTPDestination]
    RETURNS [BOOLEAN];
  Enumerate: PROC [
    remoteFile, msg: STRING,
    proc: PROCEDURE [filename, creationDate, author: STRING]]
    RETURNS [BOOLEAN];

  -- When this is raised, client can supply required credentials and RESUME.
  CredentialError: SIGNAL [ftpError: FTPDefs.FtpError, message: STRING];
  
  OthelloFTP: PROGRAM;
  
  END....

12-Jun-81 11:35:15  Taft  Add procs exported from VolumeInitImplA to OthelloDeviceImplD*
24-Jan-82 15:56:08  Taft  Add CredentialError
 4-Jun-82 17:39:14  Taft  Add PromptForCredentials, GetCommandString, Enumerate
September 9, 1982 5:23 pm  Taft  Mods for new Cedar Login
September 12, 1982 1:02 pm  Taft  Add CommandFileActive, AbortCommandFileIfAny, ReportError