Upgrade to Taylor UUCP 1.04

This commit is contained in:
jtc 1993-08-04 19:29:38 +00:00
parent 695e42aaa5
commit 4b184f33d9
7 changed files with 2590 additions and 1134 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,298 +1,15 @@
# Generated automatically from Makefile.in by configure.
#
# This is the Makefile for Taylor UUCP
#
# $Id: Makefile,v 1.2 1993/08/02 17:24:59 mycroft Exp $
#
# The file Makefile.in should be processed by configure to generate
# Makefile. If you want to generate Makefile by hand, you must find
# all variables surrounded by @ and replace them with the correct
# value (e.g. gcc -O must be replaced by something like cc or gcc).
#
# Once you have done that, you should check the definitions at the top
# of this file to make sure that they are reasonable for your system.
# Prefix directory for installation directories.
prefix = /usr
SUBDIR= libunix libuucp libuuconf \
cu uuchk uucico uuconv uucp uulog uuname uupick uusched \
uustat uuto uux uuxqt
# The user name that should own the resulting executables, several of
# which are suid.
owner = uucp
owner= uucp
# Where to install uucico and uuxqt, and where to read configuration files
# from by default. If you use this definition, $(prefix)/lib must exist.
libdir = $(prefix)/libexec/uucp
beforeinstall:
install -d -o ${owner} ${DESTDIR}/var/spool/uucp
install -d -o ${owner} ${DESTDIR}/var/spool/uucppublic
# Where to install uucp, uux, uuchk, uustat, uuname and uulog.
bindir = $(prefix)/bin
# Where to install man pages. Section 1 for user programs, 8 for daemons.
man1dir = $(prefix)/share/man/cat1
man1ext = .0
man8dir = $(prefix)/share/man/cat8
man8ext = .0
# Where to install the info files.
infodir = $(prefix)/info
# The directory to look in for new style configuration files (when
# using HAVE_TAYLOR_CONFIG). Note that by default this is different
# from libdir, unlike traditional UUCP packages.
newconfigdir = /etc/uucp
# The directory to look in for BNU (when using HAVE_BNU_CONFIG) or
# V2 (when using HAVE_V2_CONFIG) style configuration files.
oldconfigdir = /etc/uucp
# If you don't want to compile tstuu, which requires BSD style ptys
# and the Taylor configuration files, comment out the following line
# The tstuu program is only used to test the package; it is described
# further in the documentation.
TSTUU = tstuu
#
# The next few lines are set up by the configuration script. You may
# want to look them over.
#
# If you do not have the mkdir system call, undefine the following three
# lines. This will install uudir as an suid root program. This is
# necessary because invoking /bin/mkdir from an suid program will
# leave the directories owned by the wrong user.
# UUDIR = uudir
# uudirdir = $(libdir)/util
# UUDIRFLAGS = -DUUDIR_PROGRAM=\"$(uudirdir)/$(UUDIR)\"
# Source directory and, if necessary, VPATH
srcdir = .
# Define programs and flags
CC = gcc -O
CFLAGS = -g
LDFLAGS =
LIBS =
ALLOCA =
INSTALL = /usr/bin/install -c
INSTALL_PROGRAM = $(INSTALL)
INSTALL_DATA = /usr/bin/install -c -m 644
LN_S = ln -s
#
# Nothing else to configure
#
SHELL = /bin/sh
VERSION = 1.03
MORECFLAGS = -I$(srcdir) -I. -DLIBDIR=\"$(libdir)\" -DNEWCONFIGLIB=\"$(newconfigdir)\" -DOLDCONFIGLIB=\"$(oldconfigdir)\" -DOWNER=\"$(owner)\" $(UUDIRFLAGS)
PROGRAMS = uucico uuxqt uux uucp uuchk uustat uuname uulog
UUOBJS = uucico.o prot.o protg.o protf.o prott.o prote.o config.o v2.o bnu.o \
file.o util.o sysinf.o prtinf.o time.o log.o chat.o port.o tcp.o \
parse.o copy.o sys1.o sys2.o sys3.o sys4.o version.o getopt.o \
$(ALLOCA)
XQTOBJS = uuxqt.o config.o v2.o bnu.o util.o sysinf.o prtinf.o log.o \
copy.o sys1.o sys3.o sys5.o version.o getopt.o $(ALLOCA)
UUXOBJS = uux.o config.o v2.o bnu.o util.o sysinf.o prtinf.o log.o \
copy.o sys1.o sys3.o sys6.o version.o getopt.o $(ALLOCA)
UUCPOBJS = uucp.o config.o v2.o bnu.o util.o sysinf.o prtinf.o log.o \
copy.o sys1.o sys3.o sys6.o version.o getopt.o $(ALLOCA)
UUCHKOBJS = uuchk.o config.o v2.o bnu.o util.o sysinf.o prtinf.o time.o \
log.o sys1.o version.o getopt.o $(ALLOCA)
UUSTATOBJS = uustat.o config.o v2.o bnu.o util.o sysinf.o prtinf.o \
log.o parse.o copy.o sys1.o sys3.o sys4.o sys5.o sys7.o version.o \
getopt.o $(ALLOCA)
UUNAMEOBJS = uuname.o config.o v2.o bnu.o util.o sysinf.o prtinf.o \
log.o sys1.o version.o getopt.o $(ALLOCA)
UULOGOBJS = uulog.o config.o v2.o bnu.o util.o sysinf.o prtinf.o \
log.o sys1.o version.o getopt.o $(ALLOCA)
TSTOBJS = tstuu.o version.o getopt.o $(ALLOCA)
ALLOBJS = uucico.o uuxqt.o uux.o uucp.o uuchk.o uustat.o uuname.o uulog.o \
uudir.o tstuu.o prot.o protg.o protf.o prott.o prote.o config.o v2.o \
bnu.o file.o util.o sysinf.o prtinf.o time.o log.o chat.o port.o \
tcp.o parse.o copy.o sys1.o sys2.o sys3.o sys4.o sys5.o sys6.o \
sys7.o version.o getopt.o
all: $(PROGRAMS) $(TSTUU) $(UUDIR)
install: $(PROGRAMS) uucp.info $(UUDIR)
-mkdir $(libdir) $(bindir)
-ln $(libdir)/uucico $(libdir)/uucico.old
-ln $(libdir)/uuxqt $(libdir)/uuxqt.old
rm -f $(libdir)/uucico $(libdir)/uuxqt
$(INSTALL_PROGRAM) uucico $(libdir)/uucico
$(INSTALL_PROGRAM) uuxqt $(libdir)/uuxqt
$(INSTALL_PROGRAM) uuchk $(libdir)/uuchk
chown $(owner) $(libdir)/uucico $(libdir)/uuxqt $(libdir)/uuchk
chmod 4555 $(libdir)/uucico $(libdir)/uuxqt
-if test "$(UUDIR)X" != "X"; then if test ! -d $(uudirdir); then mkdir $(uudirdir); fi; chown $(owner) $(uudirdir); chmod 100 $(uudirdir); $(INSTALL_PROGRAM) uudir $(uudirdir)/uudir; chown root $(uudirdir)/uudir; chmod 4555 $(uudirdir)/uudir; else true; fi
-ln $(bindir)/uux $(bindir)/uux.old
-ln $(bindir)/uucp $(bindir)/uucp.old
-ln $(bindir)/uustat $(bindir)/uustat.old
-ln $(bindir)/uuname $(bindir)/uuname.old
-ln $(bindir)/uulog $(bindir)/uulog.old
rm -f $(bindir)/uux $(bindir)/uucp $(bindir)/uustat
rm -f $(bindir)/uuname $(bindir)/uulog
$(INSTALL_PROGRAM) uux $(bindir)/uux
$(INSTALL_PROGRAM) uucp $(bindir)/uucp
$(INSTALL_PROGRAM) uustat $(bindir)/uustat
$(INSTALL_PROGRAM) uuname $(bindir)/uuname
$(INSTALL_PROGRAM) uulog $(bindir)/uulog
chown $(owner) $(bindir)/uux $(bindir)/uucp $(bindir)/uustat
chown $(owner) $(bindir)/uuname
chmod 4555 $(bindir)/uux $(bindir)/uucp $(bindir)/uustat
chmod 4555 $(bindir)/uuname
uninstall:
rm -f $(libdir)/uucico $(libdir)/uuxqt
-cp $(libdir)/uucico.old $(libdir)/uucico
-cp $(libdir)/uuxqt.old $(libdir)/uuxqt
-chown $(owner) $(libdir)/uucico $(libdir)/uuxqt $(libdir)/uuchk
-chmod 4555 $(libdir)/uucico $(libdir)/uuxqt
rm -f $(bindir)/uux $(bindir)/uucp $(bindir)/uustat
rm -f $(bindir)/uuname $(bindir)/uulog
-cp $(bindir)/uux.old $(bindir)/uux
-cp $(bindir)/uucp.old $(bindir)/uucp
-cp $(bindir)/uustat.old $(bindir)/uustat
-cp $(bindir)/uuname.old $(bindir)/uuname
-cp $(bindir)/uulog.old $(bindir)/uulog
-chown $(owner) $(bindir)/uux $(bindir)/uucp $(bindir)/uustat
-chown $(owner) $(bindir)/uuname
-chmod 4555 $(bindir)/uux $(bindir)/uucp $(bindir)/uustat
-chmod 4555 $(bindir)/uuname
uucico: $(UUOBJS)
$(CC) $(LDFLAGS) -o uucico $(UUOBJS) $(LIBS)
uuxqt: $(XQTOBJS)
$(CC) $(LDFLAGS) -o uuxqt $(XQTOBJS) $(LIBS)
uux: $(UUXOBJS)
$(CC) $(LDFLAGS) -o uux $(UUXOBJS) $(LIBS)
uucp: $(UUCPOBJS)
$(CC) $(LDFLAGS) -o uucp $(UUCPOBJS) $(LIBS)
uuchk: $(UUCHKOBJS)
$(CC) $(LDFLAGS) -o uuchk $(UUCHKOBJS) $(LIBS)
uustat: $(UUSTATOBJS)
$(CC) $(LDFLAGS) -o uustat $(UUSTATOBJS) $(LIBS)
uuname: $(UUNAMEOBJS)
$(CC) $(LDFLAGS) -o uuname $(UUNAMEOBJS) $(LIBS)
uulog: $(UULOGOBJS)
$(CC) $(LDFLAGS) -o uulog $(UULOGOBJS) $(LIBS)
tstuu: $(TSTOBJS)
$(CC) $(LDFLAGS) -o tstuu $(TSTOBJS) $(LIBS)
uudir: uudir.o
$(CC) $(LDFLAGS) -o uudir uudir.o $(LIBS)
.c.o:
$(CC) -c $(CFLAGS) $(MORECFLAGS) $<
.SUFFIXES: .unx
sysdep.h: sysh.unx
rm -f sysdep.h
$(LN_S) sysh.unx sysdep.h
.unx.c:
rm -f $@
$(LN_S) $< $@
clean:
rm -f $(ALLOBJS) uucico uuxqt uux uucp uuchk tstuu
rm -f uucp-$(VERSION).tar.Z
rm -rf uucp-$(VERSION)
# The distribution targets are mostly for my own use; they are not
# expected to work on other systems.
dist: uucp.info conf.h-dist
-rm -rf uucp-$(VERSION)
-rm -f taylor-uucp-$(VERSION).tar taylor-uucp-$(VERSION).tar.Z
mkdir uucp-$(VERSION)
ln `cat MANIFEST` uucp-$(VERSION)
rm -f uucp-$(VERSION)/policy.h uucp-$(VERSION)/Makefile.in
cp policy.h Makefile.in uucp-$(VERSION)
chmod 0644 uucp-$(VERSION)/policy.h uucp-$(VERSION)/Makefile.in
mkdir uucp-$(VERSION)/contrib
ln contrib/* uucp-$(VERSION)/contrib
tar -cvf taylor-uucp-$(VERSION).tar uucp-$(VERSION)
compress taylor-uucp-$(VERSION).tar
uucp.info: uucp.texi
makeinfo uucp.texi
conf.h-dist: conf.h
cp conf.h conf.h-dist
conf.h Makefile: configure
configure
Makefile: Makefile.in
configure: configure.in
autoconf
# GNU standards want these targets
mostlyclean: clean
realclean: clean
rm conf.h
TAGS:
etags *.h *.c
# Header file dependencies. These are maintained by hand.
uucico.o: uucp.h conf.h policy.h system.h prot.h port.h sysdep.h uutime.h
uucico.o: getopt.h
uuxqt.o: uucp.h conf.h policy.h system.h getopt.h sysdep.h
uux.o: uucp.h conf.h policy.h system.h getopt.h sysdep.h
uucp.o: uucp.h conf.h policy.h system.h getopt.h sysdep.h
uuchk.o: uucp.h conf.h policy.h port.h sysdep.h system.h uutime.h getopt.h
uustat.o: uucp.h conf.h policy.h system.h sysdep.h getopt.h
uuname.o: uucp.h conf.h policy.h system.h sysdep.h getopt.h
uulog.o: uucp.h conf.h policy.h system.h sysdep.h getopt.h
tstuu.o: uucp.h conf.h policy.h sysdep.h getopt.h
uudir.o: uucp.h conf.h policy.h sysdep.h
prot.o: uucp.h conf.h policy.h system.h prot.h port.h sysdep.h
protg.o: uucp.h conf.h policy.h system.h prot.h port.h sysdep.h
protf.o: uucp.h conf.h policy.h prot.h port.h sysdep.h system.h
prott.o: uucp.h conf.h policy.h prot.h port.h sysdep.h system.h
prote.o: uucp.h conf.h policy.h prot.h port.h sysdep.h system.h
config.o: uucp.h conf.h policy.h system.h sysdep.h
v2.o: uucp.h conf.h policy.h port.h sysdep.h
bnu.o: uucp.h conf.h policy.h port.h sysdep.h
file.o: uucp.h conf.h policy.h system.h
util.o: uucp.h conf.h policy.h
sysinf.o: uucp.h conf.h policy.h system.h port.h sysdep.h uutime.h
time.o: uucp.h conf.h policy.h uutime.h
log.o: uucp.h conf.h policy.h system.h
chat.o: uucp.h conf.h policy.h system.h port.h sysdep.h
port.o: uucp.h conf.h policy.h port.h sysdep.h
tcp.o: uucp.h conf.h policy.h port.h sysdep.h system.h
prtinf.o: uucp.h conf.h policy.h port.h sysdep.h
parse.o: uucp.h conf.h policy.h
copy.o: uucp.h conf.h policy.h system.h sysdep.h
sys1.o: uucp.h conf.h policy.h system.h sysdep.h
sys2.o: uucp.h conf.h policy.h system.h port.h sysdep.h
sys3.o: uucp.h conf.h policy.h system.h sysdep.h
sys4.o: uucp.h conf.h policy.h system.h sysdep.h
sys5.o: uucp.h conf.h policy.h system.h sysdep.h
sys6.o: uucp.h conf.h policy.h system.h sysdep.h
sys7.o: uucp.h conf.h policy.h system.h sysdep.h
version.o: uucp.h conf.h policy.h
getopt.o: getopt.h
alloca.o: uucp.h conf.h policy.h
.include <bsd.subdir.mk>

View File

@ -0,0 +1,30 @@
.if exists(${.CURDIR}/../libunix/obj)
LIBUNIX= $(.CURDIR)/../libunix/obj/libunix.a
.else
LIBUNIX= $(.CURDIR)/../libunix/libunix.a
.endif
.if exists(${.CURDIR}/../libuuconf/obj)
LIBUUCONF= $(.CURDIR)/../libuuconf/obj/libuuconf.a
.else
LIBUUCONF= $(.CURDIR)/../libuuconf/libuuconf.a
.endif
.if exists(${.CURDIR}/../libuucp/obj)
LIBUUCP= $(.CURDIR)/../libuucp/obj/libuucp.a
.else
LIBUUCP= $(.CURDIR)/../libuucp/libuucp.a
.endif
VERSION= 1.04
owner= uucp
bindir= /usr/bin
sbindir= /usr/libexec/uucp
# The directory to look in for new style configuration files (when
# using HAVE_TAYLOR_CONFIG).
newconfigdir= /etc/uucp
# The directory to look in for BNU (when using HAVE_BNU_CONFIG) or
# V2 (when using HAVE_V2_CONFIG) style configuration files.
oldconfigdir= /etc/uucp

View File

@ -1,14 +1,15 @@
This is the README file for version 1.03 of the Taylor UUCP package.
This is the README file for version 1.04 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.
or, equivalently, uunet!cygint!airs!ian, or c/o Cygnus Support, 4th
Floor, Building 200, 1 Kendall Square, Cambridge MA, 02139, USA.
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.
There is a mailing list for discussion of the package. To join (or
get off) the list, send mail to taylor-uucp-request@gnu.ai.mit.edu.
Mail to this address is answered by a person, not a program. When
joining the list, make sure you include the address at which you want
to receive mail in the body of your message. 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
@ -19,23 +20,26 @@ 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).
of uucico, uusched, uuxqt, uux, uucp, uustat, uulog, uuname, uuto,
uupick, and cu, as well as uuchk (a program to check configuration
files), uuconv (a program to convert from one type of configuration
file to another) 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).
sizes), 'G', 't' and 'e' protocols, as well a Zmodem protocol and two
new bidirectional protocols. If you have a Berkeley sockets library,
it can make TCP connections. If you have TLI libraries, it can make
TLI 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.
It uses significantly less CPU time than many 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.
@ -43,9 +47,10 @@ The package has a few advantages over regular UUCP:
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.
If you are talking to another instance of the package, you can use
the new bidirectional protocol for rapid data transfer in both
directions at once. You can also restrict file transfers by size
based on the time of day and who placed the call.
On the other hand:
@ -53,129 +58,99 @@ On the other hand:
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.
You don't get uuclean, uusend, uuq, uusnap, uumonitor, uutry,
uupoll, etc. If you have current copies of these programs, you
may be able to use them. Shell scripts versions of uuclean and
uutry are provided, with most, if not all, of the functionality of
the usual programs. I believe the supplied uustat program allows
you to do everything that uuq, uusnap and uumonitor do. uupoll
could be written as a shell script.
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
The package cannot use SCO 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
CHANGES SINCE 1.03
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.
For a complete list, see ChangeLog.
IMPORTANT: the default when talking to another version of 1.04 is to
use the new bidirectional 'i' protocol. If you are using a
half-duplex modem, such as a Telebit T2500, you will want to either
mark the port as half-duplex with the ``half-duplex'' command, or
force use of the 'g' protocol by using the ``protocol'' command in the
sys or port file or by adding ``,g'' after the port name in the
Systems or L.sys or Devices file.
As usual, many bugs were fixed.
Several useful and interesting programs and scripts are provided
in the contrib directory. See contrib/README for details.
Bidirectional transfers are supported with the new 'i' protocol;
it requires an eight-bit clear datapath.
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.
New programs: uusched, cu, uuto and uupick.
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 'G' protocol and a new Zmodem protocol were added.
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).
A number of uustat options were added to support uuclean, and a
sample uuclean shell script was added to the contrib directory.
The uustat output formats were changed slightly.
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.
A protocol extension eliminates transfer of the command file for
simple commands, such as rmail or rnews, when talking to another
version of 1.04.
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.
Some TLI support was added.
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.
UUCP forwarding was added, along with the ``forward-to'',
``forward-from'' and ``forward'' commands.
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.
If a file transfer fails in the middle, the retry will now start
from where it left off. The implementation is compatible with
SVR4.
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.
The work queue is checked every 10 minutes during a conversation;
if there is new work and a bidirectional protocol is not in use,
the receiving uucico requests the sender to transfer control.
A new status type, ``wrong time to call'' is now be written to the
system status file.
The amount of free disk space is checked periodically as a file is
received, and if it drops too low the call is aborted.
The configuration files may now continue lines by using a
backslash as the last character of the line.
The UUCP configuration file reading routines were moved into a
standalone library, uuconf. All known bugs in V2 and HDB
configuration file reading were fixed.
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.
The ``half-duplex'' command was added for the port and dialer
files.
A new ``lockname'' command was added to the port file to allow
control over the lock file name used for that port.
The ``max-retries'', ``success-wait'', ``send-request'' and
``receive-request'' commands were added for the sys file. The
``call-request'' and ``called-request'' commands were eliminated
(they did not work correctly anyhow).
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.
\d in chat scripts now calls sleep (2) rather than sleep (1), so
it will sleep longer (on some systems sleep(1) may delay much less
than one second).
A retry time can now be specified with the ``time'' or
``timegrade'' commands.
SPOOLDIR_SVR4 was added for SVR4 style spool directories.
A name may now be given to an alternate; this name will appears in
the log file when the alternate is used.
Defaults are now permitted in the port and dialer files.
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.
The ALIAS field is supported in the HDB Permissions file.
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.
texinfo.tex. DVI, PostScript and info versions of the documentation
are available in a separate package, uucp-doc-1.04.tar.Z.
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
@ -189,8 +164,7 @@ The compilation instructions are in uucp.texi. Here is a summary.
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
CC: C compiler to use; default is gcc if it exists, else cc
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
@ -200,9 +174,26 @@ The compilation instructions are in uucp.texi. Here is a summary.
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.
The configure script will create conf.h from conf.h.in and
Makefile from Makefile.in. It will also create config.status,
which is a shell script which actually creates the files. Please
report any configuration problems, so that they can be fixed in
later versions.
Igor V. Semenyuk provided this (lightly edited) note about ISC
Unix 3.0. The configure script will default to passing -posix to
gcc. However, using -posix changes the environment to POSIX, and
on ISC 3.0, at least, the default for POSIX_NO_TRUNC is 1. This
means nothing for uucp, but can lead to a problem when uuxqt
executes rmail. IDA sendmail has dbm configuration files named
mailertable.{dir,pag}. Notice these names are 15 characters long.
When uuxqt compiled with -posix executes rmail, which in turn
executes sendmail, the later is run under POSIX environment too!
This leads to sendmail bombing out with 'error opening 'M'
database: name too long' (mailertable.dir). It's rather obscure
behaviour, and it took me a day to find out the cause. I don't
use -posix, instead I run gcc with -D_POSIX_SOURCE, and add
-lcposix to LIBS.
Examine conf.h and Makefile to make sure they're right.
@ -210,6 +201,7 @@ The compilation instructions are in uucp.texi. Here is a summary.
Type ``make''.
Use ``uuchk'' to check configuration files.
Use ``uuchk'' to check configuration files. You can use
``uuconv'' to convert between configuration file formats.
Type ``make install'' to install.

View File

@ -1,7 +1,14 @@
Things to do for the Taylor UUCP package. This list includes some of
my thoughts, but is mostly suggestions from the net. They are in no
particular order. Some of the numbers that were in here have been
removed.
This is a list of things to do for the Taylor UUCP package. Please
feel free to work on any of them. You may want to check with me first
to make sure that nobody else is working on them as well.
Some of these are my thoughts, but most are suggestions from other
people; I have tried to give credit. They are in the order I received
them; the missing numbers have already been implemented.
Just because something is on the list doesn't mean that I necessarily
think it is a good idea. It does mean that I think it's worth
thinking about.
2.
@ -14,25 +21,6 @@ John Cowan <cowan@snark.thyrsus.com> says:
Of course, getdate() accepts a single date, but we want a range. A
better syntax would be certainly be nice.
4.
John R MacMillan <chance!john@sq.sq.com> mentions the HDB notion of
services; something like this should be added whenever I get around to
writing a version of cu.
6.
T. William Wells <bill@twwells.com> says:
>Something related that might be useful: when calling the other
>system, at certain times I do not want the other system to gain
>control and begin to send files. If that worked, I could call
>them for e-mail without worrying about getting my newsfeed at
>daytime rates. Unfortunately, I can't ask them to batch me at
>night only; my site gets a multibatch. Note that call-timegrade
>would do as well, provided that the other system respects it but
>I have no way to know that, other than by trying it.
9.
Gordon Burditt <gordon@sneaky.lonestar.org> warns about modifications
@ -97,54 +85,17 @@ The -b and -s switches to uux are not implemented by uuxqt.
If we are supposed to call a system back, we should do it immediately
rather than merely queuing up an empty command file.
19.
Should there be some way to specify the maximum number of retries for
each system using the new configuration scheme? The maximum number of
retries is currently a compilation parameter.
20.
Write some protocols that support bidirectional transfers.
James Gardiner says:
> MHSnet has this but with also 3 channels per direction. Each channel
> sends different size packets. This alows mail, which is usually smaller,
> to overtake news or big files. Mail being the more important.
> However, with high speed modems, this is no so important.
21.
Support transfers through systems using uucp and uux. Implement the
``forward-to'' command to allow control of these transfers.
22.
Add an ftp port type which uses anonymous ftp rather than any of the
UUCP protocols to do file transfers. This would allow ftp work to be
done late at night.
23.
If we don't permit command execution, we still want to delete the work
files we've been given for the command.
24.
Running uucico as a TCP server doesn't work right because only root
can bind a port less than 1024. This is checked by effective user id,
and our effective user id is always uucp. If we have saved set user
id we could switch the effective user id to root and then back again;
otherwise we have to not use setuid and start the program as root.
Actually, we could use another program to start as root, bind the
port, and invoke uucico. Or we could use a setuid program and pass
the file descriptor back using a socketpair. Or we could just use
inetd.
done late at night, and allow neighbors of cooperative Internet sites
to use UUCP forwarding for anonymous FTP.
31.
David Nugent: add a -C option to uucico to only call the system if
there was work to do.
there is work to do.
32.
@ -168,51 +119,26 @@ So how do you sort the lines? You could just use the index in the
port (or Devices) file, but what if multiple ports used the same
physical device? Hmmm.
33.
David Nugent: allow the minimum wait time to be specified for a
system, such that calls to that system are not made more frequently
than, say, once an hour.
34.
Bob Izenberg: HDB UUCP will retry a call once if it fails. This can
be done in my system by adding an alternate and repeating the phone
number. Should there be a configuration parameter to do it in a
simpler way?
43.
David Nugent: it would be nice to be able to set debugging, log, and
statistics files on a site by site basis.
Brian Murrell: heck, set those files on a port by port basis as well.
74.
Yanek Martinson: allow each system to independently choose whether to
permit shell execution.
75.
Mike Park: we should accept an Shere=foo message with an alias of the
system we are calling.
81.
Marty Shannon: log reason for dial failure (chat-fail string) in
.Status file.
82.
Support restart of failed transfers a la SVR4 UUCP.
83.
Switch between 'M' and 'S' correctly in the BNU log file output.
85.
Les Mikesell: add TLI and TLIS connection ability.
86.
Les Mikesell: allow a separate program to be specified to handle the
@ -229,16 +155,10 @@ every 1000 lines or so.
Marty Shannon: add a time command for ports, to specify when they may
be used.
112.
Franc,ois Pinard: allow defaults to appear at the top of the dial file
(and presumably of the port file as well).
115.
T. William Wells: new options for uustat:
-i display job ids only
-K interactively kill jobs
Also, there should perhaps be a configuration option to request uustat
to only display jobs submitted by the user running uustat, except for
root and uucp.
@ -256,12 +176,6 @@ Jarmo Raiha: new chat-fail commands: one to not update the status file
and require a retry wait, and one to permit the string to occur a few
times before reporting an error.
121.
Jarmo Raiha: uucp and uux fail to copy a file that is not world
readable, because they are running under the wrong euid. They should
switch back and forth as necessary.
124.
Peter da Silva: perhaps there should be a ``chat-end-program'' command
@ -285,30 +199,6 @@ Use POSIX fcntl locks when possible instead of creating a lock file.
Chip Salzenberg: BSD lets you override the timeout for a particular
expect string by using a trailing ~.
132.
Franc,ois Pinard: cut the total number of 'g' protocol errors by some
fraction every X bytes. T. William Wells: only abort if you get a
certain percentage of errors out of a certain number of packets.
134.
Chip Salzenberg: give .XQTDIR a mode of 0700 and the files put into it
a mode of 0444.
136.
Thomas Fischer: every so often (1/2 hour) check to see whether there
is any high grade work to be done and process it. This should happen
even on the slave, which means the slave needs some way to ask the
master to hang up. I think some uucico's do this by sending CYM.
137.
Support control over local executions by recognizing the local system
name in the configuration file. Think about what is needed to use the
same configuration files on multiple systems.
138.
T. William Wells: BNU apparently uses a file named A.whatever to hold
@ -324,11 +214,6 @@ Patrick Smith: incorporate patches to generate full debugging traces
with less debugging file overhead. The debugging file repeats too
much information at great length right now--not good.
140.
Mark Pizzolato: put in the newer, better, 'g' protocol checksum
calculation routine.
141.
Franc,ois Pinard: batch up pauses and delays in chat scripts and do
@ -344,11 +229,6 @@ fairly easy to do for any type of command. I think uucico does all
the file checking needed to ensure that this doesn't break security,
but that should be double-checked.
143.
David J. MacKenzie: write a program to convert between the various
different configuration styles. This should not be too difficult.
144.
T. William Wells: add a -g option to uucico to permit specifying the
@ -384,3 +264,310 @@ specific one, will wipe out the default entry. Not sure what can be
done about this.
150.
Jarmo Raiha: should there be some way to specify modem initialization
strings when uucico is hanging on a port with -l or -e? This would
presumably require a new type of chat script associated with a dialer.
151.
Petri Helenius: log complete CONNECT string reported by modem, so that
the baud rate is recorded in the log file.
152.
Marc Evans: let the protocol selection be based on the CONNECT string,
so that different protocols could be selected based on what type of
connection was made.
153.
Chris Lewis: provide a signal to get a core dump even on systems which
won't do core dumps if the uid is not the euid. One could catch a
signal, call setuid (getuid ()), and then raise the signal again.
Unfortunately the core dump has to wind up in a directory which is
world writable, so that the process is able to create the core file,
but is not world readable, since that would permit anybody to read the
core dump file and extract private information from it.
154.
Les Mikesell: write a new version of dial.o, with provisions for
running a chat script.
155.
Scott Blachowicz: perhaps there should be some way to telling uucico
to not log certain errors. This could get fairly complex, though.
156.
Franc,ois Pinard: have uustat -m report the time of the last
successful conversation when reporting a failure.
158.
Thomas Fischer: should there be a way to completely disable an entry
in the sys, port or dial file? Such as a ``disable'' command?
159.
Petri Helenius: when uuxqt -s is invoked, lock uuxqt for the system so
that only one uuxqt is invoked per system. If the -c option is used,
don't lock on a per system basis, and ignore any per system locks
(regardless of -s). If neither option is used, respect existing
system and command locks, and do any other type of file.
161.
Scott Blachowicz: provide some sort of include mechanism for the
configuration files.
162.
Chris Lewis: add uuxqtpolicy command, probably in config, supporting
the following values which determine when uuxqt should be run:
- never (let cron or something else worry about it)
- perinvocation (when uucico exits for good - current behaviour)
- persite (when uucico terminates a conversation - HDBish)
- periodic (per 5 or 10 incoming X. files - BSDish)
- perturnaround?
163.
Sort jobs in the send queue by size. Pretty easy.
164.
Ed Carp: preserve files if uuxqt execution fails.
165.
Marc Sheldon: use exit codes from <sysexits.h> in uux and uucp.
166.
Chip Salzenberg: allow chat failure strings to specify a retry time.
167.
Gregory Bond: allow a dialer sequence for a TCP port, so you can make
a TCP connection to a modem and then dial out.
168.
Jose A. Manas: allow a maximum connect time, after which we try to
hang up the connection. This requires a protocol extension, since
there's no way to force the other side to hang up. The best we can do
without an extension is refuse to send any new jobs ourselves. Of
course, we could just drop the connection.
169.
Franc,ois Pinard: when given uustat -k00FC, check each possible job ID
and use it if there is an unambiguous one.
170.
T. William Wells: if ! HAVE_SETREUID && ! HAVE_SAVED_SETUID, fork a
subprocesses to revoke setuid and read the file over a pipe.
171.
Provide some option to have the internal uuconf functions not start
with an underscore.
172.
T. William Wells: have some way to configure the parity for cu.
173.
Gert Doering: uuchk should display unknown system information.
175.
T. William Wells:
Cu will not let itself be interrupted before the connection is
established. If the chat script doesn't write something, cu does
something odd, I've forgotten exactly what. Cu takes an
inordinate amount of time after the line drops to exit. Somebody,
cu, I think, but maybe uucico, drops dtr twice sometimes. Again,
somebody will attempt to write after a hangup signal has been
received. Once a hangup has been received, I/O should not be
attempted. Among other things this will save the bacon of those
who have brain damaged serial drivers (FAS, sigh, is among them)
that don't handle output properly on a dropped line.
Me:
Note that sometimes you do want to write to a line after receiving a
hangup signal. For example, you might want to use ATZ to reset a
modem.
176.
Hans-Dieter Doll: provide some way (another escape sequence) to pass
the protocol to a chat-program. Or, allow the protocol as an argument
to the chat script command, which is more general, but maybe a bit too
fancy.
177.
Nickolay Saukh: use a default port for cu, you can just do ``cu
number''.
178.
Don Phillips: should there be some way to restrict of grade of
transfers even when the other system places the call?
179.
Nickolay Saukh: add something to chat scripts to specify the timeout
for an expect string, e.g. AT\c OK\W3 to wait for 3 seconds. Except
that perhaps the unit should not be seconds. Berkeley apparently uses
~number, not \W number, but I don't see any reason to prevent use of
the ~ character in an expect string.
180.
Nickolay Saukh: if we have received a partial file, request the remote
system to start sending from that point. We currently accept SVR4
style remote file positioning requests, but we do not generate them.
181.
Mark Powell: provide some way to restrict file transfer by size as
well as grade? One way would be to let uux select the grade based on
the file size.
182.
Mark Powell: permit using multiple timetables in a single time
statement.
183.
Optionally check for interrupts in fcopy_file, since it can take a
long time to copy a file named in a uucp request.
184.
Ian Moran: if an attempt is made to a copy a file to a directory which
denies write permission, perhaps the file should be saved somewhere.
It must be saved in a private location, though.
185.
A syntax error in a command received from the remote system should not
hold up the queue. Unfortunately, I don't know what can be done
except deny the command and report it. Reporting a garbled command
error should report the command correctly, rather than just the first
character.
186.
Franc,ois Pinard: have an option to control nostop vs. stop on the cu
command line.
187.
Fix the notion of %nostop to be SVID compatible.
188.
Frank Conrad: provide a means to set the strip mode for a port, to
make it easy to use it from cu.
189.
Marc Unangst: there should be a way to specify that a system should
only be called if there are jobs of a certain grade, but if the system
is called then jobs of any grade should be transferred. This
basically means splitting the ``timegrade'' command into two commands:
``place-call-timegrade'' and ``transfer-timegrade''. Or maybe another
optional argument to ``timegrade'':
timegrade grade time-string [retry] [transfer-any]
not to mention
time time-string [retry] [transfer-any]
Or maybe a separate command for a system or port like
transfer-any BOOL
190.
Chip Salzenberg: it would be really nice if uucico could automatically
figure out when it could use an E command, so that uux didn't have to
generate it and so that uucico could use with other versions of uux.
Unfortunately, it would require uucico to read the execution file to
see if it were suitable; this would be complex, but it would probably
be worth it since normally the execution file would wind up not being
sent. Of course, the current method works too; it's just harder to
combine with other versions of UUCP.
191.
Brian J. Murrell: should there be a way to cu a specific alternate?
192.
Andrew A. Chernov: Perhaps cu -pport system should be able to try
different alternates for the system, because there might be different
phone numbers to try.
193.
Brian J. Murrell: it would be nice to be able to ^C a cu chat script
if you know it's going to fail. Right now you have to use ^\.
194.
Steven S. Dick: have some way to force uucico off the phone at a
certain time. If that is done, it might be cool to have some way to
predict how long a file transfer will take, and not do it if it will
take too long. But, if doing file restart, you can just quit and then
pick it up later.
195.
Franc,ois Pinard: if the disk fills up, or some other error occurs,
while receiving a file, perhaps it would make sense to turn the
connection around immediately and see if the other side had anything
to do, and then try again later. This would require a protocol
extension. I don't know if it's worth it. The code should be checked
to see how well it handles a disk full situation.
196.
For real adjustability, provide some mechanism for picking the lead
characters to use for the shell scripts, between : and #!.
197.
Try alternate IP addresses if there are any.
198.
Lele Gaifax: mention the device in Stats, and provide some way to
associate the entry in Log with the entry in Stats.
199.
Michael Richardson: provide some way to turn on parity for the login
chat, since some systems apparently require it. Provide some way for
cu to control parity after connecting.
200.
Chip Salzenberg: add max-remote-debug to config.
201.
Gert Doering: change the timeout message in chat scripts to reflect
which chat script timed out (dialer or login).
202.
Bill Foote: have uuchk check whether a system is defined more than
once.
203.

4
gnu/libexec/uucp/VERSION Normal file
View File

@ -0,0 +1,4 @@
Version 1.04
a complete, unmodified version of this program is available from
prep.ai.mit.edu.

File diff suppressed because it is too large Load Diff