8833 lines
375 KiB
Diff
8833 lines
375 KiB
Diff
Description: Changes from previous version
|
||
This patch contains all changes from previous versions.
|
||
Author: Thorsten Alteholz <debian@alteholz.de>
|
||
--- a/uucico.c
|
||
+++ b/uucico.c
|
||
@@ -125,6 +125,9 @@ struct spass
|
||
struct sconnection *qconn;
|
||
};
|
||
|
||
+/* min. grade set on commandline */
|
||
+static char cmdlgrade = '\0';
|
||
+
|
||
/* Local functions. */
|
||
|
||
static void uusage P((void));
|
||
@@ -175,6 +178,7 @@ static const struct option asLongopts[]
|
||
{ "nodetach", no_argument, NULL, 'D' },
|
||
{ "loop", no_argument, NULL, 'e' },
|
||
{ "force", no_argument, NULL, 'f'},
|
||
+ { "grade", required_argument, NULL, 'g'},
|
||
{ "stdin", required_argument, NULL, 'i' },
|
||
{ "prompt", no_argument, NULL, 'l' },
|
||
{ "port", required_argument, NULL, 'p' },
|
||
@@ -249,9 +253,9 @@ main (argc, argv)
|
||
++zProgram;
|
||
|
||
#if COHERENT_C_OPTION
|
||
- zopts = "c:CDefi:I:lp:qr:s:S:u:x:X:vwz";
|
||
+ zopts = "c:CDefg:i:I:lp:qr:s:S:u:x:X:vwz";
|
||
#else
|
||
- zopts = "cCDefi:I:lp:qr:s:S:u:x:X:vwz";
|
||
+ zopts = "cCDefg:i:I:lp:qr:s:S:u:x:X:vwz";
|
||
#endif
|
||
|
||
while ((iopt = getopt_long (argc, argv, zopts,
|
||
@@ -293,6 +297,14 @@ main (argc, argv)
|
||
fforce = TRUE;
|
||
break;
|
||
|
||
+ case 'g':
|
||
+ /* Force a grade */
|
||
+ if (isalpha(optarg[0]))
|
||
+ cmdlgrade = optarg[0];
|
||
+ else
|
||
+ fprintf (stderr, "%s: invalid grade \n", zProgram);
|
||
+ break;
|
||
+
|
||
case 'i':
|
||
/* Type of port to use for standard input. Only TLI is
|
||
supported here, and only if HAVE_TLI is true. This
|
||
@@ -796,6 +808,7 @@ uhelp ()
|
||
printf ("Usage: %s [options]\n", zProgram);
|
||
printf (" -s,-S,--system system: Call system (-S implies -f)\n");
|
||
printf (" -f,--force: Force call despite system status\n");
|
||
+ printf (" -g,--grade: limit outgoing call to a given grade\n");
|
||
printf (" -r state: 1 for master, 0 for slave (default)\n");
|
||
printf (" --master: Act as master\n");
|
||
printf (" --slave: Act as slave (default)\n");
|
||
@@ -1369,12 +1382,18 @@ fdo_call (qdaemon, qstat, qdialer, pfcal
|
||
boolean fret;
|
||
|
||
/* Determine the grade we should request of the other system. A
|
||
- '\0' means that no restrictions have been made. */
|
||
- if (! ftimespan_match (qsys->uuconf_qcalltimegrade, &ival,
|
||
- (int *) NULL))
|
||
- bgrade = '\0';
|
||
+ '\0' means that no restrictions have been made.
|
||
+ If a grade is set on the command line, the calltimegrade-value
|
||
+ is overwritten. */
|
||
+
|
||
+ if (cmdlgrade != '\0')
|
||
+ bgrade = cmdlgrade;
|
||
else
|
||
- bgrade = (char) ival;
|
||
+ if (! ftimespan_match (qsys->uuconf_qcalltimegrade, &ival,
|
||
+ (int *) NULL))
|
||
+ bgrade = '\0';
|
||
+ else
|
||
+ bgrade = (char) ival;
|
||
|
||
/* Determine the name we will call ourselves. */
|
||
if (qsys->uuconf_zlocalname != NULL)
|
||
--- a/uucp.info-2
|
||
+++ b/uucp.info-2
|
||
@@ -1,4 +1,6 @@
|
||
-This is uucp.info, produced by makeinfo version 4.1 from uucp.texi.
|
||
+This is uucp.info, produced by makeinfo version 4.11 from uucp.texi.
|
||
+
|
||
+INFO-DIR-SECTION Networking tools
|
||
|
||
START-INFO-DIR-ENTRY
|
||
* UUCP: (uucp). Transfer mail and news across phone lines.
|
||
@@ -25,1247 +27,1119 @@ versions, except that the section entitl
|
||
a translation approved by the author instead of in the original English.
|
||
|
||
|
||
-File: uucp.info, Node: Invoking cu, Next: Invoking uucico, Prev: Invoking uupick, Up: Invoking the UUCP Programs
|
||
-
|
||
-Invoking cu
|
||
-===========
|
||
-
|
||
-* Menu:
|
||
-
|
||
-* cu Description:: Description of cu
|
||
-* cu Commands:: Commands Supported by cu
|
||
-* cu Variables:: Variables Supported by cu
|
||
-* cu Options:: Options Supported by cu
|
||
-
|
||
-
|
||
-File: uucp.info, Node: cu Description, Next: cu Commands, Prev: Invoking cu, Up: Invoking cu
|
||
-
|
||
-cu Description
|
||
---------------
|
||
-
|
||
- cu [options] [system | phone | "dir"]
|
||
-
|
||
- The `cu' program is used to call up another system and act as a dial
|
||
-in terminal. It can also do simple file transfers with no error
|
||
-checking.
|
||
-
|
||
- The `cu' program takes a single non-option argument.
|
||
-
|
||
- If the argument is the string `dir' cu will make a direct connection
|
||
-to the port. This may only be used by users with write access to the
|
||
-port, as it permits reprogramming the modem.
|
||
-
|
||
- Otherwise, if the argument begins with a digit, it is taken to be a
|
||
-phone number to call.
|
||
-
|
||
- Otherwise, it is taken to be the name of a system to call.
|
||
-
|
||
- The `-z' or `--system' options may be used to name a system
|
||
-beginning with a digit, and the `-c' or `--phone' options may be used
|
||
-to name a phone number that does not begin with a digit.
|
||
-
|
||
- The `cu' program locates a port to use in the UUCP configuration
|
||
-files. If a simple system name is given, it will select a port
|
||
-appropriate for that system. The `-p', `--port', `-l', `--line', `-s',
|
||
-and `--speed' options may be used to control the port selection.
|
||
-
|
||
- When a connection is made to the remote system, `cu' forks into two
|
||
-processes. One reads from the port and writes to the terminal, while
|
||
-the other reads from the terminal and writes to the port.
|
||
-
|
||
-
|
||
-File: uucp.info, Node: cu Commands, Next: cu Variables, Prev: cu Description, Up: Invoking cu
|
||
-
|
||
-cu Commands
|
||
------------
|
||
-
|
||
- The `cu' program provides several commands that may be used during
|
||
-the conversation. The commands all begin with an escape character,
|
||
-which by default is `~' (tilde). The escape character is only
|
||
-recognized at the beginning of a line. To send an escape character to
|
||
-the remote system at the start of a line, it must be entered twice. All
|
||
-commands are either a single character or a word beginning with `%'
|
||
-(percent sign).
|
||
-
|
||
- The `cu' program recognizes the following commands.
|
||
-
|
||
-`~.'
|
||
- Terminate the conversation.
|
||
-
|
||
-`~! command'
|
||
- Run command in a shell. If command is empty, starts up a shell.
|
||
-
|
||
-`~$ command'
|
||
- Run command, sending the standard output to the remote system.
|
||
-
|
||
-`~| command'
|
||
- Run command, taking the standard input from the remote system.
|
||
-
|
||
-`~+ command'
|
||
- Run command, taking the standard input from the remote system and
|
||
- sending the standard output to the remote system.
|
||
-
|
||
-`~#, ~%break'
|
||
- Send a break signal, if possible.
|
||
-
|
||
-`~c directory, ~%cd directory'
|
||
- Change the local directory.
|
||
-
|
||
-`~> file'
|
||
- Send a file to the remote system. This just dumps the file over
|
||
- the communication line. It is assumed that the remote system is
|
||
- expecting it.
|
||
-
|
||
-`~<'
|
||
- Receive a file from the remote system. This prompts for the local
|
||
- file name and for the remote command to execute to begin the file
|
||
- transfer. It continues accepting data until the contents of the
|
||
- `eofread' variable are seen.
|
||
-
|
||
-`~p from to'
|
||
-`~%put from to'
|
||
- Send a file to a remote Unix system. This runs the appropriate
|
||
- commands on the remote system.
|
||
-
|
||
-`~t from to'
|
||
-`~%take from to'
|
||
- Retrieve a file from a remote Unix system. This runs the
|
||
- appropriate commands on the remote system.
|
||
-
|
||
-`~s variable value'
|
||
- Set a `cu' variable to the given value. If value is not given, the
|
||
- variable is set to `true'.
|
||
-
|
||
-`~! variable'
|
||
- Set a `cu' variable to `false'.
|
||
-
|
||
-`~z'
|
||
- Suspend the cu session. This is only supported on some systems.
|
||
- On systems for which `^Z' may be used to suspend a job, `~^Z' will
|
||
- also suspend the session.
|
||
-
|
||
-`~%nostop'
|
||
- Turn off XON/XOFF handling.
|
||
-
|
||
-`~%stop'
|
||
- Turn on XON/XOFF handling.
|
||
-
|
||
-`~v'
|
||
- List all the variables and their values.
|
||
-
|
||
-`~?'
|
||
- List all commands.
|
||
-
|
||
-
|
||
-File: uucp.info, Node: cu Variables, Next: cu Options, Prev: cu Commands, Up: Invoking cu
|
||
-
|
||
-cu Variables
|
||
-------------
|
||
-
|
||
- The `cu' program also supports several variables. They may be
|
||
-listed with the `~v' command, and set with the `~s' or `~!' commands.
|
||
-
|
||
-`escape'
|
||
- The escape character. The default is `~' (tilde).
|
||
-
|
||
-`delay'
|
||
- If this variable is true, `cu' will delay for a second, after
|
||
- recognizing the escape character, before printing the name of the
|
||
- local system. The default is true.
|
||
-
|
||
-`eol'
|
||
- The list of characters which are considered to finish a line. The
|
||
- escape character is only recognized after one of these is seen.
|
||
- The default is `carriage return', `^U', `^C', `^O', `^D', `^S',
|
||
- `^Q', `^R'.
|
||
-
|
||
-`binary'
|
||
- Whether to transfer binary data when sending a file. If this is
|
||
- false, then newlines in the file being sent are converted to
|
||
- carriage returns. The default is false.
|
||
-
|
||
-`binary-prefix'
|
||
- A string used before sending a binary character in a file
|
||
- transfer, if the `binary' variable is true. The default is `^V'.
|
||
-
|
||
-`echo-check'
|
||
- Whether to check file transfers by examining what the remote system
|
||
- echoes back. This probably doesn't work very well. The default is
|
||
- false.
|
||
-
|
||
-`echonl'
|
||
- The character to look for after sending each line in a file. The
|
||
- default is carriage return.
|
||
-
|
||
-`timeout'
|
||
- The timeout to use, in seconds, when looking for a character,
|
||
- either when doing echo checking or when looking for the `echonl'
|
||
- character. The default is 30.
|
||
-
|
||
-`kill'
|
||
- The character to use delete a line if the echo check fails. The
|
||
- default is `^U'.
|
||
-
|
||
-`resend'
|
||
- The number of times to resend a line if the echo check continues to
|
||
- fail. The default is 10.
|
||
-
|
||
-`eofwrite'
|
||
- The string to write after sending a file with the `~>' command.
|
||
- The default is `^D'.
|
||
-
|
||
-`eofread'
|
||
- The string to look for when receiving a file with the ` ~<'
|
||
- command. The default is `$', which is intended to be a typical
|
||
- shell prompt.
|
||
-
|
||
-`verbose'
|
||
- Whether to print accumulated information during a file transfer.
|
||
- The default is true.
|
||
-
|
||
-
|
||
-File: uucp.info, Node: cu Options, Prev: cu Variables, Up: Invoking cu
|
||
-
|
||
-cu Options
|
||
-----------
|
||
-
|
||
- The following options may be given to `cu'.
|
||
-
|
||
-`-e'
|
||
-`--parity=even'
|
||
- Use even parity.
|
||
-
|
||
-`-o'
|
||
-`--parity=odd'
|
||
- Use odd parity.
|
||
-
|
||
-`--parity=none'
|
||
- Use no parity. No parity is also used if both `-e' and `-o' are
|
||
- given.
|
||
-
|
||
-`-h'
|
||
-`--halfduplex'
|
||
- Echo characters locally (half-duplex mode).
|
||
-
|
||
-`--nostop'
|
||
- Turn off XON/XOFF handling (it is on by default).
|
||
-
|
||
-`-E char'
|
||
-`--escape char'
|
||
- Set the escape character. Initially `~' (tilde). To eliminate the
|
||
- escape character, use `-E '''.
|
||
-
|
||
-`-z system'
|
||
-`--system system'
|
||
- The system to call.
|
||
-
|
||
-`-c phone-number'
|
||
-`--phone phone-number'
|
||
- The phone number to call.
|
||
-
|
||
-`-p port'
|
||
-`-a port'
|
||
-`--port port'
|
||
- Name the port to use.
|
||
-
|
||
-`-l line'
|
||
-`--line line'
|
||
- Name the line to use by giving a device name. This may be used to
|
||
- dial out on ports that are not listed in the UUCP configuration
|
||
- files. Write access to the device is required.
|
||
-
|
||
-`-s speed'
|
||
-`-#'
|
||
-`--speed speed'
|
||
- The speed (baud rate) to use. Here, `-#' means an actual number;
|
||
- e.g., `-9600'.
|
||
-
|
||
-`-n'
|
||
-`--prompt'
|
||
- Prompt for the phone number to use.
|
||
-
|
||
-`-d'
|
||
- Enter debugging mode. Equivalent to `--debug all'.
|
||
-
|
||
-`-x type'
|
||
-`--debug type'
|
||
-`-I file'
|
||
-`--config file'
|
||
-`-v'
|
||
-`--version'
|
||
-`--help'
|
||
- *Note Standard Options::.
|
||
-
|
||
-
|
||
-File: uucp.info, Node: Invoking uucico, Next: Invoking uuxqt, Prev: Invoking cu, Up: Invoking the UUCP Programs
|
||
-
|
||
-Invoking uucico
|
||
-===============
|
||
-
|
||
-* Menu:
|
||
-
|
||
-* uucico Description:: Description of uucico
|
||
-* uucico Options:: Options Supported by uucico
|
||
-
|
||
-
|
||
-File: uucp.info, Node: uucico Description, Next: uucico Options, Prev: Invoking uucico, Up: Invoking uucico
|
||
-
|
||
-uucico Description
|
||
-------------------
|
||
-
|
||
- uucico [options]
|
||
-
|
||
- The `uucico' daemon processes file transfer requests queued by
|
||
-`uucp' and `uux'. It is started when `uucp' or `uux' is run (unless
|
||
-they are given the `-r' or `--nouucico' options). It is also typically
|
||
-started periodically using entries in the `crontab' table(s).
|
||
-
|
||
- When `uucico' is invoked with `-r1', `--master', `-s', `--system',
|
||
-or `-S', the daemon will place a call to a remote system, running in
|
||
-master mode. Otherwise the daemon will start in slave mode, accepting
|
||
-a call from a remote system. Typically a special login name will be
|
||
-set up for UUCP which automatically invokes `uucico' when a remote
|
||
-system calls in and logs in under that name.
|
||
-
|
||
- When `uucico' terminates, it invokes the `uuxqt' daemon, unless the
|
||
-`-q' or `--nouuxqt' options were given; `uuxqt' executes any work
|
||
-orders created by `uux' on a remote system, and any work orders created
|
||
-locally which have received remote files for which they were waiting.
|
||
-
|
||
- If a call fails, `uucico' will normally refuse to retry the call
|
||
-until a certain (configurable) amount of time has passed. This may be
|
||
-overriden by the `-f', `--force', or `-S' options.
|
||
-
|
||
- The `-l', `--prompt', `-e', or `--loop' options may be used to force
|
||
-`uucico' to produce its own prompts of `login: ' and `Password:'. When
|
||
-another `uucico' daemon calls in, it will see these prompts and log in
|
||
-as usual. The login name and password will normally be checked against
|
||
-a separate list kept specially for `uucico', rather than the
|
||
-`/etc/passwd' file (*note Configuration File Names::). It is possible,
|
||
-on some systems, to configure `uucico' to use `/etc/passwd'. The `-l'
|
||
-or `--prompt' options will prompt once and then exit; in this mode the
|
||
-UUCP administrator, or the superuser, may use the `-u' or `--login'
|
||
-option to force a login name, in which case `uucico' will not prompt
|
||
-for one. The `-e' or `--loop' options will prompt again after the
|
||
-first session is over; in this mode `uucico' will permanently control a
|
||
-port.
|
||
-
|
||
- If `uucico' receives a `SIGQUIT', `SIGTERM' or `SIGPIPE' signal, it
|
||
-will cleanly abort any current conversation with a remote system and
|
||
-exit. If it receives a `SIGHUP' signal it will abort any current
|
||
-conversation, but will continue to place calls to (if invoked with
|
||
-`-r1' or `--master') and accept calls from (if invoked with `-e' or
|
||
-`--loop') other systems. If it receives a `SIGINT' signal it will
|
||
-finish the current conversation, but will not place or accept any more
|
||
-calls.
|
||
-
|
||
-
|
||
-File: uucp.info, Node: uucico Options, Prev: uucico Description, Up: Invoking uucico
|
||
-
|
||
-uucico Options
|
||
---------------
|
||
-
|
||
- The following options may be given to `uucico'.
|
||
-
|
||
-`-r1'
|
||
-`--master'
|
||
- Start in master mode: call out to a remote system. Implied by
|
||
- `-s', `--system', or `-S'. If no system is specified,
|
||
- sequentially call every system for which work is waiting to be
|
||
- done.
|
||
-
|
||
-`-r0'
|
||
-`--slave'
|
||
- Start in slave mode. This is the default.
|
||
-
|
||
-`-s system'
|
||
-`--system system'
|
||
- Call the specified system.
|
||
-
|
||
-`-S system'
|
||
- Call the specified system, ignoring any required wait. This is
|
||
- equivalent to `-s system -f'.
|
||
-
|
||
-`-f'
|
||
-`--force'
|
||
- Ignore any required wait for any systems to be called.
|
||
-
|
||
-`-l'
|
||
-`--prompt'
|
||
- Prompt for login name and password using `login: ' and
|
||
- `Password:'. This allows `uucico' to be easily run from `inetd'.
|
||
- The login name and password are checked against the UUCP password
|
||
- file, which need not be `/etc/passwd'. The `--login' option may
|
||
- be used to force a login name, in which cause `uucico' will only
|
||
- prompt for a password.
|
||
-
|
||
-`-p port'
|
||
-`--port port'
|
||
- Specify a port to call out on or to listen to.
|
||
-
|
||
-`-e'
|
||
-`--loop'
|
||
- Enter an endless loop of login/password prompts and slave mode
|
||
- daemon execution. The program will not stop by itself; you must
|
||
- use `kill' to shut it down.
|
||
-
|
||
-`-w'
|
||
-`--wait'
|
||
- After calling out (to a particular system when `-s', `--system',
|
||
- or `-S' is specifed, or to all systems which have work when just
|
||
- `-r1' or `--master' is specifed), begin an endless loop as with
|
||
- `--loop'.
|
||
-
|
||
-`-q'
|
||
-`--nouuxqt'
|
||
- Do not start the `uuxqt' daemon when finished.
|
||
-
|
||
-`-c'
|
||
-`--quiet'
|
||
- If no calls are permitted at this time, then don't make the call,
|
||
- but also do not put an error message in the log file and do not
|
||
- update the system status (as reported by `uustat'). This can be
|
||
- convenient for automated polling scripts, which may want to simply
|
||
- attempt to call every system rather than worry about which
|
||
- particular systems may be called at the moment. This option also
|
||
- suppresses the log message indicating that there is no work to be
|
||
- done.
|
||
-
|
||
-`-C'
|
||
-`--ifwork'
|
||
- Only call the system named by `-s', `--system', or `-S' if there
|
||
- is work for that system.
|
||
-
|
||
-`-D'
|
||
-`--nodetach'
|
||
- Do not detach from the controlling terminal. Normally `uucico'
|
||
- detaches from the terminal before each call out to another system
|
||
- and before invoking `uuxqt'. This option prevents this.
|
||
-
|
||
-`-u name'
|
||
-`--login name'
|
||
- Set the login name to use instead of that of the invoking user.
|
||
- This option may only be used by the UUCP administrator or the
|
||
- superuser. If used with `--prompt', this will cause `uucico' to
|
||
- prompt only for the password, not the login name.
|
||
-
|
||
-`-z'
|
||
-`--try-next'
|
||
- If a call fails after the remote system is reached, try the next
|
||
- alternate rather than simply exiting.
|
||
-
|
||
-`-i type'
|
||
-`--stdin type'
|
||
- Set the type of port to use when using standard input. The only
|
||
- supported port type is TLI, and this is only available on machines
|
||
- which support the TLI networking interface. Specifying `-i TLI'
|
||
- causes `uucico' to use TLI calls to perform I/O.
|
||
-
|
||
-`-X type'
|
||
- Same as the standard option `-x type'. Provided for historical
|
||
- compatibility.
|
||
-
|
||
-`-x type'
|
||
-`--debug type'
|
||
-`-I file'
|
||
-`--config file'
|
||
-`-v'
|
||
-`--version'
|
||
-`--help'
|
||
- *Note Standard Options::.
|
||
-
|
||
-
|
||
-File: uucp.info, Node: Invoking uuxqt, Next: Invoking uuchk, Prev: Invoking uucico, Up: Invoking the UUCP Programs
|
||
-
|
||
-Invoking uuxqt
|
||
-==============
|
||
-
|
||
- uuxqt [-c command] [-s system] [--command command] [--system system]
|
||
-
|
||
- The `uuxqt' daemon executes commands requested by `uux' from either
|
||
-the local system or from remote systems. It is started automatically
|
||
-by the `uucico' daemon (unless `uucico' is given the `-q' or
|
||
-`--nouuxqt' options).
|
||
-
|
||
- There is normally no need to run `uuxqt', since it will be invoked
|
||
-by `uucico'. However, `uuxqt' can be invoked directly to provide
|
||
-greater control over the processing of the work queue.
|
||
-
|
||
- Multiple invocations of `uuxqt' may be run at once, as controlled by
|
||
-the `max-uuxqts' configuration command; see *Note Miscellaneous
|
||
-(config)::.
|
||
-
|
||
- The following options may be given to `uuxqt'.
|
||
-
|
||
-`-c command'
|
||
-`--command command'
|
||
- Only execute requests for the specified command. For example,
|
||
- `uuxqt --command rmail'.
|
||
-
|
||
-`-s system'
|
||
-`--system system'
|
||
- Only execute requests originating from the specified system.
|
||
-
|
||
-`-x type'
|
||
-`--debug type'
|
||
-`-I file'
|
||
-`--config'
|
||
-`-v'
|
||
-`--version'
|
||
-`--help'
|
||
- *Note Standard Options::.
|
||
-
|
||
-
|
||
-File: uucp.info, Node: Invoking uuchk, Next: Invoking uuconv, Prev: Invoking uuxqt, Up: Invoking the UUCP Programs
|
||
-
|
||
-Invoking uuchk
|
||
-==============
|
||
-
|
||
- uuchk [-s system] [--system system]
|
||
-
|
||
- The `uuchk' program displays information read from the UUCP
|
||
-configuration files. It should be used to ensure that UUCP has been
|
||
-configured correctly.
|
||
-
|
||
- The `-s' or `--system' options may be used to display the
|
||
-configuration for just the specified system, rather than for all
|
||
-systems. The `uuchk' program also supports the standard UUCP program
|
||
-options; see *Note Standard Options::.
|
||
-
|
||
-
|
||
-File: uucp.info, Node: Invoking uuconv, Next: Invoking uusched, Prev: Invoking uuchk, Up: Invoking the UUCP Programs
|
||
-
|
||
-Invoking uuconv
|
||
-===============
|
||
-
|
||
- uuconv -i type -o type [-p program] [--program program]
|
||
- uuconv --input type --output type [-p program] [--program program]
|
||
-
|
||
- The `uuconv' program converts UUCP configuration files from one
|
||
-format to another. The type of configuration file to read is specified
|
||
-using the `-i' or `--input' options. The type of configuration file to
|
||
-write is specified using the `-o' or `--output' options.
|
||
-
|
||
- The supported configuration file types are `taylor', `v2', and
|
||
-`hdb'. For a description of the `taylor' configuration files, see
|
||
-*Note Configuration Files::. The other types of configuration files
|
||
-are used by traditional UUCP packages, and are not described in this
|
||
-manual.
|
||
-
|
||
- An input configuration of type `v2' or `hdb' is read from a compiled
|
||
-in directory (specified by `oldconfigdir' in `Makefile'). An input
|
||
-configuration of type `taylor' is read from a compiled in directory by
|
||
-default, but may be overridden with the standard `-I' or `--config'
|
||
-options (*note Standard Options::).
|
||
-
|
||
- The output configuration is written to files in the directory in
|
||
-which `uuconv' is run.
|
||
-
|
||
- Some information in the input files may not be representable in the
|
||
-desired output format, in which case `uuconv' will silently discard it.
|
||
-The output of `uuconv' should be carefully checked before it is used.
|
||
-The `uuchk' program may be used for this purpose; see *Note Invoking
|
||
-uuchk::.
|
||
-
|
||
- The `-p' or `--program' option may be used to convert specific `cu'
|
||
-configuration information, rather than the default of only converting
|
||
-the `uucp' configuration information; see *Note config File::.
|
||
-
|
||
- The `uuchk' program also supports the standard UUCP program options;
|
||
-see *Note Standard Options::.
|
||
+File: uucp.info, Node: j Protocol, Next: x Protocol, Prev: i Protocol, Up: Protocols
|
||
|
||
-
|
||
-File: uucp.info, Node: Invoking uusched, Prev: Invoking uuconv, Up: Invoking the UUCP Programs
|
||
+6.12 UUCP `j' Protocol
|
||
+======================
|
||
|
||
-Invoking uusched
|
||
-================
|
||
+The `j' protocol is a variant of the `i' protocol. It was also written
|
||
+by Ian Lance Taylor, and first appeared in Taylor UUCP version 1.04.
|
||
|
||
- The `uusched' program is actually just a shell script which invokes
|
||
-the `uucico' daemon. It is provided for backward compatibility. It
|
||
-causes `uucico' to call all systems for which there is work. Any
|
||
-option which may be given to `uucico' may also be given to `uusched'.
|
||
-*Note Invoking uucico::.
|
||
+ The `j' protocol is a version of the `i' protocol designed for
|
||
+communication links which intercept a few characters, such as XON or
|
||
+XOFF. It is not efficient to use it on a link which intercepts many
|
||
+characters, such as a seven bit link. The `j' protocol performs no
|
||
+error correction or detection; that is presumed to be the responsibility
|
||
+of the `i' protocol.
|
||
+
|
||
+ When the `j' protocol starts up, each system sends a printable ASCII
|
||
+string indicating which characters it wants to avoid using. The string
|
||
+begins with the ASCII character `^' (octal 136) and ends with the ASCII
|
||
+character `~' (octal 176). After sending this string, each system
|
||
+looks for the corresponding string from the remote system. The strings
|
||
+are composed of escape sequences: `\ooo', where `o' is an octal digit.
|
||
+For example, sending the string `^\021\023~' means that the ASCII XON
|
||
+and XOFF characters should be avoided. The union of the characters
|
||
+described in both strings (the string which is sent and the string
|
||
+which is received) is the set of characters which must be avoided in
|
||
+this conversation. Avoiding a printable ASCII character (octal 040 to
|
||
+octal 176, inclusive) is not permitted.
|
||
+
|
||
+ After the exchange of characters to avoid, the normal `i' protocol
|
||
+start up is done, and the rest of the conversation uses the normal `i'
|
||
+protocol. However, each `i' protocol packet is wrapped to become a `j'
|
||
+protocol packet.
|
||
+
|
||
+ Each `j' protocol packet consists of a seven byte header, followed
|
||
+by data bytes, followed by index bytes, followed by a one byte trailer.
|
||
+The packet header looks like this:
|
||
+
|
||
+`^'
|
||
+ Every packet begins with the ASCII character `^', octal 136.
|
||
+
|
||
+HIGH
|
||
+LOW
|
||
+ These two characters give the total number of bytes in the packet.
|
||
+ Both HIGH and LOW are printable ASCII characters. The length of
|
||
+ the packet is `(HIGH - 040) * 0100 + (LOW - 040)', where `040 <=
|
||
+ HIGH < 0177' and `040 <= LOW < 0140'. This permits a length of
|
||
+ 6079 bytes, but there is a further restriction on packet size
|
||
+ described below.
|
||
+
|
||
+`='
|
||
+ The ASCII character `=', octal 075.
|
||
+
|
||
+DATA-HIGH
|
||
+DATA-LOW
|
||
+ These two characters give the total number of data bytes in the
|
||
+ packet. The encoding is as described for HIGH and LOW. The number
|
||
+ of data bytes is the size of the `i' protocol packet wrapped inside
|
||
+ this `j' protocol packet.
|
||
+
|
||
+`@'
|
||
+ The ASCII character `@', octal 100.
|
||
+
|
||
+ The header is followed by the number of data bytes given in
|
||
+DATA-HIGH and DATA-LOW. These data bytes are the `i' protocol packet
|
||
+which is being wrapped in the `j' protocol packet. However, each
|
||
+character in the `i' protocol packet which the `j' protocol must avoid
|
||
+is transformed into a printable ASCII character (recall that avoiding a
|
||
+printable ASCII character is not permitted). Two index bytes are used
|
||
+for each character which must be transformed.
|
||
+
|
||
+ The index bytes immediately follow the data bytes. The index bytes
|
||
+are created in pairs. Each pair of index bytes encodes the location of
|
||
+a character in the `i' protocol packet which was transformed to become
|
||
+a printable ASCII character. Each pair of index bytes also encodes the
|
||
+precise transformation which was performed.
|
||
+
|
||
+ When the sender finds a character which must be avoided, it will
|
||
+transform it using one or two operations. If the character is 0200 or
|
||
+greater, it will subtract 0200. If the resulting character is less than
|
||
+020, or is equal to 0177, it will xor by 020. The result is a printable
|
||
+ASCII character.
|
||
+
|
||
+ The zero based byte index of the character within the `i' protocol
|
||
+packet is determined. This index is turned into a two byte printable
|
||
+ASCII index, INDEX-HIGH and INDEX-LOW, such that the index is
|
||
+`(INDEX-HIGH - 040) * 040 + (INDEX-LOW - 040)'. INDEX-LOW is
|
||
+restricted such that `040 <= INDEX-LOW < 0100'. INDEX-HIGH is not
|
||
+permitted to be 0176, so `040 <= INDEX-HIGH < 0176'. INDEX-LOW is then
|
||
+modified to encode the transformation:
|
||
+
|
||
+ * If the character transformation only had to subtract 0200, then
|
||
+ INDEX-LOW is used as is.
|
||
+
|
||
+ * If the character transformation only had to xor by 020, then 040
|
||
+ is added to INDEX-LOW.
|
||
+
|
||
+ * If both operations had to be performed, then 0100 is added to
|
||
+ INDEX-LOW. However, if the value of INDEX-LOW was initially 077,
|
||
+ then adding 0100 would result in 0177, which is not a printable
|
||
+ ASCII character. For that special case, INDEX-HIGH is set to
|
||
+ 0176, and INDEX-LOW is set to the original value of INDEX-HIGH.
|
||
+
|
||
+ The receiver decodes the index bytes as follows (this is the reverse
|
||
+of the operations performed by the sender, presented here for additional
|
||
+clarity):
|
||
+
|
||
+ * The first byte in the index is INDEX-HIGH, and the second is
|
||
+ INDEX-LOW.
|
||
+
|
||
+ * If `040 <= INDEX-HIGH < 0176', the index refers to the data byte
|
||
+ at position `(INDEX-HIGH - 040) * 040 + INDEX-LOW % 040'.
|
||
+
|
||
+ * If `040 <= INDEX-LOW < 0100', then 0200 must be added to indexed
|
||
+ byte.
|
||
+
|
||
+ * If `0100 <= INDEX-LOW < 0140', then 020 must be xor'ed to the
|
||
+ indexed byte.
|
||
+
|
||
+ * If `0140 <= INDEX-LOW < 0177', then 0200 must be added to the
|
||
+ indexed byte, and 020 must be xor'ed to the indexed byte.
|
||
+
|
||
+ * If `INDEX-HIGH == 0176', the index refers to the data byte at
|
||
+ position `(INDEX-LOW - 040) * 040 + 037'. 0200 must be added to
|
||
+ the indexed byte, and 020 must be xor'ed to the indexed byte.
|
||
+
|
||
+ This means the largest `i' protocol packet which may be wrapped
|
||
+inside a `j' protocol packet is `(0175 - 040) * 040 + (077 - 040) ==
|
||
+3007' bytes.
|
||
+
|
||
+ The final character in a `j' protocol packet, following the index
|
||
+bytes, is the ASCII character `~' (octal 176).
|
||
+
|
||
+ The motivation behind using an indexing scheme, rather than escape
|
||
+characters, is to avoid data movement. The sender may simply add a
|
||
+header and a trailer to the `i' protocol packet. Once the receiver has
|
||
+loaded the `j' protocol packet, it may scan the index bytes,
|
||
+transforming the data bytes, and then pass the data bytes directly on to
|
||
+the `i' protocol routine.
|
||
+
|
||
+
|
||
+File: uucp.info, Node: x Protocol, Next: y Protocol, Prev: j Protocol, Up: Protocols
|
||
+
|
||
+6.13 UUCP `x' Protocol
|
||
+======================
|
||
+
|
||
+The `x' protocol is used in Europe (and probably elsewhere) with
|
||
+machines that contain an builtin X.25 card and can send eight bit data
|
||
+transparently across X.25 circuits, without interference from the X.28
|
||
+or X.29 layers. The protocol sends packets of 512 bytes, and relies on
|
||
+a write of zero bytes being read as zero bytes without stopping
|
||
+communication. It first appeared in the original System V UUCP
|
||
+implementation.
|
||
+
|
||
+
|
||
+File: uucp.info, Node: y Protocol, Next: d Protocol, Prev: x Protocol, Up: Protocols
|
||
+
|
||
+6.14 UUCP `y' Protocol
|
||
+======================
|
||
+
|
||
+The `y' protocol was developed by Jorge Cwik for use in FX UUCICO, a PC
|
||
+uucico program. It is designed for communication lines which handle
|
||
+error correction and flow control. It requires an eight bit clean
|
||
+connection. It performs error detection, but not error correction:
|
||
+when an error is detected, the line is dropped. It is a streaming
|
||
+protocol, like the `f' protocol; there are no packet acknowledgements,
|
||
+so the protocol is efficient over a half-duplex communication line such
|
||
+as PEP.
|
||
+
|
||
+ Every packet contains a six byte header:
|
||
+
|
||
+sequence low byte
|
||
+sequence high byte
|
||
+ A two byte sequence number, in little endian order. The first
|
||
+ sequence number is 0. Since the first packet is always a sync
|
||
+ packet (described below) the sequence number of the first data
|
||
+ packet is always 1. Each system counts sequence numbers
|
||
+ independently.
|
||
+
|
||
+length low byte
|
||
+length high byte
|
||
+ A two byte data length, in little endian order. If the high bit
|
||
+ of the sixteen bit field is clear, this is the number of data
|
||
+ bytes which follow the six byte header. If the high bit is set,
|
||
+ there is no data, and the length field is a type of control packet.
|
||
+
|
||
+checksum low byte
|
||
+checksum high byte
|
||
+ A two byte checksum, in little endian order. The checksum is
|
||
+ computed over the data bytes. The checksum algorithm is described
|
||
+ below. If there are no data bytes, the checksum is sent as 0.
|
||
+
|
||
+ When the protocol starts up, each side must send a sync packet.
|
||
+This is a packet with a normal six byte header followed by data. The
|
||
+sequence number of the sync packet should be 0. Currently at least
|
||
+four bytes of data must be sent with the sync packet. Additional bytes
|
||
+should be ignored. They are defined as follows:
|
||
+
|
||
+version
|
||
+ The version number of the protocol. Currently this must be 1.
|
||
+ Larger numbers should be ignored; it is the responsibility of the
|
||
+ newer version to accommodate the older one.
|
||
+
|
||
+packet size
|
||
+ The maximum data length to use divided by 256. This is sent as a
|
||
+ single byte. The maximum data length permitted is 32768, which
|
||
+ would be sent as 128. Customarily both systems will use the same
|
||
+ maximum data length, the lower of the two requested.
|
||
+
|
||
+flags low byte
|
||
+flags high byte
|
||
+ Two bytes of flags. None are currently defined. These bytes
|
||
+ should be sent as 0, and ignored by the receiver.
|
||
+
|
||
+ A length field with the high bit set is a control packet. The
|
||
+following control packet types are defined:
|
||
+
|
||
+0xfffe `YPKT_ACK'
|
||
+ Acknowledges correct receipt of a file.
|
||
+
|
||
+0xfffd `YPKT_ERR'
|
||
+ Indicates an incorrect checksum.
|
||
+
|
||
+0xfffc `YPKT_BAD'
|
||
+ Indicates a bad sequence number, an invalid length, or some other
|
||
+ error.
|
||
+
|
||
+ If a control packet other than `YPKT_ACK' is received, the
|
||
+connection is dropped. If a checksum error is detected for a received
|
||
+packet, a `YPKT_ERR' control packet is sent, and the connection is
|
||
+dropped. If a packet is received out of sequence, a `YPKT_BAD' control
|
||
+packet is sent, and the connection is dropped.
|
||
+
|
||
+ The checksum is initialized to 0xffff. For each data byte in a
|
||
+packet it is modified as follows (where B is the byte before it has been
|
||
+transformed as described above):
|
||
+
|
||
+ /* Rotate the checksum left. */
|
||
+ if ((ichk & 0x8000) == 0)
|
||
+ ichk <<= 1;
|
||
+ else
|
||
+ {
|
||
+ ichk <<= 1;
|
||
+ ++ichk;
|
||
+ }
|
||
+
|
||
+ /* Add the next byte into the checksum. */
|
||
+ ichk += B;
|
||
+
|
||
+ This is the same algorithm as that used by the `f' protocol.
|
||
+
|
||
+ A command is sent as a sequence of data packets followed by a null
|
||
+byte. In the normal case, a command will fit into a single packet.
|
||
+The packet should be exactly the length of the command plus a null
|
||
+byte. If the command is too long, more packets are sent as required.
|
||
+
|
||
+ A file is sent as a sequence of data packets, ending with a zero
|
||
+length packet. The data packets may be of any length greater than zero
|
||
+and less than or equal to the maximum permitted packet size specified
|
||
+in the initial sync packet.
|
||
+
|
||
+ After the zero length packet ending a file transfer has been
|
||
+received, the receiving system sends a `YPKT_ACK' control packet. The
|
||
+sending system waits for the `YPKT_ACK' control packet before
|
||
+continuing; this wait should be done with a large timeout, since there
|
||
+may be a considerable amount of data buffered on the communication path.
|
||
+
|
||
+
|
||
+File: uucp.info, Node: d Protocol, Next: h Protocol, Prev: y Protocol, Up: Protocols
|
||
+
|
||
+6.15 UUCP `d' Protocol
|
||
+======================
|
||
+
|
||
+The `d' protocol is apparently used for DataKit muxhost (not RS-232)
|
||
+connections. No file size is sent. When a file has been completely
|
||
+transferred, a write of zero bytes is done; this must be read as zero
|
||
+bytes on the other end.
|
||
+
|
||
+
|
||
+File: uucp.info, Node: h Protocol, Next: v Protocol, Prev: d Protocol, Up: Protocols
|
||
+
|
||
+6.16 UUCP `h' Protocol
|
||
+======================
|
||
+
|
||
+The `h' protocol is apparently used in some places with HST modems. It
|
||
+does no error checking, and is not that different from the `t'
|
||
+protocol. I don't know the details.
|
||
+
|
||
+
|
||
+File: uucp.info, Node: v Protocol, Prev: h Protocol, Up: Protocols
|
||
+
|
||
+6.17 UUCP `v' Protocol
|
||
+======================
|
||
+
|
||
+The `v' protocol is used by UUPC/extended, a PC UUCP program. It is
|
||
+simply a version of the `g' protocol which supports packets of any
|
||
+size, and also supports sending packets of different sizes during the
|
||
+same conversation. There are many `g' protocol implementations which
|
||
+support both, but there are also many which do not. Using `v' ensures
|
||
+that everything is supported.
|
||
|
||
|
||
-File: uucp.info, Node: Installing Taylor UUCP, Next: Using Taylor UUCP, Prev: Invoking the UUCP Programs, Up: Top
|
||
+File: uucp.info, Node: Hacking, Next: Acknowledgements, Prev: Protocols, Up: Top
|
||
|
||
-Installing Taylor UUCP
|
||
-**********************
|
||
+7 Hacking Taylor UUCP
|
||
+*********************
|
||
|
||
- These are the installation instructions for the Taylor UUCP package.
|
||
+This chapter provides the briefest of guides to the Taylor UUCP source
|
||
+code itself.
|
||
|
||
* Menu:
|
||
|
||
-* Compilation:: Compiling Taylor UUCP
|
||
-* Testing the Compilation:: Testing the Compilation
|
||
-* Installing the Binaries:: Installing the Binaries
|
||
-* Configuration:: Configuring Taylor UUCP
|
||
-* Testing the Installation:: Testing the Installation
|
||
+* System Dependence:: System Dependence
|
||
+* Naming Conventions:: Naming Conventions
|
||
+* Patches:: Patches
|
||
|
||
|
||
-File: uucp.info, Node: Compilation, Next: Testing the Compilation, Prev: Installing Taylor UUCP, Up: Installing Taylor UUCP
|
||
+File: uucp.info, Node: System Dependence, Next: Naming Conventions, Prev: Hacking, Up: Hacking
|
||
|
||
-Compiling Taylor UUCP
|
||
+7.1 System Dependence
|
||
=====================
|
||
|
||
- If you have a source code distribution, you must first compile it for
|
||
-your system. Free versions of Unix, such as Linux, NetBSD, or FreeBSD,
|
||
-often come with pre-compiled binary distributions of UUCP. If you are
|
||
-using a binary distribution, you may skip to the configuration section
|
||
-(*note Configuration::).
|
||
-
|
||
- Follow these steps to compile the source code.
|
||
-
|
||
- 1. Take a look at the top of `Makefile.in' and set the appropriate
|
||
- values for your system. These control where the programs are
|
||
- installed and which user on the system owns them (normally they
|
||
- will be owned by a special user `uucp' rather than a real person;
|
||
- they should probably not be owned by `root').
|
||
-
|
||
- 2. Run the shell script `configure'. This script was generated using
|
||
- the `autoconf' program written by David MacKenzie of the Free
|
||
- Software Foundation. It takes a while to run. It will generate
|
||
- the file `config.h' based on `config.h.in', and, for each source
|
||
- code directory, will generate `Makefile' based on `Makefile.in'.
|
||
-
|
||
- You can pass certain arguments to `configure' in the environment.
|
||
- Because `configure' will compile little test programs to see what
|
||
- is available on your system, you must tell it how to run your
|
||
- compiler. It recognizes the following environment variables:
|
||
-
|
||
- `CC'
|
||
- The C compiler. If this is not set, then if `configure' can
|
||
- find `gcc' it will use it, otherwise it will use `cc'.
|
||
-
|
||
- `CFLAGS'
|
||
- Flags to pass to the C compiler when compiling the actual
|
||
- code. If this is not set, `configure' will use `-g'.
|
||
-
|
||
- `LDFLAGS'
|
||
- Flags to pass to the C compiler when only linking, not
|
||
- compiling. If this is not set, `configure' will use the
|
||
- empty string.
|
||
-
|
||
- `LIBS'
|
||
- Libraries to pass to the C compiler. If this is not set,
|
||
- `configure' will use the empty string.
|
||
-
|
||
- `INSTALL'
|
||
- The program to run to install UUCP in the binary directory.
|
||
- If this is not set, then if `configure' finds the BSD
|
||
- `install' program, it will set this to `install -c';
|
||
- otherwise, it will use `cp'.
|
||
-
|
||
- Suppose, for example, you want to set the environment variable `CC'
|
||
- to `rcc'. If you are using `sh', `bash', or `ksh', invoke
|
||
- `configure' as `CC=rcc configure'. If you are using `csh', do
|
||
- `setenv CC rcc; sh configure'.
|
||
-
|
||
- On some systems you will want to use `LIBS=-lmalloc'. On Xenix
|
||
- derived versions of Unix do not use `LIBS=-lx' because this will
|
||
- bring in the wrong versions of certain routines; if you want to use
|
||
- `-lx' you must specify `LIBS=-lc -lx'.
|
||
-
|
||
- You can also pass other arguments to `configure' on the command
|
||
- line. Use `configure --help' for a complete list. Of particular
|
||
- interest:
|
||
- `--prefix=DIRNAME'
|
||
- The directory under which all files are installed. Default
|
||
- `/usr/local'.
|
||
-
|
||
- `--with-newconfigdir=DIRNAME'
|
||
- The directory in which to find new style configuration files.
|
||
- Default `PREFIX/conf/uucp'.
|
||
-
|
||
- `--with-oldconfigdir=DIRNAME'
|
||
- The directory in which to find old style configuration files.
|
||
- Default `/usr/lib/uucp'.
|
||
-
|
||
- If `configure' fails for some reason, or if you have a very weird
|
||
- system, you may have to configure the package by hand. To do
|
||
- this, copy the file `config.h.in' to `config.h' and edit it for
|
||
- your system. Then for each source directory (the top directory,
|
||
- and the subdirectories `lib', `unix', and `uuconf') copy
|
||
- `Makefile.in' to `Makefile', find the words within `@' characters,
|
||
- and set them correctly for your system.
|
||
-
|
||
- 3. 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 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 the `-posix' executes `rmail',
|
||
- which in turn executes `sendmail', the later is run under the
|
||
- 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 the `-posix' switch; instead, I run `gcc'
|
||
- with `-D_POSIX_SOURCE', and add `-lcposix' to `LIBS'.
|
||
-
|
||
- 4. On some versions of BSDI there is a bug in the shell which causes
|
||
- the default value for `CFLAGS' to be set incorrectly. If `echo
|
||
- ${CFLAGS--g}' echoes `g' rather than `-g', then you must set
|
||
- `CFLAGS' in the environment before running configure. There is a
|
||
- patch available from BSDI for this bug. (Reported by David Vrona).
|
||
-
|
||
- 5. On AIX 3.2.5, and possibly other versions, `cc -E' does not work,
|
||
- reporting `Option NOROCONST is not valid'. Test this before
|
||
- running configure by doing something like `touch /tmp/foo.c; cc -E
|
||
- /tmp/foo.c'. This may give a warning about the file being empty,
|
||
- but it should not give the `Option NOROCONST' warning. The
|
||
- workaround is to remove the `,noroconst' entry from the `options'
|
||
- clause in the `cc' stanza in `/etc/xlc.cfg'. (Reported by Chris
|
||
- Lewis).
|
||
-
|
||
- 6. You should verify that `configure' worked correctly by checking
|
||
- `config.h' and the instances of `Makefile'.
|
||
-
|
||
- 7. Edit `policy.h' for your local system. The comments explain the
|
||
- various choices. The default values are intended to be
|
||
- reasonable, so you may not have to make any changes.
|
||
-
|
||
- You must decide what type of configuration files to use; for more
|
||
- information on the choices, see *Note Configuration::.
|
||
-
|
||
- You must also decide what sort of spool directory you want to use.
|
||
- If this is a new installation, I recommend `SPOOLDIR_TAYLOR';
|
||
- otherwise, select the spool directory corresponding to your
|
||
- existing UUCP package.
|
||
-
|
||
- 8. Type `make' to compile everything.
|
||
-
|
||
- The `tstuu.c' file is not particularly portable; if you can't
|
||
- figure out how to compile it you can safely ignore it, as it is
|
||
- only used for testing. To use STREAMS pseudo-terminals, tstuu.c
|
||
- must be compiled with `-DHAVE_STREAMS_PTYS'; this is not
|
||
- determined by the configure script.
|
||
-
|
||
- If you have any other problems there is probably a bug in the
|
||
- `configure' script.
|
||
-
|
||
- 9. Please report any problems you have. That is the only way they
|
||
- will get fixed for other people. Supply a patch if you can (*note
|
||
- Patches::), or just ask for help.
|
||
-
|
||
-
|
||
-
|
||
-File: uucp.info, Node: Testing the Compilation, Next: Installing the Binaries, Prev: Compilation, Up: Installing Taylor UUCP
|
||
-
|
||
-Testing the Compilation
|
||
-=======================
|
||
-
|
||
- If your system supports pseudo-terminals, and you compiled the code
|
||
-to support the new style of configuration files (`HAVE_TAYLOR_CONFIG'
|
||
-was set to 1 in `policy.h'), you should be able to use the `tstuu'
|
||
-program to test the `uucico' daemon. If your system supports STREAMS
|
||
-based pseudo-terminals, you must compile tstuu.c with
|
||
-`-DHAVE_STREAMS_PTYS'. (The STREAMS based code was contributed by Marc
|
||
-Boucher).
|
||
-
|
||
- To run `tstuu', just type `tstuu' with no arguments. You must run
|
||
-it in the compilation directory, since it runs `./uucp', `./uux' and
|
||
-`./uucico'. The `tstuu' program will run a lengthy series of tests (it
|
||
-takes over ten minutes on a slow VAX). You will need a fair amount of
|
||
-space available in `/usr/tmp'. You will probably want to put it in the
|
||
-background. Do not use `^Z', because the program traps on `SIGCHLD'
|
||
-and winds up dying. The `tstuu' program will create a directory
|
||
-`/usr/tmp/tstuu' and fill it with configuration files, and create spool
|
||
-directories `/usr/tmp/tstuu/spool1' and `/usr/tmp/tstuu/spool2'.
|
||
-
|
||
- If your system does not support the `FIONREAD' call, the `tstuu'
|
||
-program will run very slowly. This may or may not get fixed in a later
|
||
-version.
|
||
-
|
||
- The `tstuu' program will finish with an execute file named
|
||
-`X.SOMETHING' and a data file named `D.SOMETHING' in the directory
|
||
-`/usr/tmp/tstuu/spool1' (or, more likely, in subdirectories, depending
|
||
-on the choice of `SPOOLDIR' in `policy.h'). Two log files will be
|
||
-created in the directory `/usr/tmp/tstuu'. They will be named `Log1'
|
||
-and `Log2', or, if you have selected `HAVE_HDB_LOGGING' in `policy.h',
|
||
-`Log1/uucico/test2' and `Log2/uucico/test1'. There should be no errors
|
||
-in the log files.
|
||
-
|
||
- You can test `uuxqt' with `./uuxqt -I /usr/tmp/tstuu/Config1'. This
|
||
-should leave a command file `C.SOMETHING' and a data file `D.SOMETHING'
|
||
-in `/usr/tmp/tstuu/spool1' or in subdirectories. Again, there should
|
||
-be no errors in the log file.
|
||
-
|
||
- Assuming you compiled the code with debugging enabled, the `-x'
|
||
-switch can be used to set debugging modes; see the `debug' command for
|
||
-details (*note Debugging Levels::). Use `-x all' to turn on all
|
||
-debugging and generate far more output than you will ever want to see.
|
||
-The `uucico' daemons will put debugging output in the files `Debug1'
|
||
-and `Debug2' in the directory `/usr/tmp/tstuu'. After that, you're
|
||
-pretty much on your own.
|
||
-
|
||
- On some systems you can also use `tstuu' to test `uucico' against
|
||
-the system `uucico', by using the `-u' switch. For this to work,
|
||
-change the definitions of `ZUUCICO_CMD' and `UUCICO_EXECL' at the top
|
||
-of `tstuu.c' to something appropriate for your system. The definitions
|
||
-in `tstuu.c' are what I used for Ultrix 4.0, on which
|
||
-`/usr/lib/uucp/uucico' is particularly obstinate about being run as a
|
||
-child; I was only able to run it by creating a login name with no
|
||
-password whose shell was `/usr/lib/uucp/uucico'. Calling login in this
|
||
-way will leave fake entries in `wtmp' and `utmp'; if you compile
|
||
-`tstout.c' (in the `contrib' directory) as a setuid `root' program,
|
||
-`tstuu' will run it to clear those entries out. On most systems, such
|
||
-hackery should not be necessary, although on SCO I had to su to `root'
|
||
-(`uucp' might also have worked) before I could run
|
||
-`/usr/lib/uucp/uucico'.
|
||
-
|
||
- You can test `uucp' and `uux' (give them the `-r' switch to keep
|
||
-them from starting `uucico') to make sure they create the right sorts
|
||
-of files. Unfortunately, if you don't know what the right sorts of
|
||
-files are, I'm not going to tell you here.
|
||
-
|
||
- If you can not run `tstuu', or if it fails inexplicably, don't worry
|
||
-about it too much. On some systems `tstuu' will fail because of
|
||
-problems using pseudo terminals, which will not matter in normal use.
|
||
-The real test of the package is talking to another system.
|
||
-
|
||
-
|
||
-File: uucp.info, Node: Installing the Binaries, Next: Configuration, Prev: Testing the Compilation, Up: Installing Taylor UUCP
|
||
+The code is carefully segregated into a system independent portion and a
|
||
+system dependent portion. The system dependent code is in the `unix'
|
||
+subdirectory, and also in the file `sysh.unx' (also known as
|
||
+`sysdep.h').
|
||
|
||
-Installing the Binaries
|
||
-=======================
|
||
+ With the right configuration parameters, the system independent code
|
||
+calls only ANSI C functions. Some of the less common ANSI C functions
|
||
+are also provided in the `lib' directory. The replacement function
|
||
+`strtol' in `lib/strtol.c' assumes that the characters `A' to `F' and
|
||
+`a' to `f' appear in strictly sequential order. The function
|
||
+`igradecmp' in `uuconf/grdcmp.c' assumes that the upper and lower case
|
||
+letters appear in order. Both assumptions are true for ASCII and
|
||
+EBCDIC, but neither is guaranteed by ANSI C. Disregarding these
|
||
+caveats, I believe that the system independent portion of the code is
|
||
+strictly conforming.
|
||
|
||
- You can install the executable files by becoming `root' and typing
|
||
-`make install'. Or you can look at what `make install' does and do it
|
||
-by hand. It tries to preserve your old programs, if any, but it only
|
||
-does this the first time Taylor UUCP is installed (so that if you
|
||
-install several versions of Taylor UUCP, you can still go back to your
|
||
-original UUCP programs). You can retrieve the original programs by
|
||
-typing `make uninstall'.
|
||
-
|
||
- Note that by default the programs are compiled with debugging
|
||
-information, and they are not stripped when they are installed. You may
|
||
-want to strip the installed programs to save disk space. For more
|
||
-information, see your system documentation for the `strip' program.
|
||
+ That's not too exciting, since all the work is done in the system
|
||
+dependent code. I think that this code can conform to POSIX 1003.1,
|
||
+given the right compilation parameters. I'm a bit less certain about
|
||
+this, though.
|
||
|
||
- Of course, simply installing the executable files is not enough. You
|
||
-must also arrange for them to be used correctly.
|
||
+ The code has been used on a 16 bit segmented system with no function
|
||
+prototypes, so I'm fairly certain that all casts to long and pointers
|
||
+are done when necessary.
|
||
|
||
|
||
-File: uucp.info, Node: Configuration, Next: Testing the Installation, Prev: Installing the Binaries, Up: Installing Taylor UUCP
|
||
-
|
||
-Configuring Taylor UUCP
|
||
-=======================
|
||
+File: uucp.info, Node: Naming Conventions, Next: Patches, Prev: System Dependence, Up: Hacking
|
||
|
||
- You will have to decide what types of configuration files you want to
|
||
-use. This package supports a new sort of configuration file; see *Note
|
||
-Configuration Files::. It also supports V2 configuration files
|
||
-(`L.sys', `L-devices', etc.) and HDB configuration files (`Systems',
|
||
-`Devices', etc.). No documentation is provided for V2 or HDB
|
||
-configuration files. All types of configuration files can be used at
|
||
-once, if you are so inclined. Currently using just V2 configuration
|
||
-files is not really possible, because there is no way to specify a
|
||
-dialer (there are no built in dialers, and the program does not know
|
||
-how to read `acucap' or `modemcap'); however, V2 configuration files
|
||
-can be used with a new style dial file (*note dial File::), or with a
|
||
-HDB `Dialers' file.
|
||
-
|
||
- Use of HDB configuration files has two known bugs. A blank line in
|
||
-the middle of an entry in the `Permissions' file will not be ignored as
|
||
-it should be. Dialer programs, as found in some versions of HDB, are
|
||
-not recognized directly. If you must use a dialer program, rather than
|
||
-an entry in `Devices', you must use the `chat-program' command in a new
|
||
-style dial file; see *Note dial File::. You will have to invoke the
|
||
-dialer program via a shell script or another program, since an exit
|
||
-code of 0 is required to recognize success; the `dialHDB' program in
|
||
-the `contrib' directory may be used for this purpose.
|
||
-
|
||
- The `uuconv' (*note Invoking uuconv::) program can be used to
|
||
-convert from V2 or HDB configuration files to the new style (it can also
|
||
-do the reverse translation, if you are so inclined). It will not do all
|
||
-of the work, and the results should be carefully checked, but it can be
|
||
-quite useful.
|
||
-
|
||
- If you are installing a new system, you will, of course, have to
|
||
-write the configuration files; see *Note Configuration Files:: for
|
||
-details on how to do this.
|
||
+7.2 Naming Conventions
|
||
+======================
|
||
|
||
- After writing the configuration files, use the `uuchk' program to
|
||
-verify that they are what you expect; see *Note Invoking uuchk::.
|
||
-
|
||
-
|
||
-File: uucp.info, Node: Testing the Installation, Prev: Configuration, Up: Installing Taylor UUCP
|
||
+I use a modified Hungarian naming convention for my variables and
|
||
+functions. As with all naming conventions, the code is rather opaque if
|
||
+you are not familiar with it, but becomes clear and easy to use with
|
||
+time.
|
||
|
||
-Testing the Installation
|
||
-========================
|
||
-
|
||
- After you have written the configuration files, and verified them
|
||
-with the `uuchk' program (*note Invoking uuchk::), you must check that
|
||
-UUCP can correctly contact another system.
|
||
-
|
||
- Tell `uucico' to dial out to the system by using the `-s' system
|
||
-switch (e.g., `uucico -s uunet'). The log file should tell you what
|
||
-happens. The exact location of the log file depends upon the settings
|
||
-in `policy.h' when you compiled the program, and on the use of the
|
||
-`logfile' command in the `config' file. Typical locations are
|
||
-`/usr/spool/uucp/Log' or a subdirectory under `/usr/spool/uucp/.Log'.
|
||
-
|
||
- If you compiled the code with debugging enabled, you can use
|
||
-debugging mode to get a great deal of information about what sort of
|
||
-data is flowing back and forth; the various possibilities are described
|
||
-with the `debug' command (*note Debugging Levels::). When initially
|
||
-setting up a connection `-x chat' is probably the most useful (e.g.,
|
||
-`uucico -s uunet -x chat'); you may also want to use `-x
|
||
-handshake,incoming,outgoing'. You can use `-x' multiple times on one
|
||
-command line, or you can give it comma separated arguments as in the
|
||
-last example. Use `-x all' to turn on all possible debugging
|
||
-information.
|
||
-
|
||
- The debugging information is written to a file, normally
|
||
-`/usr/spool/uucp/Debug', although the default can be changed in
|
||
-`policy.h', and the `config' file can override the default with the
|
||
-`debugfile' command. The debugging file may contain passwords and some
|
||
-file contents as they are transmitted over the line, so the debugging
|
||
-file is only readable by the `uucp' user.
|
||
-
|
||
- You can use the `-f' switch to force `uucico' to call out even if
|
||
-the last call failed recently; using `-S' when naming a system has the
|
||
-same effect. Otherwise the status file (in the `.Status' subdirectory
|
||
-of the main spool directory, normally `/usr/spool/uucp') (*note Status
|
||
-Directory::) will prevent too many attempts from occurring in rapid
|
||
-succession.
|
||
-
|
||
- On older System V based systems which do not have the `setreuid'
|
||
-system call, problems may arise if ordinary users can start an execution
|
||
-of `uuxqt', perhaps indirectly via `uucp' or `uux'. UUCP jobs may wind
|
||
-up executing with a real user ID of the user who invoked `uuxqt', which
|
||
-can cause problems if the UUCP job checks the real user ID for security
|
||
-purposes. On such systems, it is safest to put `run-uuxqt never'
|
||
-(*note Miscellaneous (config)::) in the `config' file, so that `uucico'
|
||
-never starts `uuxqt', and invoke `uuxqt' directly from a `crontab' file.
|
||
-
|
||
- Please let me know about any problems you have and how you got around
|
||
-them. If you do report a problem, please include the version number of
|
||
-the package you are using, the operating system you are running it on,
|
||
-and a sample of the debugging file showing the problem (debugging
|
||
-information is usually what is needed, not just the log file). General
|
||
-questions such as "why doesn't `uucico' dial out" are impossible to
|
||
-answer without much more information.
|
||
-
|
||
-
|
||
-File: uucp.info, Node: Using Taylor UUCP, Next: Configuration Files, Prev: Installing Taylor UUCP, Up: Top
|
||
+ The first character indicates the type of the variable (or function
|
||
+return value). Sometimes additional characters are used. I use the
|
||
+following type prefixes:
|
||
|
||
-Using Taylor UUCP
|
||
-*****************
|
||
+`a'
|
||
+ array; the next character is the type of an element
|
||
|
||
-* Menu:
|
||
+`b'
|
||
+ byte or character
|
||
|
||
-* Calling Other Systems:: Calling Other Systems
|
||
-* Accepting Calls:: Accepting Calls
|
||
-* Mail and News:: Using UUCP for Mail and News
|
||
-* The Spool Directory Layout:: The Spool Directory Layout
|
||
-* Spool Directory Cleaning:: Cleaning the UUCP Spool Directory
|
||
+`c'
|
||
+ count of something
|
||
|
||
-
|
||
-File: uucp.info, Node: Calling Other Systems, Next: Accepting Calls, Prev: Using Taylor UUCP, Up: Using Taylor UUCP
|
||
+`e'
|
||
+ stdio FILE *
|
||
|
||
-Calling Other Systems
|
||
-=====================
|
||
+`f'
|
||
+ boolean
|
||
|
||
- By default `uucp' and `uux' will automatically start up `uucico' to
|
||
-call another system whenever work is queued up. However, the call may
|
||
-fail, or you may have put in time restrictions which prevent the call
|
||
-at that time (perhaps because telephone rates are high) (*note When to
|
||
-Call::). Also, a remote system may have work queued up for your
|
||
-system, but may not be calling you for some reason (perhaps you have
|
||
-agreed that your system should always place the call). To make sure
|
||
-that work gets transferred between the systems withing a reasonable
|
||
-time period, you should arrange to periodically invoke `uucico'.
|
||
-
|
||
- These periodic invocations are normally triggered by entries in the
|
||
-`crontab' file. The exact format of `crontab' files, and how new
|
||
-entries are added, varies from system to system; check your local
|
||
-documentation (try `man cron').
|
||
-
|
||
- To attempt to call all systems with outstanding work, use the command
|
||
-`uucico -r1'. To attempt to call a particular system, use the command
|
||
-`uucico -s SYSTEM'. To attempt to call a particular system, but only
|
||
-if there is work for it, use the command `uucico -C -s SYSTEM'. (*note
|
||
-Invoking uucico::).
|
||
-
|
||
- A common case is to want to try to call a system at a certain time,
|
||
-with periodic retries if the call fails. A simple way to do this is to
|
||
-create an empty UUCP command file, known as a "poll file". If a poll
|
||
-file exists for a system, then `uucico -r1' will place a call to it.
|
||
-If the call succeeds, the poll file will be deleted.
|
||
-
|
||
- A poll file can be easily created using the `uux' command, by
|
||
-requesting the execution of an empty command. To create a poll file for
|
||
-SYSTEM, just do something like this:
|
||
- uux -r SYSTEM!
|
||
- The `-r' tells `uux' to not start up `uucico' immediately. Of
|
||
-course, if you do want `uucico' to start up right away, omit the `-r';
|
||
-if the call fails, the poll file will be left around to cause a later
|
||
-call.
|
||
-
|
||
- For example, I use the following crontab entries locally:
|
||
-
|
||
- 45 * * * * /bin/echo /usr/lib/uucp/uucico -r1 | /bin/su uucpa
|
||
- 40 4,10,15 * * * /usr/bin/uux -r uunet!
|
||
-
|
||
- Every hour, at 45 minutes past, this will check if there is any work
|
||
-to be done, and, if there is, will call the appropriate system. Also,
|
||
-at 4:40am, 10:40am, and 3:40pm, this will create a poll file file for
|
||
-`uunet', forcing the next run of `uucico' to call `uunet'.
|
||
+`i'
|
||
+ generic integer
|
||
|
||
-
|
||
-File: uucp.info, Node: Accepting Calls, Next: Mail and News, Prev: Calling Other Systems, Up: Using Taylor UUCP
|
||
+`l'
|
||
+ double
|
||
|
||
-Accepting Calls
|
||
-===============
|
||
+`o'
|
||
+ file descriptor (as returned by open, creat, etc.)
|
||
|
||
- To accept calls from another system, you must arrange matters such
|
||
-that when that system calls in, it automatically invokes `uucico' on
|
||
-your system.
|
||
-
|
||
- The most common arrangement is to create a special user name and
|
||
-password for incoming UUCP calls. This user name typically uses the
|
||
-same user ID as the regular `uucp' user (Unix permits several user
|
||
-names to share the same user ID). The shell for this user name should
|
||
-be set to `uucico'.
|
||
-
|
||
- Here is a sample `/etc/passwd' line to accept calls from a remote
|
||
-system named airs:
|
||
- Uairs:PASSWORD:4:8:airs UUCP:/usr/spool/uucp:/usr/lib/uucp/uucico
|
||
- The details may vary on your system. You must use reasonable user
|
||
-and group ID's. You must use the correct file name for `uucico'. The
|
||
-PASSWORD must appear in the UUCP configuration files on the remote
|
||
-system, but will otherwise never be seen or typed by a human.
|
||
-
|
||
- Note that `uucico' appears as the login shell, and that it will be
|
||
-run with no arguments. This means that it will start in slave mode and
|
||
-accept an incoming connection. *Note Invoking uucico::.
|
||
-
|
||
- On some systems, creating an empty file named `.hushlogin' in the
|
||
-home directory will skip the printing of various bits of information
|
||
-when the remote `uucico' logs in, speeding up the UUCP connection
|
||
-process.
|
||
-
|
||
- For the greatest security, each system which calls in should use a
|
||
-different user name, each with a different password, and the
|
||
-`called-login' command should be used in the `sys' file to ensure that
|
||
-the correct login name is used. *Note Accepting a Call::, and see
|
||
-*Note Security::.
|
||
-
|
||
- If you never need to dial out from your system, but only accept
|
||
-incoming calls, you can arrange for `uucico' to handle logins itself,
|
||
-completely controlling the port, by using the `--endless' option.
|
||
-*Note Invoking uucico::.
|
||
+`p'
|
||
+ generic pointer
|
||
|
||
-
|
||
-File: uucp.info, Node: Mail and News, Next: The Spool Directory Layout, Prev: Accepting Calls, Up: Using Taylor UUCP
|
||
+`q'
|
||
+ pointer to structure
|
||
|
||
-Using UUCP for Mail and News.
|
||
-=============================
|
||
+`s'
|
||
+ structure
|
||
|
||
- Taylor UUCP does not include a mail package. All Unix systems come
|
||
-with some sort of mail delivery agent, typically `sendmail' or `MMDF'.
|
||
-Source code is available for some alternative mail delivery agents,
|
||
-such as `IDA sendmail' and `smail'.
|
||
-
|
||
- Taylor UUCP also does not include a news package. The two major Unix
|
||
-news packages are `C-news' and `INN'. Both are available in source
|
||
-code form.
|
||
-
|
||
- Configuring and using mail delivery agents is a notoriously complex
|
||
-topic, and I will not be discussing it here. Configuring news systems
|
||
-is usually simpler, but I will not be discussing that either. I will
|
||
-merely describe the interactions between the mail and news systems and
|
||
-UUCP.
|
||
+`u'
|
||
+ void (function return values only)
|
||
|
||
- A mail or news system interacts with UUCP in two ways: sending and
|
||
-receiving.
|
||
+`z'
|
||
+ character string
|
||
|
||
-* Menu:
|
||
+ A generic pointer (`p') is sometimes a `void *', sometimes a
|
||
+function pointer in which case the prefix is pf, and sometimes a pointer
|
||
+to another type, in which case the next character is the type to which
|
||
+it points (pf is overloaded).
|
||
|
||
-* Sending mail or news:: Sending mail or news via UUCP
|
||
-* Receiving mail or news:: Receiving mail or news via UUCP
|
||
+ An array of strings (`char *[]') would be named `az' (array of
|
||
+string). If this array were passed to a function, the function
|
||
+parameter would be named `paz' (pointer to array of string).
|
||
|
||
-
|
||
-File: uucp.info, Node: Sending mail or news, Next: Receiving mail or news, Prev: Mail and News, Up: Mail and News
|
||
+ Note that the variable name prefixes do not necessarily indicate the
|
||
+type of the variable. For example, a variable prefixed with `i' may be
|
||
+int, long or short. Similarly, a variable prefixed with `b' may be a
|
||
+char or an int; for example, the return value of `getchar' would be
|
||
+caught in an int variable prefixed with `b'.
|
||
|
||
-Sending mail or news via UUCP
|
||
------------------------------
|
||
+ For a non-local variable (extern or file static), the first character
|
||
+after the type prefix is capitalized.
|
||
|
||
- When mail is to be sent from your machine to another machine via
|
||
-UUCP, the mail delivery agent will invoke `uux'. It will generally run
|
||
-a command such as `uux - SYSTEM!rmail ADDRESS', where SYSTEM is the
|
||
-remote system to which the mail is being sent. It may pass other
|
||
-options to `uux', such as `-r' or `-g' (*note Invoking uux::).
|
||
-
|
||
- The news system also invokes `uux' in order to transfer articles to
|
||
-another system. The only difference is that news will use `uux' to
|
||
-invoke `rnews' on the remote system, rather than `rmail'.
|
||
-
|
||
- You should arrange for your mail and news systems to invoke the
|
||
-Taylor UUCP version of `uux'. If you only have Taylor UUCP, or if you
|
||
-simply replace any existing version of `uux' with the Taylor UUCP
|
||
-version, this will probably happen automatically. However, if you have
|
||
-two UUCP packages installed on your system, you will probably have to
|
||
-modify the mail and news configuration files in some way.
|
||
-
|
||
- Actually, if both the system UUCP and Taylor UUCP are using the same
|
||
-spool directory format, the system `uux' will probably work fine with
|
||
-the Taylor `uucico' (the reverse is not the case: the Taylor `uux'
|
||
-requires the Taylor `uucico'). However, data transfer will be somewhat
|
||
-more efficient if the Taylor `uux' is used.
|
||
+ Most static variables and functions use another letter after the type
|
||
+prefix to indicate which module they come from. This is to help
|
||
+distinguish different names in the debugger. For example, all static
|
||
+functions in `protg.c', the `g' protocol source code, use a module
|
||
+prefix of `g'. This isn't too useful, as a number of modules use a
|
||
+module prefix of `s'.
|
||
|
||
|
||
-File: uucp.info, Node: Receiving mail or news, Prev: Sending mail or news, Up: Mail and News
|
||
+File: uucp.info, Node: Patches, Prev: Naming Conventions, Up: Hacking
|
||
|
||
-Receiving mail or news via UUCP
|
||
--------------------------------
|
||
+7.3 Patches
|
||
+===========
|
||
|
||
- To receive mail, all that is necessary is for UUCP to invoke
|
||
-`rmail'. Any mail delivery agent will provide an appropriate version
|
||
-of `rmail'; you must simply make sure that it is in the command path
|
||
-used by UUCP (it almost certainly already is). The default command
|
||
-path is set in `policy.h', and it may be overridden for a particular
|
||
-system by the `command-path' command (*note Miscellaneous (sys)::).
|
||
-
|
||
- Similarly, for news UUCP must be able to invoke `rnews'. Any news
|
||
-system will provide a version of `rnews', and you must ensure that is
|
||
-in a directory on the path that UUCP will search.
|
||
+I am always grateful for any patches sent in. Much of the flexibility
|
||
+and portability of the code is due to other people. Please do not
|
||
+hesitate to send me any changes you have found necessary or useful.
|
||
+
|
||
+ When sending a patch, please send the output of the Unix `diff'
|
||
+program invoked with the `-c' option (if you have the GNU version of
|
||
+`diff', use the `-p' option). Always invoke `diff' with the original
|
||
+file first and the modified file second.
|
||
+
|
||
+ If your `diff' does not support `-c' (or you don't have `diff'),
|
||
+send a complete copy of the modified file (if you have just changed a
|
||
+single function, you can just send the new version of the function).
|
||
+In particular, please do not send `diff' output without the `-c'
|
||
+option, as it is useless.
|
||
+
|
||
+ If you have made a number of changes, it is very convenient for me if
|
||
+you send each change as a separate mail message. Sometimes I will think
|
||
+that one change is useful but another one is not. If they are in
|
||
+different messages it is much easier for me to apply one but not the
|
||
+other.
|
||
+
|
||
+ I rarely apply the patches directly. Instead I work my way through
|
||
+the hunks and apply each one separately. This ensures that the naming
|
||
+remains consistent, and that I understand all the code.
|
||
+
|
||
+ If you can not follow all these rules, then don't. But if you do, it
|
||
+makes it more likely that I will incorporate your changes. I am not
|
||
+paid for my UUCP work, and my available time is unfortunately very
|
||
+restricted. The package is important to me, and I do what I can, but I
|
||
+can not do all that I would like, much less all that everybody else
|
||
+would like.
|
||
+
|
||
+ Finally, please do not be offended if I do not reply to messages for
|
||
+some time, even a few weeks. I am often behind on my mail, and if I
|
||
+think your message deserves a considered reply I will often put it aside
|
||
+until I have time to deal with it.
|
||
+
|
||
+
|
||
+File: uucp.info, Node: Acknowledgements, Next: Index (concepts), Prev: Hacking, Up: Top
|
||
+
|
||
+8 Acknowledgements
|
||
+******************
|
||
+
|
||
+This is a list of people who gave help or suggestions while I was
|
||
+working on the Taylor UUCP project. Appearance on this list does not
|
||
+constitute endorsement of the program, particularly since some of the
|
||
+comments were criticisms. I've probably left some people off, and I
|
||
+apologize for any oversight; it does not mean your contribution was
|
||
+unappreciated.
|
||
+
|
||
+ First of all, I would like to thank the people at Infinity
|
||
+Development Systems (formerly AIRS, which lives on in the domain name)
|
||
+for permitting me to use their computers and `uunet' access. I would
|
||
+also like to thank Richard Stallman <rms@gnu.org> for founding the Free
|
||
+Software Foundation, and John Gilmore <gnu@toad.com> for writing the
|
||
+initial version of gnuucp (based on uuslave) which was a direct
|
||
+inspiration for this somewhat larger project. Chip Salzenberg
|
||
+<chip@tct.com> has contributed many patches. Franc,ois Pinard
|
||
+<pinard@iro.umontreal.ca> tirelessly tested the code and suggested many
|
||
+improvements. He also put together the initial version of this manual.
|
||
+Doug Evans contributed the zmodem protocol. Marc Boucher
|
||
+<marc@CAM.ORG> contributed the code supporting the pipe port type.
|
||
+Jorge Cwik <jorge@laser.satlink.net> contributed the `y' protocol code.
|
||
+Finally, Verbus M. Counts <verbus@westmark.com> and Centel Federal
|
||
+Systems, Inc., deserve special thanks, since they actually paid me
|
||
+money to port this code to System III.
|
||
+
|
||
+ In alphabetical order:
|
||
+
|
||
+ Meno Abels <Meno.Abels@Technical.Adviser.com>
|
||
+ "Earle F. Ake - SAIC" <ake@Dayton.SAIC.COM>
|
||
+ <mra@searchtech.com> (Michael Almond)
|
||
+ <cambler@zeus.calpoly.edu> (Christopher J. Ambler)
|
||
+ Brian W. Antoine <briana@tau-ceti.isc-br.com>
|
||
+ <jantypas@soft21.s21.com> (John Antypas)
|
||
+ <james@bigtex.cactus.org> (James Van Artsdalen)
|
||
+ <jima@netcom.com> (Jim Avera)
|
||
+ <nba@sysware.DK> (Niels Baggesen)
|
||
+ <uunet!hotmomma!sdb> (Scott Ballantyne)
|
||
+ Zacharias Beckman <zac@dolphin.com>
|
||
+ <mike@mbsun.ann-arbor.mi.us> (Mike Bernson)
|
||
+ <bob@usixth.sublink.org> (Roberto Biancardi)
|
||
+ <statsci!scott@coco.ms.washington.edu> (Scott Blachowicz)
|
||
+ <bag%wood2.cs.kiev.ua@relay.ussr.eu.net> (Andrey G Blochintsev)
|
||
+ <spider@Orb.Nashua.NH.US> (Spider Boardman)
|
||
+ Gregory Bond <gnb@bby.com.au>
|
||
+ Marc Boucher <marc@CAM.ORG>
|
||
+ Ard van Breemen <ard@cstmel.hobby.nl>
|
||
+ <dean@coplex.com> (Dean Brooks)
|
||
+ <jbrow@radical.com> (Jim Brownfield)
|
||
+ <dave@dlb.com> (Dave Buck)
|
||
+ <gordon@sneaky.lonestar.org> (Gordon Burditt)
|
||
+ <dburr@sbphy.physics.ucsb.edu> (Donald Burr)
|
||
+ <mib@gnu.ai.mit.edu> (Michael I Bushnell)
|
||
+ Brian Campbell <brianc@quantum.on.ca>
|
||
+ Andrew A. Chernov <ache@astral.msk.su>
|
||
+ <jhc@iscp.bellcore.com> (Jonathan Clark)
|
||
+ <mafc!frank@bach.helios.de> (Frank Conrad)
|
||
+ Ed Carp <erc@apple.com>
|
||
+ <mpc@mbs.linet.org> (Mark Clements)
|
||
+ <verbus@westmark.westmark.com> (Verbus M. Counts)
|
||
+ <cbmvax!snark.thyrsus.com!cowan> (John Cowan)
|
||
+ Bob Cunningham <bob@soest.hawaii.edu>
|
||
+ <jorge@laser.satlink.net> (Jorge Cwik)
|
||
+ <kdburg@incoahe.hanse.de> (Klaus Dahlenburg)
|
||
+ Damon <d@exnet.co.uk>
|
||
+ <celit!billd@UCSD.EDU> (Bill Davidson)
|
||
+ <hubert@arakis.fdn.org> (Hubert Delahaye)
|
||
+ <markd@bushwire.apana.org.au> (Mark Delany)
|
||
+ Allen Delaney <allen@brc.ubc.ca>
|
||
+ Gerriet M. Denkmann <gerriet@hazel.north.de>
|
||
+ <denny@dakota.alisa.com> (Bob Denny)
|
||
+ Drew Derbyshire <ahd@kew.com>
|
||
+ <ssd@nevets.oau.org> (Steven S. Dick)
|
||
+ <gert@greenie.gold.sub.org> (Gert Doering)
|
||
+ <gemini@geminix.in-berlin.de> (Uwe Doering)
|
||
+ Hans-Dieter Doll <hd2@Insel.DE>
|
||
+ <deane@deane.teleride.on.ca> (Dean Edmonds)
|
||
+ Mark W. Eichin <eichin@cygnus.com>
|
||
+ <erik@pdnfido.fidonet.org>
|
||
+ Andrew Evans <andrew@airs.com>
|
||
+ <dje@cygnus.com> (Doug Evans)
|
||
+ Marc Evans <marc@synergytics.com>
|
||
+ Dan Everhart <dan@dyndata.com>
|
||
+ <kksys!kegworks!lfahnoe@cs.umn.edu> (Larry Fahnoe)
|
||
+ Matthew Farwell <dylan@ibmpcug.co.uk>
|
||
+ <fenner@jazz.psu.edu> (Bill Fenner)
|
||
+ <jaf@inference.com> (Jose A. Fernandez)
|
||
+ "David J. Fiander" <golem!david@news.lsuc.on.ca>
|
||
+ Thomas Fischer <batman@olorin.dark.sub.org>
|
||
+ Mister Flash <flash@sam.imash.ras.ru>
|
||
+ <louis@marco.de> (Ju"rgen Fluk)
|
||
+ <erik@eab.retix.com> (Erik Forsberg)
|
||
+ <andy@scp.caltech.edu> (Andy Fyfe)
|
||
+ Lele Gaifax <piggy@idea.sublink.org>
|
||
+ <Peter.Galbavy@micromuse.co.uk>
|
||
+ <hunter@phoenix.pub.uu.oz.au> (James Gardiner [hunter])
|
||
+ Terry Gardner <cphpcom!tjg01>
|
||
+ <dgilbert@gamiga.guelphnet.dweomer.org> (David Gilbert)
|
||
+ <ol@infopro.spb.su> (Oleg Girko)
|
||
+ <jimmy@tokyo07.info.com> (Jim Gottlieb)
|
||
+ Benoit Grange <ben@fizz.fdn.org>
|
||
+ <elg@elgamy.jpunix.com> (Eric Lee Green)
|
||
+ <ryan@cs.umb.edu> (Daniel R. Guilderson)
|
||
+ <greg@gagme.chi.il.us> (Gregory Gulik)
|
||
+ Richard H. Gumpertz <rhg@cps.com>
|
||
+ Scott Guthridge <scooter@cube.rain.com>
|
||
+ Michael Haberler <mah@parrot.prv.univie.ac.at>
|
||
+ Daniel Hagerty <hag@eddie.mit.edu>
|
||
+ <jh@moon.nbn.com> (John Harkin)
|
||
+ <guy@auspex.auspex.com> (Guy Harris)
|
||
+ <hsw1@papa.attmail.com> (Stephen Harris)
|
||
+ Tom Ivar Helbekkmo <tih@Norway.EU.net>
|
||
+ Petri Helenius <pete@fidata.fi>
|
||
+ <gabe@edi.com> (B. Gabriel Helou)
|
||
+ Bob Hemedinger <bob@dalek.mwc.com>
|
||
+ Andrew Herbert <andrew@werple.pub.uu.oz.au>
|
||
+ <kherron@ms.uky.edu> (Kenneth Herron)
|
||
+ Peter Honeyman <honey@citi.umich.edu>
|
||
+ <jhood@smoke.marlboro.vt.us> (John Hood)
|
||
+ Mark Horsburgh <markh@kcbbs.gen.nz>
|
||
+ John Hughes <john@Calva.COM>
|
||
+ Mike Ipatow <mip@fido.itc.e-burg.su>
|
||
+ Bill Irwin <bill@twg.bc.ca>
|
||
+ <pmcgw!personal-media.co.jp!ishikawa> (Chiaki Ishikawa)
|
||
+ <ai@easy.in-chemnitz.de> (Andreas Israel)
|
||
+ <iverson@lionheart.com> (Tim Iverson)
|
||
+ <bei@dogface.austin.tx.us> (Bob Izenberg)
|
||
+ <djamiga!djjames@fsd.com> (D.J.James)
|
||
+ Rob Janssen <cmgit!rob@relay.nluug.nl>
|
||
+ <harvee!esj> (Eric S Johansson)
|
||
+ Kevin Johnson <kjj@pondscum.phx.mcd.mot.com>
|
||
+ <rj@rainbow.in-berlin.de> (Robert Joop)
|
||
+ Alan Judge <aj@dec4ie.IEunet.ie>
|
||
+ <chris@cj_net.in-berlin.de> (Christof Junge)
|
||
+ Romain Kang <romain@pyramid.com>
|
||
+ <tron@Veritas.COM> (Ronald S. Karr)
|
||
+ Brendan Kehoe <brendan@cs.widener.edu>
|
||
+ <warlock@csuchico.edu> (John Kennedy)
|
||
+ <kersing@nlmug.nl.mugnet.org> (Jac Kersing)
|
||
+ <ok@daveg.PFM-Mainz.de> (Olaf Kirch)
|
||
+ Gabor Kiss <kissg@sztaki.hu>
|
||
+ <gero@gkminix.han.de> (Gero Kuhlmann)
|
||
+ <rob@pact.nl> (Rob Kurver)
|
||
+ "C.A. Lademann" <cal@zls.gtn.com>
|
||
+ <kent@sparky.IMD.Sterling.COM> (Kent Landfield)
|
||
+ Tin Le <tin@saigon.com>
|
||
+ <lebaron@inrs-telecom.uquebec.ca> (Gregory LeBaron)
|
||
+ <karl@sugar.NeoSoft.Com> (Karl Lehenbauer)
|
||
+ <alex@hal.rhein-main.de> (Alexander Lehmann)
|
||
+ <merlyn@digibd.com> (Merlyn LeRoy)
|
||
+ <clewis@ferret.ocunix.on.ca> (Chris Lewis)
|
||
+ <gdonl@ssi1.com> (Don Lewis)
|
||
+ <libove@libove.det.dec.com> (Jay Vassos-Libove)
|
||
+ <bruce%blilly@Broadcast.Sony.COM> (Bruce Lilly)
|
||
+ Godfrey van der Linden <Godfrey_van_der_Linden@NeXT.COM>
|
||
+ Ted Lindgreen <tlindgreen@encore.nl>
|
||
+ <andrew@cubetech.com> (Andrew Loewenstern)
|
||
+ "Arne Ludwig" <arne@rrzbu.hanse.de>
|
||
+ Matthew Lyle <matt@mips.mitek.com>
|
||
+ <djm@eng.umd.edu> (David J. MacKenzie)
|
||
+ John R MacMillan <chance!john@sq.sq.com>
|
||
+ <jum@helios.de> (Jens-Uwe Mager)
|
||
+ Giles D Malet <shrdlu!gdm@provar.kwnet.on.ca>
|
||
+ <mem@mv.MV.COM> (Mark E. Mallett)
|
||
+ <pepe@dit.upm.es> (Jose A. Manas)
|
||
+ <peter@xpoint.ruessel.sub.org> (Peter Mandrella)
|
||
+ <martelli@cadlab.sublink.org> (Alex Martelli)
|
||
+ W Christopher Martin <wcm@geek.ca.geac.com>
|
||
+ Yanek Martinson <yanek@mthvax.cs.miami.edu>
|
||
+ <thomasm@mechti.wupper.de> (Thomas Mechtersheimer)
|
||
+ <jm@aristote.univ-paris8.fr> (Jean Mehat)
|
||
+ <me@halfab.freiburg.sub.org> (Udo Meyer)
|
||
+ <les@chinet.chi.il.us> (Leslie Mikesell)
|
||
+ <bug@cyberdex.cuug.ab.ca> (Trever Miller)
|
||
+ <mmitchel@digi.lonestar.org> (Mitch Mitchell)
|
||
+ Emmanuel Mogenet <mgix@krainte.jpn.thomson-di.fr>
|
||
+ <rmohr@infoac.rmi.de> (Rupert Mohr)
|
||
+ Jason Molenda <molenda@sequent.com>
|
||
+ <ianm@icsbelf.co.uk> (Ian Moran)
|
||
+ <jmorriso@bogomips.ee.ubc.ca> (John Paul Morrison)
|
||
+ <brian@ilinx.wimsey.bc.ca> (Brian J. Murrell)
|
||
+ <service@infohh.rmi.de> (Dirk Musstopf)
|
||
+ <lyndon@cs.athabascau.ca> (Lyndon Nerenberg)
|
||
+ <rolf@saans.north.de> (Rolf Nerstheimer)
|
||
+ <tom@smart.bo.open.de> (Thomas Neumann)
|
||
+ <mnichols@pacesetter.com>
|
||
+ Richard E. Nickle <trystro!rick@Think.COM>
|
||
+ <stephan@sunlab.ka.sub.org> (Stephan Niemz)
|
||
+ <raymond@es.ele.tue.nl> (Raymond Nijssen)
|
||
+ <nolan@helios.unl.edu> (Michael Nolan)
|
||
+ david nugent <david@csource.oz.au>
|
||
+ Jim O'Connor <jim@bahamut.fsc.com>
|
||
+ <kevin%kosman.uucp@nrc.com> (Kevin O'Gorman)
|
||
+ Petri Ojala <ojala@funet.fi>
|
||
+ <oneill@cs.ulowell.edu> (Brian 'Doc' O'Neill)
|
||
+ <Stephen.Page@prg.oxford.ac.uk>
|
||
+ Peter Palfrader <peter@palfrader.org>
|
||
+ <abekas!dragoman!mikep@decwrl.dec.com> (Mike Park)
|
||
+ Tim Peiffer <peiffer@cs.umn.edu>
|
||
+ <don@blkhole.resun.com> (Don Phillips)
|
||
+ "Mark Pizzolato 415-369-9366" <mark@infocomm.com>
|
||
+ John Plate <plate@infotek.dk>
|
||
+ <dplatt@ntg.com> (Dave Platt)
|
||
+ <eldorado@tharr.UUCP> (Mark Powell)
|
||
+ Mark Powell <mark@inet-uk.co.uk>
|
||
+ <pozar@kumr.lns.com> (Tim Pozar)
|
||
+ <joey@tessi.UUCP> (Joey Pruett)
|
||
+ Paul Pryor <ptp@fallschurch-acirs2.army.mil>
|
||
+ <putsch@uicc.com> (Jeff Putsch)
|
||
+ <ar@nvmr.robin.de> (Andreas Raab)
|
||
+ Vadim Radionov <rvp@zfs.lg.ua>
|
||
+ Jarmo Raiha <jarmo@ksvltd.FI>
|
||
+ James Revell <revell@uunet.uu.net>
|
||
+ Scott Reynolds <scott@clmqt.marquette.Mi.US>
|
||
+ <mcr@Sandelman.OCUnix.On.Ca> (Michael Richardson)
|
||
+ Kenji Rikitake <kenji@rcac.astem.or.jp>
|
||
+ <arnold@cc.gatech.edu> (Arnold Robbins)
|
||
+ <steve@Nyongwa.cam.org> (Steve M. Robbins)
|
||
+ Ollivier Robert <Ollivier.Robert@keltia.frmug.fr.net>
|
||
+ Serge Robyns <sr@denkart.be>
|
||
+ Lawrence E. Rosenman <ler@lerami.lerctr.org>
|
||
+ Jeff Ross <jeff@wisdom.bubble.org>
|
||
+ Aleksey P. Rudnev <alex@kiae.su>
|
||
+ "Heiko W.Rupp" <hwr@pilhuhn.ka.sub.org>
|
||
+ <wolfgang@wsrcc.com> (Wolfgang S. Rupprecht)
|
||
+ <tbr@tfic.bc.ca> (Tom Rushworth)
|
||
+ Peter Rye <prye@picu-sgh.demon.co.uk>
|
||
+ <jsacco@ssl.com> (Joseph E. Sacco)
|
||
+ <rsalz@bbn.com> (Rich Salz)
|
||
+ Curt Sampson <curt@portal.ca>
|
||
+ <sojurn!mike@hobbes.cert.sei.cmu.edu> (Mike Sangrey)
|
||
+ Nickolay Saukh <nms@ussr.EU.net>
|
||
+ Ignatios Souvatzis <is@jocelyn.rhein.de>
|
||
+ <heiko@lotte.sax.de> (Heiko Schlittermann)
|
||
+ Eric Schnoebelen <eric@cirr.com>
|
||
+ <russell@alpha3.ersys.edmonton.ab.ca> (Russell Schulz)
|
||
+ <scott@geom.umn.edu>
|
||
+ Igor V. Semenyuk <iga@argrd0.argonaut.su>
|
||
+ Christopher Sawtell <chris@gerty.equinox.gen.nz>
|
||
+ <schuler@bds.sub.org> (Bernd Schuler)
|
||
+ <uunet!gold.sub.org!root> (Christian Seyb)
|
||
+ Marcus Shang <marcus.shang@canada.cdev.com>
|
||
+ <s4mjs!mjs@nirvo.nirvonics.com> (M. J. Shannon Jr.)
|
||
+ <shields@tembel.org> (Michael Shields)
|
||
+ <peter@ficc.ferranti.com> (Peter da Silva)
|
||
+ <vince@victrola.sea.wa.us> (Vince Skahan)
|
||
+ <frumious!pat> (Patrick Smith)
|
||
+ <roscom!monty@bu.edu> (Monty Solomon)
|
||
+ <sommerfeld@orchard.medford.ma.us> (Bill Sommerfeld)
|
||
+ Julian Stacey <stacey@guug.de>
|
||
+ <evesg@etlrips.etl.go.jp> (Gjoen Stein)
|
||
+ Harlan Stenn <harlan@mumps.pfcs.com>
|
||
+ Ralf Stephan <ralf@ark.abg.sub.org>
|
||
+ <johannes@titan.westfalen.de> (Johannes Stille)
|
||
+ <chs@antic.apu.fi> (Hannu Strang)
|
||
+ <ralf@reswi.ruhr.de> (Ralf E. Stranzenbach)
|
||
+ <sullivan@Mathcom.com> (S. Sullivan)
|
||
+ Shigeya Suzuki <shigeya@dink.foretune.co.jp>
|
||
+ <kls@ditka.Chicago.COM> (Karl Swartz)
|
||
+ <swiers@plains.NoDak.edu>
|
||
+ Oleg Tabarovsky <olg@olghome.pccentre.msk.su>
|
||
+ <ikeda@honey.misystems.co.jp> (Takatoshi Ikeda)
|
||
+ John Theus <john@theus.rain.com>
|
||
+ <rd@aii.com> (Bob Thrush)
|
||
+ ppKarsten Thygesen <karthy@dannug.dk>
|
||
+ Graham Toal <gtoal@pizzabox.demon.co.uk>
|
||
+ <rmtodd@servalan.servalan.com> (Richard Todd)
|
||
+ Michael Ju. Tokarev <mjt@tls.msk.ru>
|
||
+ Martin Tomes <mt00@controls.eurotherm.co.uk>
|
||
+ Len Tower <tower-prep@ai.mit.edu>
|
||
+ Mark Towfiq <justice!towfiq@Eingedi.Newton.MA.US>
|
||
+ <mju@mudos.ann-arbor.mi.us> (Marc Unangst)
|
||
+ Matthias Urlichs <urlichs@smurf.noris.de>
|
||
+ Tomi Vainio <tomppa@fidata.fi>
|
||
+ <a3@a3.xs4all.nl> (Adri Verhoef)
|
||
+ Andrew Vignaux <ajv@ferrari.datamark.co.nz>
|
||
+ <vogel@omega.ssw.de> (Andreas Vogel)
|
||
+ Dima Volodin <dvv@hq.demos.su>
|
||
+ <jos@bull.nl> (Jos Vos)
|
||
+ <jv@nl.net> (Johan Vromans)
|
||
+ David Vrona <dave@sashimi.wwa.com>
|
||
+ <Marcel.Waldvogel@nice.usergroup.ethz.ch> (Marcel Waldvogel)
|
||
+ <steve@nshore.org> (Stephen J. Walick)
|
||
+ <syd@dsinc.dsi.com> (Syd Weinstein)
|
||
+ <gerben@rna.indiv.nluug.nl> (Gerben Wierda)
|
||
+ <jbw@cs.bu.edu> (Joe Wells)
|
||
+ <frnkmth!twwells.com!bill> (T. William Wells)
|
||
+ Peter Wemm <Peter_Wemm@zeus.dialix.oz.au>
|
||
+ <mauxci!eci386!woods@apple.com> (Greg A. Woods)
|
||
+ <John.Woods@proteon.com> (John Woods)
|
||
+ Michael Yu.Yaroslavtsev <mike@yaranga.ipmce.su>
|
||
+ Alexei K. Yushin <root@july.elis.crimea.ua>
|
||
+ <jon@console.ais.org> (Jon Zeeff)
|
||
+ Matthias Zepf <agnus@amylnd.stgt.sub.org>
|
||
+ Eric Ziegast <uunet!ziegast>
|
||
|
||
|
||
-File: uucp.info, Node: The Spool Directory Layout, Next: Spool Directory Cleaning, Prev: Mail and News, Up: Using Taylor UUCP
|
||
-
|
||
-The Spool Directory Layout
|
||
-==========================
|
||
+File: uucp.info, Node: Index (concepts), Next: Index (configuration file), Prev: Acknowledgements, Up: Top
|
||
|
||
- In general, the layout of the spool directory may be safely ignored.
|
||
-However, it is documented here for the curious. This description only
|
||
-covers the `SPOOLDIR_TAYLOR' layout. The ways in which the other spool
|
||
-directory layouts differ are described in the source file
|
||
-`unix/spool.c'.
|
||
-
|
||
- Directories and files are only created when they are needed, so a
|
||
-typical system will not have all of the entries described here.
|
||
+Concept Index
|
||
+*************
|
||
|
||
+ |