home *** CD-ROM | disk | FTP | other *** search
- Unit MiscComm ;
- Interface
- Uses Dos, (* Standard Turbo Pascal Unit *)
- KGlobals, (* Kermit Globals *)
- ModemPro,
- Packets,
- Setshow,
- Vt100 ;
- Procedure Logit (filename : String);
- Procedure Takeit (filename : String);
- Procedure QuitExit (QuitOption : String);
- Implementation
- (* ================================================================== *)
- (* LOGIT - creates a Log file to record all incoming data from the *)
- (* remote line. *)
- (* The file name is specified in the Parameter . *)
- (* if no parameter specified logging is turned off. *)
- (* ================================================================== *)
- Procedure Logit (filename : String);
- Begin (* Logit Procedure *)
- If (length(filename) < 3) or (filename='OFF') then
- Begin (* Turn off Logging *)
- Logging := false ;
- {$I-} Close (Logfile); {$I+}
- If IoResult = 0 then
- Writeln (' Logging is turned off ');
- End (* Turn off Logging *)
- else
- Begin (* Turn on Logging *)
- If Logging then Close (Logfile);
- Logging := True ;
- Assign(Logfile,Filename);
- {$I-} Rewrite(Logfile); {$I+}
- If IoResult = 0 then
- Writeln(' Logging data to file ',filename)
- else
- Writeln(' Unable to open file',filename,' for Logging') ;
- LogName := filename ;
- End ; (* Turn on Logging *)
- End ; (* Logit Procedure)
-
- (* ================================================================== *)
- (* Takeit - read commands from a file and executes them. *)
- (* if no file specified or file is not there if does nothing *)
- (* ================================================================== *)
- Procedure Takeit (filename : String);
- Var FileInfo : SearchRec ;
- Begin (* Takeit Procedure *)
- If length(filename) > 1 then
- FindFirst(filename,anyfile,FileInfo) ;
- If DosError = 0 then
- Begin (* Active file *)
- Writeln ('Activating Command file ',filename);
- TakeActive := true ;
- Assign(Commandfile,filename);
- Reset(Commandfile);
- End (* Active file *)
- else
- Writeln('No file ',filename) ;
- End ; (* Takeit Procedure)
-
- (* ================================================================== *)
- (* QuitExit - Terminates the KERMIT. *)
- (* the QuitOptions are: *)
- (* LOCAL,REMOTE,DISCONnect,ALL *)
- (* if LOCAL or noparms only the local kermit terminates.*)
- (* if REMOTE then only the remote kermit terminates. *)
- (* if DISCONect then the remote kermit is terminated *)
- (* and the remote is logged off. *)
- (* if ALL then both kermits are terminated and remote *)
- (* is logged off. *)
- (* *)
- (* ================================================================== *)
- Procedure QuitExit (QuitOption : String);
- Const
- QuitTable : String[35] = ' LOCAL REMOTE DISCON ALL ' ;
- Type QuitType = (zero,local,remote,discon,all);
- Var
- Qix : integer ;
- Begin (* QuitExit Procedure *)
- QuitOption := Uppercase(Concat(' ',QuitOption));
- Qix := Pos(QuitOption,QuitTable) div 7 ;
- Case QuitType(Qix) of (* Quit Type *)
- zero,
- local: Running := false ;
- remote :
- Begin (* terminate remote kermit *)
- (* Send a Finish packet *)
- OutDataCount := 1 ;
- OutSeq := OutSeq + 1 ;
- If OutSeq > 64 then OutSeq := 0 ;
- OutPacketType := Ord('G');
- SendData[1] := Ord('F');
- WaitXon := False ;
- SendPacket ;
- If RecvPacket and (InPacketType = Ord('Y')) then
- Writeln (' Remote Kermit terminated. ')
- else
- Writeln(' Unable to terminate Remote Kermit. ');
- End ; (* terminate remote kermit *)
- discon,
- all:
- Begin (* logoff Remote *)
- (* Send a Logoff packet *)
- OutDataCount := 1 ;
- OutSeq := OutSeq + 1 ;
- If OutSeq > 64 then OutSeq := 0 ;
- OutPacketType := Ord('G');
- SendData[1] := Ord('L');
- WaitXon := false ;
- SendPacket ;
- If RecvPacket and (InPacketType = Ord('Y')) then
- Writeln (' Remote host is logging off ')
- else
- Writeln(' Remote host unable to execute a log off ');
- If (Qix = Ord(all)) then Running := False ;
- End; (* Logoff Remote *)
- End ; (* Case Quit Type *)
- End; (* QuitExit Procedure *)
- Begin (* MiscComm Unit *)
- End. (* MiscComm Unit *)
-