=================================== Notice ===================================
Fet is free software and covered by the GPL.  If you don't already have a
copy of the Gnu Public License, you can obtain it via ftp from
    prep.ai.mit.edu:/pub/gnu/COPYING .  
==============================================================================

    FET is a "Front End for Term"   netcom.com:/pub/stig/src/linux/fet.tgz
    TERM is user-level pseudo-SLIP  tartarus.uwa.edu.au:/pub/oreillym/term*

This directory contains all source code for Fet. Fet is a front end for
Michael Oreilly's term package. Term is a multiplexer so that multiple
sessions may be run over the serial line. It may be anonymously FTPed from
tartarus.uwa.edu.au in directory /pub/oreillym.

Fet's primary purpose is to login into a remote system and startup term.
I started this project because it was a pain kester login in remotely via
minicom and then having to start term by hand. So, last night I hacked
like made and this is what I came up with. It seems to work okay.
There are probably already programs that allow similiar functionality
but it was quicker to hack this up then go scouring the net.

To compile:
----------------------------------------------------------------------
type make

To run:
----------------------------------------------------------------------
To run fet type:
	fet [system-name]

where system-name is the name of the system you want to call.  This system
should be defined in ~/.term/fetrc file.  The first system in your
~/.term/fetrc is the default, should you omit the system name from the
command line.  This file contains all information about systems and how to
login to them.  The format of the ~/.term/fetrc file is pretty simple and
probably very inconsistent. My intention here was to make it similiar to
uucp.

Fet will execute the script commands associated with the
system name and then redirect stdin/stdout to/from the modem.
To exit type ^] and then quit.

First you will probably have to change the modem definitions.
A modem (or dialer) is defined by:
	modem <arbitrary name>
		...info...
	end
where <arbitrary name> is anything you want to call it.
...info... may be any of the following commands:
	dialstr <sendstr> <expectstr>
		where <sendstr> is the string used to dial
		the modem. A %d in this string is replaced with
		the phone number to call.
	
		<expectstr> is the string that we should read back
		from the modem. A %b in this string is replaced with
		the current baud rate.

	resetstr <sendstr> <expectstr>
		where <sendstr> is the string used to reset
		the modem.
	
		<expectstr> is the string that we should read back
		from the modem after sending the resetstr.

	hangupstr <sendstr> <expectstr>
		where <sendstr> is the string used to hangup the phone.
	
		<expectstr> is the string that we should read back
		from the modem after sending the hangupstr.

	stopbits [12]
		number of stopbits to use. must be 1 or 2.

	databits [5678]
		number of databits to use. must be 5, 6, 7, or 8.

	device <name>
		name of device to use.

Next you probably need to add a new system definition.
A system is defined by:

	system <systemname>
		...info...
	end

where <systemname> is the name of the system you want to call.
There may be as many system and modem definitions as you desire.
The ...info... field may be any of the following commands:

	baudrate [2400, 9600, 19200, 38400]
		baudrate to use for calling this system. The baudrate
		must be 2400, 9600, or 19200, 38400.

	phone1	<phonestr>
		first phone number to try.

	phone2	<phonestr>
		second phone number to try if first busy.

	dialer <modemname>
		name of modem definition to use.

	timeout <seconds>
		number of seconds to wait for response.

	retries <n>
		number of times to retry after timeout.

	script
	   ...info...
	end
		...info... is either a script string sequence or
		a local/remote command.
	
		script strings are collections of send and response
		strings. They are in groups of three strings the
		first string is what to look for. The second is
		what to send after finding the first. And the third
		is what to send in case of timeout.
		
		a remote command is defined by the keyword
		'remote' followed by either the keyword 'wait' or
		'nowait'. A remote command is a command to exec
		on the local machine with stdin, stdout, and stderr
		connected to the modem. The wait/nowait command
		specifies whether to wait till the process terminates.

		a local command is similiar to a remote command
		except that the stdin. stdout, and stderr are NOT
		connected to the modem.

- pjs@raster.kodak.com  (but mail to this address bounces...)

- Stig@netcom.com (Jonathan Stigelman)
