lrzsz: free x/y/zmodem implementation
lrzsz is a unix communication package providing the 
XMODEM, YMODEM
ZMODEM file transfer protocols.
lrzsz is a heavily rehacked version of the last public domain 
release of 
Omen Technologies rzsz
package, and is now 
free software
and released under the 
  GNU General Public Licence.
Features of lrzsz
  -  very portable, automagically configured with GNU autoconf.
  
-  crash recovery.
  
-  up to 8KB block sizes (ZMODEM8K).
  
-  internationalized (using GNU gettext). German translation
       of the programs output exists.
  
-  far more secure than the original sources.
  
-  high performance. say `make vcheck-z' and have a look at 
       the BPS rate - i recently saw 1.4 MB per second
       transfering a large file through pipes (on a I586/133 system. 
       Beat that!).
  
-  good blocksize calculation (tries to compute an optimal 
       blocksize based on the number of errors occured).
  
-  It's 
       free software.
Downloading lrzsz
The lastest release is 
  lrzsz-0.12.20.tar.gz  ((about 270KB)).
Recent changes
  -  Version 0.12.20 - December 1998, Uwe Ohse
 
    -  works on BeOS and stone-aged SCO (sco-3.2v4.2)
    
-  pubdir-"feature" works again.
    
-  "make rpm" creates a rpm file.
    
-  "optimal blklen calculation" was too aggressive, it
      now does nothing if the user demands fixed blklens.
    
-  various smaller and medium bug fixes.
    
-  a more or less important security bug is fixed (stupid 
      use of /tmp in a piece of code which is rarely used).
    
-  lrz uses umask to make files unreadable which receiving them.
    
-  "sh systype | mail uwe-generic-counter@ohse.de"
      sends a success report with a description of the
      system type.
    
-  --enable-syslog is now default
  
 
-  Version 0.12.19 - January 1998, Uwe Ohse
 (sorry, i forgot to announce that version here. -- uwe, 9.5.1998) 
      -  0.12.18 was broken, lsz crashed if receiver found an CRC error.
      
-  lrz options "--rename" and "--escape" didn't work.
      
-  lrz didn't implement senders "overwrite-or-skip" option.
      
-  added dejagnu testsuite. Maybe you need a dejagnu snapshot to use it.
    
 
-  Version 0.12.18 - November 1997
     keep off - this version has a major bug 
  
    -  syslog output now includes user name.
    
-  new script lrzszbug, to be used for bugreports (untested)
    
-  lots of compiler warnings (egcs -Wparanoia [many -W]) removed.
    
-  new options --tcp-server and --tcp-client ADDRESS:PORT for both programs.
         (this is not too much code bloat, and somewhat useful for me - but i
         suspect nobody else will need it. Oh well)
    
-  updated to gettext-0.10.32
    
-  updated to automake-1.2
  
 
-  Version 0.12.17 - August 1997
  
    -  internal cleanup.
    
-  portability enhancements by (Philippe De Muyter <phdm@info.ucl.ac.be>)
    
-  lsz has a new option "--tcp" (no shortopt implemented). lsz transmits
         one file over normal stdin/stdout (a control file), then opens a
         tcp connection to transmit all other files.
 That might be useful if your telnetd is really stupid.
 This version was _not_ put on the ftp/http servers.
-  Version 0.12.16 - March 1997
  
   -  major performance improvement (less CPU time needed - don't expect
  faster transfers over slow lines). make vcheck now show about 50%
  more throughput.
   
-  updated to gettext-0.12.27 and automake-1.1l
        (automake-1.1l bug: AC_SUBST in AM_PATH_PROG_WITH_TEST leads
        to a "$1=@$1@" line in Makefile.in. I hacked around it in
        /usr/share/aclocal/gettext.m4).
  
 
-  Version 0.12.15 - February 1997
  
    -  lrzsz now compiles even with pre-ANSI-compilers (tested with
         the HPUX 9.00 bundled compiler - what a bad program. Shame on HP).
    
-  lrz supports a new option --o-sync, which forces it to open the
         output file in synchronous write mode. Don't use it unless you
         are using interrupts if update writes to the disk.
  
 
-  Version 0.12.14 - January 1997
  
    -  lrzsz now compiles cleaner on SCO, HPUX.
    
-  improved error reporting (i think there are still possibilities 
         for further improvements, if anybody case spare time :-)).
  
 
-  Version 0.12.13 - January 1997
  
    -  no user visible changes. just a maintainance release.
    
- updated to gettext-0.12.26.
  
 
-  Version 0.12.12 - January 1997
  
    -  lrx and lrb (aka lsz --x/ymodem) now default to 128 byte
      block length (to fix interoperatability problems with
	some Xmodems [USR courier flash upload]).
    
-  lrz didn't recognize every short option.
    
-  minor performance tweaks.
    
-  replace mktime() if needed.
    
-  updated to autoconf 2.12.
  
 
-  Version 0.12.11 - October 1996
  
    -  lsz/lrz recognize "rshell" as another name for the restricted
         shell.
    
-  lrz/lsz recognize a new option --stop-at HH:MM (stop 
	 transmission at HH:MM), and --stop-at +N (stop in N seconds).
    
-  lrz/lsz recognize a new option --delay-startup N: 
	 wait N seconds before doing anything.
    
-  doesn't hang anymore on BSD machines after getting a timeout
	 (BSD restarts system calls after an interrupt - this made
	 timeout code useless).
    
-  SIGINT handling turned on unter linux too (i still don't 
	 know why it was turned off under linux (and only there)).
    
-  sz - now prints better transfer statistics after if
	 reading from a pipe.
  
 
-  Version 0.12.10 - September 1996
  
    -  lsz resends init string if it doesn't receive rz's init.
    
-  improved "make check". By Philippe De Muyter <phdm@info.ulb.ac.be>
    
-  "sz -" should work again. This will not work if sz cannot read from 
         stdout.
    
-  portability enhancements by Philippe De Muyter <phdm@info.ulb.ac.be>
  
 
-  Version 0.12.9 - September 1996
  
    -  New options --min-bps N and --min-bps-time M: If BPS rate falls under N
  for at least M seconds (default: 120) transmission will be stopped.
    
-  added some missing error messages.
    
-  updated manual pages.
  
 
-  Version 0.12.8 - August 1996
  
    -  sz and rz now know about a new option:
  -E, --rename: change name if target exists.
    
-  new option -T, --turbo for sz: sz doesn't escape 4 special characters
  if this option is given (this should not make problems with any 
  rz, but could be problematic on certain links where this characters
  have to be escaped).
    
-  debugged blocksize calculation.
    
-  -+, --append option fixed.
  
 
Future developement
  -  enhance portability.
  
-  use VMIN code some day (it's not hard to implement. it's hard
       to automagically check if VMIN works. It doesn't on older BSD 
       versions).
  
-  make argv[0]-recognition of X/Y/Z-mode work with 
       program_name_transform.
  
-  write a decent documentation.
Comments
  - i will not say anything about the original unix zmodem sources.
      Just look at them and you'll know (even lrzsz is still worse
      than i like it to be). 
  
- the zmodem protocol is a pretty good example of a proprietary
      protocol:
    
    -  There are some proprietary, undocumented protocol 
	 extensions made by the original author. Furthermore they
	 are implemented in such a way that nobody else can 
	 extend the protocol in a safe way. 
    
-  There is no way to get extensions included into the
	 standard.
    
-  The protocol is not too good designed. It's impossible to extend
	 it in a safe way to transfer files in both directions.
    
-  Security was not an issue to the author. The ability to
	 let the receiver execute any command the sender tells
	 him is nothing more then a really large security hole
	 (as large as running older sendmail versions). Hackers 
	 dreams came true.
    
 
-  On the other hand it has some really good points - especially 
       it is high efficient, and is, if implemented correctly, usable
       over a number of transmission channels nobody thought of at
       the time the protocol was designed.
Send comments to uwe@ohse.de.