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.