home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / perqb / pq2mai.pas < prev    next >
Pascal/Delphi Source File  |  2020-01-01  |  5KB  |  173 lines

  1. program Kermit(Input,Output);
  2.  
  3. { - This is the Kermit main program }
  4.  
  5. imports System from System;
  6. imports MenuUtils from MenuUtils;
  7. imports KermitLineIO from KermitLineIO;
  8. imports KermitConnect from KermitConnect;
  9. imports KermitScreen from KermitScreen;
  10. imports KermitRead from KermitRead;
  11. imports KermitSend from KermitSend;
  12. imports KermitGlobals from KermitGlobals;
  13. imports KermitParameters from KermitParameters;
  14.  
  15. imports KermitFile from KermitFile;
  16.  
  17. const MsegFile = 'sys:Util>Segfiles>Kermit.MSEG';
  18.       HLPFile  = 'sys:Util>Segfiles>Kermit.HLP';
  19.  
  20. var 
  21.     PList, TPList   : pPListEntry;
  22.     MNComm          : MainCommType;
  23.     Arg1, Arg2      : FNameType;
  24.  
  25.  
  26. procedure DoCommand; 
  27.  
  28.     handler CtlCAbort;
  29.     begin
  30.         CtrlCPending := false;
  31.         writeln;
  32.         exit( DoCommand );
  33.     end;
  34.  
  35.     handler HelpKey(var RetStr: Sys9S);
  36.     begin
  37.         RetStr := '?';
  38.     end;
  39.  
  40. begin
  41.         { Get a command and return the parse list }
  42.     GetPList( RootMenu, PList );
  43.         
  44.     if PList = NIL then
  45.         MnComm := MainEmptyLine
  46.     else
  47.         MnComm := Recast( PList^.Selection, MainCommType );
  48.                             
  49.     case MnComm of
  50.  
  51.         MainSend:
  52.             begin
  53.                 ParseArgs( PList^.NextPList^.Arg, Arg1, Arg2 );
  54.                 FlushBuffer( Idev );
  55.                 if SetReadFile( Arg1, Arg2 ) >= FNoError then
  56.                     CurrState := SendSwitch
  57.                 else
  58.                     Writeln('?Wildcards in filenames do not match');
  59.             end;
  60.  
  61.         MainReceive:
  62.             begin
  63.                 ParseArgs( PList^.NextPList^.Arg, Arg1, Arg2 );
  64.                 FlushBuffer( Idev );
  65.                 if (Arg1='') and (Arg2<>'') then begin
  66.                     writeln('?Give two file names if rename intended');
  67.                 end else 
  68.       
  69.                     if SetWriteFile( Arg1, Arg2 ) >= FNoError then
  70.                         CurrState := ReadSwitch
  71.                     else
  72.                         writeln('?Wildcards in filenames do not match');
  73.             end;
  74.  
  75.         MainGet:
  76.             begin
  77.                 ParseArgs( PList^.NextPList^.Arg, Arg1, Arg2 );
  78.                 FlushBuffer( IDev );
  79.                 if Arg2='' then 
  80.                     Arg2 := Arg1;
  81.                 if Arg1='' then
  82.                     writeln('?Send what file?')
  83.                 else
  84.                     if SetWriteFile( Arg1, Arg2 )>=FNoError then begin
  85.                         CurrState := ReceiveInit( Arg1 );
  86.                         CurrState := ReadSwitch;
  87.                     end else
  88.                         writeln('?Wildcards in filenames do not match');
  89.             end;
  90.  
  91.         MainQuit,MainExit:
  92.             ;
  93.  
  94.         MainBye:
  95.             begin                                                
  96.                 if (not SendGComm( GCLogout, '' )) then
  97.                     writeln('?Unable to logout remote server')
  98.                 else
  99.                     MnComm := MainQuit;
  100.             end;                                              
  101.  
  102.         MainFinish: 
  103.             begin                                                
  104.                 if (not SendGComm( GCFinish, '' )) then
  105.                     writeln('?Unable to tell remote server to finish');
  106.             end; 
  107.  
  108.         MainConnect:
  109.             begin
  110.                 write( '[Connected to remote computer - type ' );
  111.                 ShowKey( EscKey );
  112.                 write( ',''C'' or press tabswitch to return]' );
  113.                 Terminal( EscKey );
  114.                 write( chr(13),'[Connection closed - back at Perq]' );
  115.                 writeln('                                                ');
  116.             end;
  117.  
  118.         MainSet:
  119.             SetCommand( PList^.NextPList );
  120.  
  121.         MainShow:
  122.             ShowCommand( PList^.NextPList );
  123.         
  124.         MainTake:
  125.             begin
  126.                 if not PushCmdFile( PList^.NextPList^.Arg ) then
  127.                     if not PushCmdFile( Concat(PList^.NextPList^.Arg, '.Cmd') )
  128.                     then
  129.                         writeln('?No command file: ', PList^.NextPList^.Arg);
  130.             end;
  131.  
  132.         MainStatus:
  133.             StatusCommand;
  134.         
  135.         MainEmptyLine:
  136.             ;
  137.  
  138.         otherwise:
  139.             begin
  140.                 writeln( 'Wrong command' );
  141.                 writeln;
  142.             end;
  143.     end;
  144.     
  145. end;
  146.  
  147.  
  148.  
  149. begin
  150.     InitParameters;
  151.     InitScreen;
  152.     InitMenues;
  153.     InitFile;
  154.     writeln;
  155.     writeln;
  156.     writeln( KermitMessage );
  157.     writeln;
  158.     RootMenu := GetMenu( MsegFile, HLPFile );
  159.     InitLine;
  160.  
  161.     repeat  { Kermit main loop }
  162.         DoCommand;
  163.         DestroyPList( PList );
  164.  
  165.     until MnComm IN [MainQuit,MainExit];
  166.  
  167.     SetSaveFile( '' );  { Force Kermit to close the log file }
  168.     CleanUpLine;
  169.     CleanUpParameters;
  170.     DestroyMenues;
  171.     CleanUpScreen;
  172. end.
  173.