NAME
rx, rb, rz - XMODEM, YMODEM, ZMODEM (Batch) file receive
SYNOPSIS
rz [- +8abeOpqRtTuUvy]
rb [- +abqRtuUvy]
rx [- abceqRtuUv] file
[-][v]rzCOMMAND
DESCRIPTION
This program uses error correcting protocols to receive files over a
dial-in serial port from a variety of programs running under PC-DOS,
CP/M, Unix, and other operating systems. It is invoked from a shell
prompt manually, or automatically as a result of an "sz file ..."
command given to the calling program.
While rz is smart enough to be called from cu(1), very few versions of
cu(1) are smart enough to allow rz to work properly. Unix flavors of
Professional-YAM are available for such dial-out application.
Rz (Receive ZMODEM) receives files with the ZMODEM batch protocol.
Pathnames are supplied by the sending program, and directories are made
if necessary (and possible). Normally, the "rz" command is
automatically issued by the calling ZMODEM program, but some defective
ZMODEM implementations may require starting rz the old fashioned way.
Rb receives file(s) with YMODEM, accepting either standard 128 byte
sectors or 1024 byte sectors (YAM sb -k option). The user should
determine when the 1024 byte block length actually improves throughput
without causing lost data or even system crashes.
If True YMODEM (Omen Technology trademark) file information (file
length, etc.) is received, the file length controls the number of
bytes written to the output dataset, and the modify time and file mode
(iff non zero) are set accordingly.
If no True YMODEM file information is received, slashes in the pathname
are changed to underscore, and any trailing period in the pathname is
eliminated. This conversion is useful for files received from CP/M
systems. With YMODEM, each file name is converted to lower case unless
it contains one or more lower case letters.
Rx receives a single file with XMODEM or XMODEM-1k protocol. The user
should determine when the 1024 byte block length actually improves
throughput without causing problems. The user must supply the file
name to both sending and receiving programs. Up to 1023 garbage
characters may be added to the received file.
Rz may be invoked as rzCOMMAND (with an optional leading - as generated
by login(1)). For each received file, rz will pipe the file to
‘‘COMMAND filename’’ where filename is the name of the transmitted file
with the file contents as standard input.
Each file transfer is acknowledged when COMMAND exits with 0 status. A
non zero exit status terminates transfers.
A typical use for this form is rzrmail which calls rmail(1) to post
mail to the user specified by the transmitted file name. For example,
sending the file "caf" from a PC-DOS system to rzrmail on a Unix system
would result in the contents of the DOS file "caf" being mailed to user
"caf".
On some Unix systems, the login directory must contain a link to
COMMAND as login sets SHELL=rsh which disallows absolute pathnames. If
invoked with a leading ‘‘v’’, rz will be verbose (see v option). The
following entry works for Unix SYS III/V:
rzrmail::5:1::/bin:/usr/local/rzrmail
If the SHELL environment variable includes rsh , rbash or rksh
(restricted shell), rz will not accept absolute pathnames or references
to a parent directory, will not modify an existing file, and removes
any files received in error.
If rz is invoked with stdout and stderr to different datasets, Verbose
is set to 2, causing frame by frame progress reports to stderr. This
may be disabled with the q option.
OPTIONS
The meanings of the available options are:
-+, --append
append received data to an existing file (ZMODEM, ASCII only).
-a, --ascii
Convert files to Unix conventions by stripping carriage returns
and all characters beginning with the first Control Z (CP/M end
of file).
-b, --binary
Binary (tell it like it is) file transfer override.
-B NUMBER, --bufsize NUMBER
Buffer NUMBER bytes before writing to disk. Default ist 32768,
which should be enough for most situations. If you have a slow
machine or a bad disk interface or suffer from other hardware
problems you might want to increase the buffersize. -1 or auto
use a buffer large enough to buffer the whole file. Be careful
with this options - things normally get worse, not better, if
the machine starts to swap.
-c, --with-crc
XMODEM only. Use 16 bit CRC (normally a one byte checksum is
used).
-C, --allow-remote-commands
allow remote command execution ( insecure ). This allows the
sender to execute an arbitrary command through system () or
execl (). Default is to disable this feature (?). This option is
ignored if running in restricted mode.
-D, --null
Output file data to /dev/null; for testing. (Unix only)
--delay-startup N
Wait N seconds before doing anything.
-e, --escape
Force sender to escape all control characters; normally XON,
XOFF, DLE, CR-@-CR, and Ctrl-X are escaped.
-E, --rename
Rename incoming file if target filename already exists. The new
file name will have a dot and a number (0..999) appended.
-h, --help
give help screen.
-m N, --min-bps N
Stop transmission if BPS-Rate (Bytes Per Second) falls below N
for a certain time (see --min-bps-time option).
-M N, --min-bps-time
Used together with --min-bps. Default is 120 (seconds).
-O, --disable-timeouts
Disable read timeout handling code. This makes lrz hang if the
sender does not send any more, but increases performance (a bit)
and decreases system load (through reducing the number of system
calls by about 50 percent).
Use this option with care.
--o-sync
Open output files in synchronous write mode. This may be useful
if you experience errors due to lost interrupts if update (or
bdflush or whoever this daemon is called on your system) writes
the buffers to the disk.
This option is ignored and a warning is printed if your systems
doesn’t support O_SYNC.
-p, --protect
(ZMODEM) Protect: skip file if destination file exists.
-q, --quiet
Quiet suppresses verbosity.
-r, --resume
Crash recovery mode. lrz tries to resume interrupted file
transfers.
-R, --restricted
Enter more restricted mode. lrz will not create directories or
files with a leading dot if this option is given twice.
See SECURITY for mode information about restricted mode.
-s HH:MM, --stop-at HH:MM
Stop transmission at HH hours, MM minutes. Another variant,
using +N instead of HH:MM, stops transmission in N seconds.
-S, --timesync
Request timesync packet from the sender. The sender sends its
system time, causing lrz to complain about more then 60 seconds
difference.
Lrz tries to set the local system time to the remote time if
this option is given twice (this fails if lrz is not run by
root).
This option makes lrz incompatible with certain other ZModems.
Don’t use it unless you know what you are doing.
--syslog[=off]
turn syslogging on or off. the default is set at configure time.
This option is ignored if no syslog support is compiled in.
-t TIM, --timeout TIM
Change timeout to TIM tenths of seconds. This is ignored if
timeout handling is turned of through the O option.
--tcp-client ADDRESS:PORT
Act as a tcp/ip client: Connect to the given port.
See --tcp-server for more information.
--tcp-server
Act as a server: Open a socket, print out what to do, wait for
connection.
You will normally not want to use this option as lrzsz is the
only zmodem which understands what to do (private extension).
You might want to use this if you have to use zmodem (for which
reason whatever), and cannot use the --tcp option of lsz
(perhaps because your telnet doesn’t allow to spawn a local
program with stdin/stdout connected to the remote side).
If you use this option you have to start lsz with the --tcp-
client ADDRESS:PORT option. lrz will print the address and port
on startup.
Use of this option imposes a security risk, somebody else could
connect to the port in between. See SECURITY for details.
-U, --unrestrict
turn off restricted mode (this is not possible if running under
a restricted shell).
--version
prints out version number.
-v, --verbose
Verbose causes a list of file names to be appended to stderr.
More v’s generate more output.
-wN, --windowsize N
Set window size to N.
-X, --xmodem
use XMODEM protocol.
-y, --overwrite
Yes, clobber any existing files with the same name.
--ymodem
use YMODEM protocol.
-Z, --zmodem
use ZMODEM protocol.
SECURITY
Contrary to the original ZMODEM lrz defaults to restricted mode. In
restricted mode lrz will not accept absolute pathnames or references to
a parent directory, will not modify an existing file, and removes any
files received in error. Remote command execution is disabled.
To use a more restricted mode set the environment variable
ZMODEM_RESTRICTED or give the R option. This disables creation of
subdirectories and invisible files.
Restricted mode may be turned off with the U option, unless lrz runs
under a restricted shell.
Use of the
--tcp-client or --tcp-server options imposes a security risk, as
somebody else could connect to the port before you do it, and
grab your data. If there’s strong demand for a more secure mode
i might introduce some sort of password challenge.
ENVIRONMENT
lrz uses the following environment variables:
SHELL lrz recognizes a restricted shell if this variable includes rsh
or rksh
ZMODEM_RESTRICTED
lrz enters the more restricted mode if the variable is set.
EXAMPLES
(Pro-YAM command)
<ALT-2>
Pro-YAM Command: sz *.h *.c
(This automatically invokes rz on the connected system.)
SEE ALSO
ZMODEM.DOC, YMODEM.DOC, Professional-YAM, crc(omen), sz(omen),
usq(omen), undos(omen)
Compile time options required for various operating systems are
described in the source file.
NOTES
Sending serial data to timesharing minicomputers at sustained high
speeds has been known to cause lockups, system halts, kernel panics,
and occasional antisocial behaviour. When experimenting with high
speed input to a system, consider rebooting the system if the file
transfers are not successful, especially if the personality of the
system appears altered.
The Unix "ulimit" parameter must be set high enough to permit large
file transfers.
The TTY input buffering on some systems may not allow long blocks or
streaming input at high speed. You should suspect this problem when
you can’t send data to the Unix system at high speeds using ZMODEM,
YMODEM-1k or XMODEM-1k, when YMODEM with 128 byte blocks works
properly. If the system’s tty line handling is really broken, the
serial port or the entire system may not survive the onslaught of long
bursts of high speed data.
The DSZ or Pro-YAM zmodem l numeric parameter may be set to a value
between 64 and 1024 to limit the burst length ("zmodem pl128").
32 bit CRC code courtesy Gary S. Brown. Directory creation code from
John Gilmore’s PD TAR program.
BUGS
Calling rz from most versions of cu(1) doesn’t work because cu’s
receive process fights rz for characters from the modem.
Programs that do not properly implement the specified file transfer
protocol may cause sz to "hang" the port for a minute or two. Every
reported instance of this problem has been corrected by using ZCOMM,
Pro-YAM, or other program with a correct implementation of the
specified protocol.
Many programs claiming to support YMODEM only support XMODEM with 1k
blocks, and they often don’t get that quite right.
Pathnames are restricted to 127 characters. In XMODEM single file
mode, the pathname given on the command line is still processed as
described above. The ASCII option´s CR/LF to NL translation merely
deletes CR´s; undos(omen) performs a more intelligent translation.
VMS VERSION
The VMS version does not set the file time.
VMS C Standard I/O and RMS may interact to modify file contents
unexpectedly.
The VMS version does not support invocation as rzCOMMAND . The current
VMS version does not support XMODEM, XMODEM-1k, or YMODEM.
According to the VMS documentation, the buffered input routine used on
the VMS version of rz introduces a delay of up to one second for each
protocol transaction. This delay may be significant for very short
files. Removing the "#define BUFREAD" line from rz.c will eliminate
this delay at the expense of increased CPU utilization.
The VMS version causes DCL to generate a random off the wall error
message under some error conditions; this is a result of the
incompatibility of the VMS "exit" function with the Unix/MSDOS
standard.
ZMODEM CAPABILITIES
Rz supports incoming ZMODEM binary (-b), ASCII (-a), protect (-p),
clobber (-y), and append (-+) requests. The default is protect (-p)
and binary (-b).
The Unix versions support ZMODEM command execution.
FILES
rz.c, crctab.c, rbsb.c, zm.c, zmodem.h Unix source files.
rz.c, crctab.c, vrzsz.c, zm.c, zmodem.h, vmodem.h, vvmodem.c, VMS
source files.
OMEN