home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Columbia Kermit
/
kermit.zip
/
c
/
pq2mai.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
2020-01-01
|
5KB
|
173 lines
program Kermit(Input,Output);
{ - This is the Kermit main program }
imports System from System;
imports MenuUtils from MenuUtils;
imports KermitLineIO from KermitLineIO;
imports KermitConnect from KermitConnect;
imports KermitScreen from KermitScreen;
imports KermitRead from KermitRead;
imports KermitSend from KermitSend;
imports KermitGlobals from KermitGlobals;
imports KermitParameters from KermitParameters;
imports KermitFile from KermitFile;
const MsegFile = 'sys:Util>Segfiles>Kermit.MSEG';
HLPFile = 'sys:Util>Segfiles>Kermit.HLP';
var
PList, TPList : pPListEntry;
MNComm : MainCommType;
Arg1, Arg2 : FNameType;
procedure DoCommand;
handler CtlCAbort;
begin
CtrlCPending := false;
writeln;
exit( DoCommand );
end;
handler HelpKey(var RetStr: Sys9S);
begin
RetStr := '?';
end;
begin
{ Get a command and return the parse list }
GetPList( RootMenu, PList );
if PList = NIL then
MnComm := MainEmptyLine
else
MnComm := Recast( PList^.Selection, MainCommType );
case MnComm of
MainSend:
begin
ParseArgs( PList^.NextPList^.Arg, Arg1, Arg2 );
FlushBuffer( Idev );
if SetReadFile( Arg1, Arg2 ) >= FNoError then
CurrState := SendSwitch
else
Writeln('?Wildcards in filenames do not match');
end;
MainReceive:
begin
ParseArgs( PList^.NextPList^.Arg, Arg1, Arg2 );
FlushBuffer( Idev );
if (Arg1='') and (Arg2<>'') then begin
writeln('?Give two file names if rename intended');
end else
if SetWriteFile( Arg1, Arg2 ) >= FNoError then
CurrState := ReadSwitch
else
writeln('?Wildcards in filenames do not match');
end;
MainGet:
begin
ParseArgs( PList^.NextPList^.Arg, Arg1, Arg2 );
FlushBuffer( IDev );
if Arg2='' then
Arg2 := Arg1;
if Arg1='' then
writeln('?Send what file?')
else
if SetWriteFile( Arg1, Arg2 )>=FNoError then begin
CurrState := ReceiveInit( Arg1 );
CurrState := ReadSwitch;
end else
writeln('?Wildcards in filenames do not match');
end;
MainQuit,MainExit:
;
MainBye:
begin
if (not SendGComm( GCLogout, '' )) then
writeln('?Unable to logout remote server')
else
MnComm := MainQuit;
end;
MainFinish:
begin
if (not SendGComm( GCFinish, '' )) then
writeln('?Unable to tell remote server to finish');
end;
MainConnect:
begin
write( '[Connected to remote computer - type ' );
ShowKey( EscKey );
write( ',''C'' or press tabswitch to return]' );
Terminal( EscKey );
write( chr(13),'[Connection closed - back at Perq]' );
writeln(' ');
end;
MainSet:
SetCommand( PList^.NextPList );
MainShow:
ShowCommand( PList^.NextPList );
MainTake:
begin
if not PushCmdFile( PList^.NextPList^.Arg ) then
if not PushCmdFile( Concat(PList^.NextPList^.Arg, '.Cmd') )
then
writeln('?No command file: ', PList^.NextPList^.Arg);
end;
MainStatus:
StatusCommand;
MainEmptyLine:
;
otherwise:
begin
writeln( 'Wrong command' );
writeln;
end;
end;
end;
begin
InitParameters;
InitScreen;
InitMenues;
InitFile;
writeln;
writeln;
writeln( KermitMessage );
writeln;
RootMenu := GetMenu( MsegFile, HLPFile );
InitLine;
repeat { Kermit main loop }
DoCommand;
DestroyPList( PList );
until MnComm IN [MainQuit,MainExit];
SetSaveFile( '' ); { Force Kermit to close the log file }
CleanUpLine;
CleanUpParameters;
DestroyMenues;
CleanUpScreen;
end.