This is the README file for version 1.03 of the Taylor UUCP package.
It was written by Ian Lance Taylor. I can be reached at ian@airs.com,
or, equivalently, uunet!airs!ian, or c/o Infinity Development, P.O.
Box 520, Waltham MA, 02254.
There is a mailing list for discussion of the package. To join the
list, send a message to taylor-uucp-request@gnu.ai.mit.edu. Make sure
you include the address at which you want to receive messages; do not
rely on the From: header. To send a message to the list, send it to
taylor-uucp@gnu.ai.mit.edu.
This package is covered by the Gnu Public License. See the file
COPYING for details. If you would like to do something with this
package that you feel is reasonable but you feel is prohibited by the
license, contact me to see if we can work it out.
WHAT IT IS
This is the complete source code for a Unix UUCP package. It provides
everything you need to make a UUCP connection. It includes versions
of uucico, uuxqt, uux, uucp, uustat, uulog and uuname, as well as
uuchk (a program to check configuration files) and tstuu (a test
harness for the package).
The Free Software Foundation plans to make this their standard UUCP
package.
The package currently supports the 'f', 'g' (in all window and packet
sizes), 't' and 'e' protocols. If you have a Berkeley sockets
library, it can make TCP connections. It supports a new configuration
file mechanism which I like (but other people dislike).
The package has a few advantages over regular UUCP:
You get the source code.
It uses significantly less CPU time than most UUCP packages.
You can specify a chat script to run when a system calls in,
allowing adjustment of modem parameters on a per system basis.
You can specify failure strings for chat scripts, allowing the
chat script to fail immediately if the modem returns ``BUSY''.
If you are talking to another instance of the package, you can
restrict file transfers by size based on the time of day and who
placed the call.
On the other hand:
It only runs on Unix. The code is carefully divided into system
dependent and system independent portions, so it should be
possible to port it to other systems. It would not be trivial.
You don't get uusched, uuclean, uusend, uuq, uusnap, uumonitor,
uuto, uupick, uutry, uupoll, etc. If you have current copies of
these programs, you may be able to use them. I expect to
eventually write some form of uusched and uuclean, though uuclean
especially may not resemble the usual version. I believe the
supplied uustat program allows you to do everything that uuq,
uusnap and uumonitor do. uuto, uupick, uutry and uupoll can be
done as shell scripts.
The package does not read modemcap or acucap files, although you
can use V2 configuration files with a BNU Dialers file or a dialer
file written in my new configuration file format.
The package cannot use BNU dialer programs directly, although it
can with a simple shell script interface.
There is no TLI support. Hopefully by the next version.
If you start using this package, I suggest that you join the mailing
list (see above) to keep up to date on patches and new versions. I am
also open to suggestions for improvements and modifications.
CHANGES SINCE 1.02
For a complete list, see ChangeLog. The man pages are only partially
updated for the beta release of 1.03. There is currently no man page
for uustat, uuname or uulog.
As usual, many bugs were fixed.
Several useful and interesting programs and scripts are provided
in the contrib directory. See contrib/README for details.
The programs uustat, uulog and uuname were added. uucp and uux
support a -j switch to provide a jobid which uustat can use to
remove the job.
Configuration can now mostly be done automatically by a shell
script. Adminstrative choices, as well as a few system parameters
the shell script cannot figure out, are made by editing a new
header file.
The code was successfully tested on a System III machine with a 16
bit processor (with segments; it would take work to pare the
executable size down to 64K).
Security was enhanced significantly. It should no longer be
possible to uucp a file to which the user does not have read
access. When accepting a uucp from a remote system, the
destination directory must be world writeable.
If a file cannot be sent to a remote system for some reason, it is
saved in a directory (typically /usr/spool/uucp/.Preserve) so the
UUCP administrator can do something with it.
Signal handling was improved and made much more reliable. uucico
will now handle a SIGHUP signal by terminating the current
session; if appropriate, it will go on to call another system.
uucico will attempt to acquire the communication port as a
controlling terminal in order to receive the SIGHUP. If uucico
receives a SIGINT signal, it will let the current session finish
but not start any new ones. If uuxqt receives a signal, it will
let the current job finish but not start any new ones. If uucp or
uux receive a signal, they will clean up any files they may have
created.
Debugging was improved, and individual types of debugging can now
be selected by name. The following types are known: chat,
handshake, protocol, port, config, spooldir, execute, incoming,
outgoing.
uucico and uuxqt may now be replaced by shell scripts even on
systems which can not exec shell scripts; the shell will be
invoked if necessary.
A new status type, ``wrong time to call'' is now be written to the
system status file.
The configuration files may now continue lines by using a
backslash as the last character of the line.
A new ``max-uuxqts'' command was added to the configuration file
to control that maximum number of uuxqt processes which may
execute simultaneously. If the code is compiled to support only
BNU configuration files, it will read the Maxuuxqts file to get
this value.
A new ``lockname'' command was added to the port file to allow
control over the lock file name used for that port.
A new ``protocol'' command was added to the port file to allow a
port to specify which protocols which should be used over it.
This allows support of the similar feature in the BNU Devices
file.
A retry time can now be specified with the ``time'' or
``timegrade'' commands.
A name may now be given to an alternate; this name will appears in
the log file when the alternate is used.
The TCP server code is somewhat more robust, but still has no way
to bind a reserved port.
The -U flag (maximum file size) produced by SVR4 UUCP is now
recognized and supported; Taylor UUCP will not produce it, as it
uses other mechanisms. File restart is not supported yet.
The default 'g' protocol window size was changed to 7.
The log file now records the port used on outgoing calls and the
login name and port used on incoming calls.
DOCUMENTATION
The documentation is in the file uucp.texi, which is a Texinfo file.
Texinfo is a format used by the Free Software Foundation. You can
print the documentation using TeX in combination with the file
texinfo.tex; neither are provided, but both are fairly readily
available. You can also read it as an Info file with GNU Emacs. If
these programs are not available, don't despair; the files
uucp.info-*, which were generated from uucp.texi by the GNU makeinfo
program, are easily readable by humans.
See the TODO file for things which should be done. Please feel free
to do them, although you may want to check with me first. Send me
suggestions for new things to do.
The compilation instructions are in uucp.texi. Here is a summary.
Edit Makefile.in to set installation directories.
Type ``sh configure''. You can pass a number of arguments in the
environment (using bash or sh, enter something like ``CC=gcc
configure''; using csh, enter something like ``setenv CC gcc; sh
configure''):
CC: C compiler to use; default is gcc -O if it exists, else cc
DEFS: Flags to pass to $CC for configure testing only; default none
CFLAGS: Flags to pass to $CC when compiling; default -g
LDFLAGS: Flags to pass to $CC when only linking; default none
LIBS: Library arguments to pass to $CC; default none
INSTALL: Install program; default install -c or cp
INSTALLDATA: Install data; default install -c -m 0644 or cp
The configure script will compile a number of test programs to see
what is available on your system, so if your system is at all
unusual you will need to pass in $CC and $LIBS correctly.
The configure script will create conf.h, and copy Makefile.in to
Makefile with substitutions. It will also create config.status,
which may be ignored.
Examine conf.h and Makefile to make sure they're right.
Edit policy.h for your local system.
Type ``make''.
Use ``uuchk'' to check configuration files.
Type ``make install'' to install.